わかるってたのしい

Ruby on RailsやJavaScriptをよく使っています。コードを書いていく中で得た知見を残していきます。

PRで変更されたファイル一覧を確認する

僕はレビューをする時、大まかにどんな変更をされたのかを最初に把握したいので、変更されたファイル名の一覧を確認したいのですが、Githubにはそれを分かりやすく表示する機能は用意されていません。*1

そのため、いつも以下のコマンドを叩いてから、メモアプリに貼り付けて確認するようにしています。 (デフォルトブランチがmainの場合は適宜変更しています)

git diff origin/master --name-only | awk '{print "- " $1 }' | pbcopy

イメージとしては以下のような形になります。Railsアプリでの変更です。

- Gemfile
- Gemfile.lock
- app/controllers/application_controller.rb
- app/controllers/authors_controller.rb
- app/controllers/books_controller.rb
- app/javascript/packs/application.js
- app/mailers/author_mailer.rb
- app/models/author.rb
- app/models/book.rb
- app/views/authors/show.html.erb
- app/views/books/index.html.erb
- app/views/books/show.html.erb
- config/initializers/devise.rb
- config/routes.rb
- spec/factories/author.rb
- spec/factories/book.rb
- spec/models/author_spec.rb
- spec/models/book_spec.rb
- spec/requests/authors_spec.rb
- spec/requests/books_spec.rb

これで幹となっている変更箇所が分かりやすくなるので、あとはissueやPRのdescriptionに書いてある内容と照らし合わせながら確認をしていきます。

*1:僕が知らないだけかもしれないので、知っている方がいらっしゃいましたら popmac (@popmac1451) | Twitter までメッセージいただけると嬉しいです!

処理の流れを意識する

処理の流れを意識するのが大事だと認識した出来事があったので残しておきます。

外部サイトのAPIを叩いてデータを取得してグラフを表示する、ような機能において「グラフの表示内容が合わない」というバグがあったため調査をしました。

僕は「集計のロジックが間違っているのでは?」と直感的に考えて調査しましたが、ある程度時間を使っても間違っている箇所は見つかりませんでした。

それを報告したところ「そもそもAPIから返ってくる値が想定してるものになってる?」と問われて、処理の流れを意識してなかったことに気付きました。

機能の処理の流れは以下です。

  • 外部サイトのAPIを叩く
  • 取得したデータをDBに保存
  • 保存したデータを集計
  • グラフで表示

APIから返ってくる値が想定したものでなければ、その後の処理が全て正しい動きをしていても結果は正しくなりませんね...

デバッグしたところ、想定していたものとは若干違うデータが返ってきていたことが分かりました。

処理の流れを意識するのはこのようなバグ調査だけでなく、新しい処理を追加する時にも大切です。

その処理をどこに追加すると一番変更の影響が少ないのか、その追加した処理を今後に変更した時にいかに影響が少なくできるのか、を考える必要があるからです。

慌てているとすぐに作業を始めたくなりますが、一度立ち止まって考えるようにしていきます。

はてなブログにアクセス解析ツールを設置する

はてなブログを始めるにあたって設置したアクセス解析ツールの設定方法をメモとして残しておきます。

設定したこと

Google Analytics を設置

以下を参考にしました。

memobiz.net

Google Analytics で自分のIPアドレスからのアクセスを除外

調べていく中で「ビュー」と「フィルタ」の関係が中々理解できなかったのですが、以下の記事で分かりやすく説明されていました。

liginc.co.jp

以下は上記の記事を簡単に説明したものです。

フィルタ機能を使用して特定のアクセスを除外する場合、その除外したアクセスの記録はどこにも残りません。

デフォルトのビューである「すべてのウェブサイトのデータ」は全てのアクセスを集計していますが、こちらにフィルタを設定してしまうと、フィルタによって除外したアクセスの記録は把握できません。

デフォルトのビューである「すべてのウェブサイトのデータ」は全てのアクセスを集計する役割に専念させるのが健全です。

ですので、フィルタ機能を使用する場合、デフォルトのビューである「すべてのウェブサイトのデータ」とは別の新しいビューを作成して、そちらにフィルタを追加する方が安心して運用できます。

リストにすると以下のようになります。

  • デフォルトのビュー
    • 「すべてのウェブサイトのデータ」という名前
    • 全てのアクセスを集計する
    • こちらにはフィルタは設定しない
  • 特定のアクセスを除外したビュー
    • 新たに作成するビュー
    • フィルタを設定する

Google Search Console を設置

以下を参考にしました。

www.heymilelab.com

Google AnalyticsGoogle Search Console を連携

以下を参考にしました。

wacul-ai.com