組み合わせ生成のgemを作った

先日のミートアップで発表した内容をあらためてまとめます。

hanahirodev.hatenablog.com

続きを読む

スーパーエンジニア Richardさん来日 meetup参加記録

@imunew さんのお誘いで、スーパーエンジニア Richardさん来日 meetupに参加してきた。imunewさんの参加記録は↓。

imunew.hatenablog.com

11時から8時間近くの長丁場でしたが、全く時間を感じないほどでした。 主催してくださった@koriym さん、@ksetaさん、会場を提供してくださったサイボウズスタートアップスさん、 そして何より、@mackstarさんありがとうございました!!

以下個人的なハイライト


@mackstarによるおはなし

技術以外のこと

技術的な話

  • HEADLESS CMS
  • PHPで使われてるフレームワークSymfony/Laravelがほとんど
  • MessageDriven
    • ドメインに適合する方式だった。
      • RESTで作ってるけど、様々なサービスから同じAPIがコールされるので効率が悪い
      • キャッシュも統一されていない
    • 並列実行はelixer/Erlangの言語に組み込まれているから便利
    • オフラインモードのためにキャッシュストア、セッションストア、オフラインストア
    • GraphQL
      • 古いモバイル端末にも対応
      • スキーマ設計が難しい
      • messge : 何があったか/何をしたいか
      • CQRS
      • EventSourcing
      • イベントを全て記録しておけば、ある日のある時点の再現が可能
      • circui-breaker pattern
      • サービスごとに時期によってautoscalingするby queue inspection
      • 人が少ない時に情報を取っておいて、ローカルストアに入れておく

郡山さんのおはなし

ハイパーメディアアフォーダンス

Hypermedia Affordance // Speaker Deck

github.com

  • 使う側と物の間に意味を与える
  • JSONにリンクでアフォーダンスをつけたのがハイパーメディア(HAL)
  • htmlはformタグでわかる
  • Location header
    • asyncでも使える
  • べき等性:支払いにはべき等性があるのでput
    • 2回送るなではなく、2回受け付けるな
  • 自己記述的
  • トップ(ルート)にアクセスすれば、どこのリソースにアクセスできるかわかる。全てのリソースはトップからアクセスできる
    • discoverable
    • ドキュメントを用意しなくても出来上がっている
  • 機能を実現するコード・構造を実現するコード
  • REST!= CRUD over HTTP
    • REST != Return JSON with pretty URI
    • リレーションにセマンティックを持たせることが重要
  • information + (affordance)
    • /menu /order
  • 自分のアフォーダンスをネットワーク網に取り付けること
  • 長期的な関心は慎重に
    • どうでもよいことは流行に従い、 重大なことは道徳に従い、 芸術のことは自分に従う。(小津安二郎)

リチャードさんへの質問

  • pair programmingが普通
    • ペアプロしてない=idea/codeを分かち合っていないサイン。
    • pair programmingをしていないことが問題なのではなく、コミュニケーションをとっていないのが問題
    • あるいは難しいことをしていない
    • コミュニケーションを取らないことが、自分の成長できるチャンスを捨てている
  • 他の人が考えていないことまで考えられる人が評価される
  • 特にマイクロサービスを運用していく上では、ヘルスチェックを細かく監視する必要。
    • ビジネスがうまく行っていることを他の人に見せる必要。
  • テストピラミッド
  • 2-3時間あれば理解できるコード
  • 満足しないことがスキルアップに大切。
  • death by strangulation
  • レガシーとの戦い
    • wrapperで小さく始める
    • 順次使い始める
  • creativity/idea oriented が日本では少ないと感じる
    • workerかlaborかみたいな話。

勉強会の合間に、gemを公開できたので、LTもしてきました。 今日発表した内容はまとめ直してアップしますが、元ネタだけおいておきます。

github.com

speakerdeck.com

久しぶり(転職以来初)の勉強会参加で、良いインプットになった。 今年もあと4ヶ月ほどしかない。もっと成長するために動かなければ。

Quit Smoking with HabitStrap

hanahirodev.hatenablog.com

先日↑で紹介した HabitStrapで禁煙してました。

無事66日間達成。

f:id:hiroyuki-hanai:20170622015045j:plain


これから使う人のために

一度締めると緩められないので、最初につけるときに注意してください。 これからの時期、日焼けが残るので注意してください。

こんなので禁煙できるのか、半信半疑でしたが、本当に意外なほど簡単に実践できておどろいている。


勢いで6本セットを買ったのであと5本習慣の改善ができる。

過剰なルーティングのカスタマイズ

元記事はこちら

翻訳

Bad Smell

map.resources :posts, :member => { :comments => :get,
                                   :create_comment => :post,
                                   :update_comment => :put,
                                   :delete_comment => :delete }

Roy Fielding’*1の論文*2によると、リソースと、その状態を表すには、RESTfulなルーティングを使うべきです。過剰なカスタマイズをせず、デフォルトの9アクション(index, show, new, edit, create, update and destroy)を使いましょう。過剰なカスタマイズを避けるには、別リソースを使うようにしましょう。

Refactor

map.resources :posts do |post|
  post.resources :comments
end

postリソースに対して、create_comment, update_comment and delete_commentというカスタムルーティングを使わないようにするために、commentsリソースのnewアクションを使うようにします。できる限りデフォルトの7アクションを使うようにしましょう。

感想

RESTfulを意識しましょう。デフォルトのアクション以外を作りたくなったらコントローラーを分割しましょう。ということですね。

「パフォーマンス・マネジメント-問題解決のための行動分析学-」を読んだ

こちらのブログに触発されて、

blog.shibayu36.org

パフォーマンス・マネジメント-問題解決のための行動分析学-を読んだ読書メモ。

続きを読む