何でも屋エンジニアのブログ

ソフトウェア関連技術、コミュニティ、日々の雑貨

Step-to-Rails-Expert.rb第13回を開催しました

11/27(月)にStep-to-Rails-Expert.rb第13回を実施しました。

step-to-rails-expert-rb.connpass.com

流れ

当日の流れは

  • 自己紹介
  • 会の概要説明
  • レビュー会
  • 懇親会

という形で進めました。

会の様子

今回は、主催者の他に参加者二人分のレビューを行いました(チャレンジして頂けてありがたい)。 結構いろいろな指摘・質問・議論が出てきました。主催者のebiのPRに対するコメントを以下に並べます。

  • il8nの漏れ
  • i18nをフルパスで書いている(t("task_files.index.task_file_name")
  • import Vue from 'vue/dist/vue.esm.js'import Vue from 'vue/dist/vue.esm'で動くはず
  • 表記揺れ(引数のカッコの有無など)
  • factory girl内で遅延評価を使っておくべき箇所
    { confirmed_at DateTime.current }と書かないと読み込まれたタイミングの時刻になってしまう
  • 特に理由がなければ、if !ではなくunlessを使う(Rubyスタイルガイドにのっている)
  • dependent: :destroyが漏れている
  • capybaraでsleepはなるべく使わず、capybaraのオプションで何とかしよう

特になるほど、と思ったのが

  • is_doneとdoneどっち(タスクの終了を表すカラム)
    Railsの世界では、isは付けない方が良いが、カラム名は・・・と考えると悩ましいが、つけない派が多かったです。 予約語っぽいカラム名(例えばprivate)をつけるときはisをつけてごまかすという意見もありました。

  • タスクの終了させる機能についての設計
    現在、Task.is_doneをtrueにするために、PATCH /task_stateを投げている(TaskStatesController#updateを実装している)が、

    • Completionを作成する、という考え方でPOST /tasks/:id/completionを投げるべきでは
    • また、影響範囲の最小化と可読性のため、トップレベルではなくネームスペースを区切る、すなわちTasks::ComplatesController#createに変更したら良いのでは

という意見を頂き、本当にその通りだなと思いました。2点の指摘両方とも汎用的に使える考え方なので気をつけていきたいですね。

また、私のレビューではないですが、clearance gemの作成するusersテーブルのemailカラムに、デフォルトではユニーク制約がついていないというハマりどころが発見されたのにびっくりしました。PR送った方が良い気がしますね・・・

主催者以外のレビューコメントは、以下のPRをご覧ください。conversationsを確認すれば、だいたいの内容が分かると思います。

議論の中で紹介されたリンクを貼っておきます。

ロケールファイルがきちんとメンテされているというのは非常に良いので、私も使おうと思いました。

次の仕様について

  • Level 1 is: タスクの複製(ひもづけは不要・タスクのどの内容まで複製するか選べない)
  • Level 2 is: タスクに優先度をつける
  • Level 3 is: Googleカレンダー共有

不明点があればぜひお問い合わせください。

反省点

時間配分が難しいので課題ですね。時間が足りず延長してしまい申し訳なかったです。 ただ、レビューをきっかけにせっかく良い議論が起こっているときに話を切るのももったいなく、悩ましいです。

次回について

次回は12/21(木)で、ExpertTodoのもくもく会です! 今まで参加したことない方は、雰囲気をつかむのに丁度良いのでぜひご参加ください。普段参加されている方もぜひ来てくださいね。 なお、途中参加も可能なので、既に最小実装をしてある人のリポジトリをforkするなどしてぜひご参加頂ければと思います。 ご興味ある方は、Step-to-Rails-Expert.rbのslackへこちらから招待を受けてください。

ところで

懇親会にて神速さんが書籍「CLEAN CODE FOR RAILS」(技術書展で販売)を持ってきてくださったので購入できました。 弊社LICTOORのメンバーも欲しがっていたので、購入でき非常にありがたかったです。ありがとうございました!