pplog開発のコードレビューから学ぶpull requestによる自律的行動とコミュニケーション

pplogの過去のポエムを複数単語で絞込できるようになりました。

pplogは、自身と向き合い想いを言語化するためのサイトだったりします。(色んな使い方があります)

最新のポエムだけが他人に見えますが、 自分の 過去のポエムを見る機能があります。

この過去ポエムは検索機能が付いているのですが、先日まで複数単語で絞り込むことが出来ませんでした。

pull requestが来た

id: shootaさんからpull requestを頂きました。

勝手にやった!まさにこれだ!と思いました。

よし、コードレビューをしよう!

命名に突っ込んだ

これを見て思うところがありました。

search_word_arrays = params[:keyword].gsub(/ /," ").split()

私は言った

for文にナニカを感じた

し、Cぽい!

search_word_arrays = params[:keyword].gsub(/ /," ").split()
posts_arel = Post.arel_table[:content]
keyword_where = posts_arel.matches("\%#{search_word_arrays[0]}\%")
for i in 1...search_word_arrays.length

私は言った

controllerにイロイロ書いてあった

も、モデルがいいんじゃない!?

Railsのコントローラーの責務を意識する ってのを指針にしてます。

そして、彼、ナンカ嬉しそうなので、補足しました。

  • Railsぽさの観点でコードレビューしたことを伝える
  • Pull Requestは育てるのが良い

というのを意識しました。

大事なのは姿勢を認めること

これだなーと思いました。

仲間たちの目線

見てるよ

これ、すごいいいなと思ってて、@ken_c_loさんの凄さはこういう、 仲間が見ているよ という安心感を自然にするところですね。こういう姿勢もチームプレイにおいて大事だと思うのです。

さらなるcommit

やる気の高まりにより、連日のcommitです。

見た目から感じる安心感について

コードを見たときに 不安な気持ちにならない 事は大事だなと思っていて、不安を取り除くためのアドバイスをしました。

@grouped_posts = Post.search(current_user, params)

なんか、こう。current_userのpostだけが対象になっているんだよね?大丈夫だよね?と思ったのでコメントしたのです。

褒めた

いいところを褒めました。

余談: マジクールとロジクール似ているなって思いました。

意図をわかりやすく

ロジックを読めば分かる ではなく、コードから意図が伝わる ことを重視した視点でのし的です。

def search(current_user, params)
   search_words = params[:keyword].gsub(/ /," ").split
   posts_arel = Post.arel_table[:content]
   keyword_where = posts_arel.matches("\%#{search_words.first}\%")
   search_words.find_all{|word| word != search_words.first}.each do |word|

なんかパッと見の意図がわかりづらかったのでコメントしました。

例外的な動作が気になった

こんなとき、どうなりますか?という質問です。

 def search(current_user, params)
   search_words = params[:keyword].gsub(/ /," ").split

テスト書こう

例外的な話も出てきましたし、テストあると安心ですね。というご提案。

more commits!

とどまることを知らない、犬のやる気です。

はやめのreturn

method内がifunlessで囲まれていた場合に、 早めにreturn することでコードの見通しをよくするという観点でコメントしました。

ナンカそういうこと、リーダブルコードに書いてありました。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)
  • 購入: 68人 クリック: 1,802回
  • この商品を含むブログ (140件) を見る

こちらの状況を伝える

ごめん、あとで見る!ってのをちゃんと伝えました。

無機質でもいいですが、それはチーム内の雰囲気や自分がどんな雰囲気で一緒にものを作りたいかで選択すれば良い話です。

injectでDRYに

最初から、injection使えそうな予感がしていたのですが上手く言語化出来ず、コード書いてみないと分からんなーと思っていたので、実際書いてみたら動いたので、それを案として出しました。

この部分は、複数のAND条件を組み立てる方法として、qiitaにあげてあります。

Postモデルから、search_wordsに含まれる単語をAND検索する

もっと褒める

良い所は褒めあう文化です。

そしてLGTM

最終的なコミットからの、

ヨサソウ (LGTM)

ヨサソウ: 日本語版LGTMのコトです。

良かったこと

  • 楽しかった
  • 許可を求めるな Pull Request せよ を体現する人とナニカを作るのは楽しい

@satococoa氏も、 @fukayatsu 氏も、@fakestarbaby氏も、みなこうして、高まりにより pull requestをくださった方々でした。

githubの pull request 開発は、 勝手にやった ことをアウトプット出来る素晴らしい仕組みだと思います。

このようなモノづくりの方法は以下の様な本でも学べますので、参考にしてみてください。

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール

あわせて読みたい