カテゴリー: テクノロジー

コードレビュー依頼前に確認してること

入社してから1年の間にコードレビューで、たくさんのありがたいご指摘(アドバイス)を受けてきました。
その中で実際にいただいたレビューから、今でもレビュー依頼する前に確認していることについてまとめてみたいと思います。

余計なスペース、インデントが入ってないか

入社直後のときはあまり気にしてなかったため数多くご指摘いただきました。
余計な空白や改行が入ることで、予期せずコードの動作が変わることはまれだと思いますが、Gitで不要な差分が追加されたりコードのフォーマットがバラバラになったりするので、不要な変更は削除したほうがいいです。

VSCodeでは、以下のプラグインを導入することでスペースが一目でわかるようになり、便利です。

https://marketplace.visualstudio.com/items?itemName=ybaumes.highlight-trailing-white-spaces

分かりやすい変数名、関数名を意識する

変数名、関数名には何の処理をしているか一目で分かりやすい名前をつけると別の開発者や未来の自分が見た時にそのコードの意味や目的をすぐに理解することができるので大切です。

とはいえ、ちょうどいい変数名や関数名が思いつかない…といったことが多々ありますが、最近では、ChatGPTに名前の提案を求めることもできるので非常に助かっています。

既存の共通処理を利用しているか

既存の共通処理があるにも関わらず、同じ内容の処理を重複して書いてしまい、それに関して指摘を受けたことがあります。

将来、仕様が変わった際に改修が必要となると、修正の漏れが生じるリスクが増えます。共通処理が存在する場合、その処理を再利用するか、共通のロジックとして新たに切り出すことが重要です。

その他

  • 処理が複雑な箇所はコメントを残しているか
  • マジックナンバーが使われてないか
  • 既存のユーザーや機能に対する影響がないか
  • 不要なコメント、デバッグコードを残してないか
  • 既存の処理より大幅にクエリの発行回数が増えてないか

まとめ

以上が、これまでいただいたレビューから確認するようになったポイントです。

レビュー時に学んだことを活かして同じ指摘を受けないようにすること、そしてケアレスミスをしないよう注意することでレビュアーの負担を軽減し、コードの品質向上に繋がると思うので今後も意識したいと思います。

Solr のスリムなバイナリ配布

Solr 9.3 から従来と同じ solr-9.3.0.tgz の他に solr-9.3.0-slim.tgz という配布形式が追加されました。追加のモジュール類が不要な利用者向けに、各種のライブラリを除外した配布となっています。

solr-9.3.0.tgz と solr-9.3.0-slim.tgz をそれぞれ展開して含まれているファイルを比較したところ、以下の2つのディレクトリが有るか無いかの違いであることが分かりました。

  • modules
  • prometheus-exporter

prometheus-exporter は Solr と Prometheus を連携させるためのツールです。
modules の下には以下のモジュールが含まれています。

  • analysis-extras
  • analytics
  • clustering
  • extraction
  • gcs-repository
  • hadoop-auth
  • hdfs
  • jaegertracer-configurator
  • jwt-auth
  • langid
  • ltr
  • opentelemetry
  • s3-repository
  • scripting
  • sql

それぞれのアーカイブファイルのサイズと展開後のサイズを比較すると、slim の方はかなり小さくなっていることが分かります。

$ ls -lh solr-9.3.0.tgz solr-9.3.0-slim.tgz 
-rw-r--r-- 1 splout splout  60M  9月 23 12:42 solr-9.3.0-slim.tgz
-rw-r--r-- 1 splout splout 265M  9月 23 12:42 solr-9.3.0.tgz
$ du -sh solr-9.3.0-slim solr-9.3.0
78M	solr-9.3.0-slim
304M	solr-9.3.0

調べていて気が付いたのですが、Solr 9 から Zip ファイルでの配布は無くなったのですね。

mkcertでローカルな環境をHTTPS化する

はじめに

ウェブ上のサービスを開発するにあたって、ローカルなウェブサーバをHTTPSで運用したくなることがあります。OpenSSLを使って自己署名証明書を発行する方法が良く知られていますが、手順も多く運用はなかなか大変です。mkcert というツールを使うことでこの手間を軽減できます。

mkcert

mkcert には Linux, Mac, Windows の書くプラットフォーム向けのインストール方法が用意されています。
Debian の場合は以下の通り。

$ sudo apt install libnss3-tools mkcert

使い方は非常に簡単です。

$ mkcert -install

ルート CA 証明書が作成されてインストールされます。

  • システム
    • /usr/local/share/ca-certificates/mkcert_development_CA_*.crt
    • /etc/ssl/certs/mkcert_development_CA_*.pem
  • Firefox
  • Chrome

ルート CA 証明書のファイルが .local/share/mkcert にあるので、自分が必要な場所にコピーして使うこともできます。

$ mkcert -CAROOT
/home/splout/.local/share/mkcert
$ ls /home/splout/.local/share/mkcert
rootCA-key.pem  rootCA.pem

ルート CA 証明書の次はサーバ証明書です。

$ mkcert localhost
$ ls
localhost-key.pem localhost.pem

コマンドを実行したディレクトリに localhost 用の証明書が作成されます。

$ sudo cp localhost-key.pem /etc/ssl/private/localhost-key.pem
$ sudo cp localhost.pem /etc/ssl/certs/localhost.pem

/etc/ssl の下にコピーしたら、Apache の設定に以下を追加します。

SSLCertificateFile      /etc/ssl/certs/localhost.pem
SSLCertificateKeyFile /etc/ssl/private/localhost-key.pem

これで https://localhost/ がブラウザの警告無しで使えるようになります。

7年ぶりに家のパソコンを新調しました。

7年前に買ったPCを買い換えようと思いつつもっと性能のいいグラボが出るのでは?とここ数年ほど伸ばし伸ばしにしていましたが、流石にそろそろ環境に追いついていけなくなっていたのでPCを新調しました。

デスクトップPC

下記の通り大幅性能アップ
CPU:i7-6700K から i7-13700F
グラボ:GTX1080(8GB) から RTX4070(12GB)
メモリ:16GB から 32GBへ

元々は最高スペックを目指してRTX4090を考えていたんですが、電源ユニットの問題や電気代にワット数、そして肝心のプレイするゲームなど諸々考えるとオーバースペックだし無駄に購入費用も月々の電気代もかかってしまう。他にもブレイカーの問題もあるので色々考慮していくとRTX4070辺りがちょうどいいのでは?となりセールもあったので購入に至りました。

少し上のRTX4070Tiだと12GBなのは変わらないしそうなるとRTX4080だけど消費電力が上がり過ぎでRTX4090なんてとてもじゃないですが普段使いの遊び用PCでやってるゲーム的にもオーバースペックすぎました。

届いて最初に感じたことは起動の速さと久しぶりにPCは静かなものだと再確認できたことです。
そしてSteamでゲームを起動して遊んだあとに終了してもPCが落ちない、固まらない!
もちろん起動も早いですし性能アップは目に見えて感じてます。流石に重いゲームは少しうるさいですが今のところとても快適で買い替えて良かったです。

金額も元々最高スペックを目指して50万超えぐらいを考えていたのが27万ほどに下がったので価格面でも納得のいくお買い物でした。しかもCPUとグラボの消費電力で計算したところ前まで使ってたPCと消費電力変わらないか少し下がる感じなのでそこも良かったです。

買ったことで後悔したのは下記の2点でPC自体の後悔は今のところありません。
・ポイントサイト経由で買うのを忘れていて1万円ほど損に・・・
・下取りで1000円引きだったが送るPCが専用のダンボールでないと入らなくて無駄にダンボール代のほうが高くついた

Linuxで指紋認証

開発機としてノートPCに Debian GNU/Linux をインストールして使っています。
以前に比べて Linux で指紋認証を利用するのもずいぶん簡単になっていたので手順をまとめてみました。

指紋認証を使うためには以下の2つのパッケージをインストールします。

$ sudo apt install fprintd libpam-fprintd

その後、 fprintd-enroll を実行して画面の指示通りに指紋を登録するだけです。

ここまでやってから気付いたのですが、Gnome の設定画面からも登録できました。

この画面で「指紋認証ログイン」を選択すれば登録画面に移動します。

こんな感じで登録が完了したら、「指紋認証ログイン」が有効になります。

この状態になっていれば、次回のログインから指紋認証が使えます。

また、sudo の認証も指紋認証でいけます。

$ sudo pam-auth-update

で「Fingerprint authentication」にチェックを入れると sudo で指紋認証が使えるようになります。