3行で言うと…
前回のブログにも書きましたけど、オープンソースのプロジェクト管理ツール「Redmine」の改善を業務として行なっています。この改善業務ではプログラムコードの作成や修正をしてRedmine公式サイトに投稿します。投稿したパッチが採用されRedmine本体に取り込まれたものは、新バージョンのRedmineで新機能や修正として世界中のRedmineユーザーに利用されています。先日リリースされた新バージョンのRedmine 4.0.3 / 3.4.10でも当社作成のパッチ8件が採用されました。
当社ではRedmine改善業務を数名で取り組んでおり、それぞれ異なるRedmineの改善に取り組んでおります。自分で書いたコードだから正しく書けていると信じたいのですけど、やはり第三者の目から見て適切なコードであるか判断をしていただく必要があります。そのためRedmine公式サイトに投稿する前に、各自作成したコードをほかの人がコードレビューをします。
「私が作成したコードをほかの人にコードレビューしてもらう」ということは、その逆の「ほかの人が作成したコードを私がコードレビューする」ことにもなります。私がコードレビューする時は自分なりのルールを3つ決めております。
ただしあまりにも細かい点を指摘しすぎるとコードレビューを依頼する人(レビューイ)のヤル気が失せてしまう恐れもあるので、最後の2点に関しては「個人的に気になったこと」として返信し軽い気持ちで見てもらうよう心掛けています。
これは当然ですけど、Redmineの改善要望で挙がっている内容に沿って作成・修正が行われていることを確認します。
コーディングした名称の意味合いが大きく誤っている場合は指摘しますけど、基本「変数名(XXX)はYYYであるべき」のような指摘はしないようにしています。これは(過去に)ある事案の設計レビューに参加した時、書面上の誤字脱字レベルの指摘で時間の大半を使ってしまい内容の薄いレビューになったことを経験したためです。
コーディングルールが明確に決まっている場合は指摘しますけど、基本「後置ifの空白」「インデント幅」「alias定義があるメソッドはどれを使うべきか(ちなみに私はcollect,inject派で、map,reduceは好んで使いません)」などの指摘はしないようにしています。個人的には上記名称の正確性と同じレベルの指摘で、レビューとしてはさほど意味が無いものと思っております。
様々な人がRubyコーディング規約を決めようとしているのは知っていますけど、Redmineに関しては2006年から世界中の人々により開発が進められており、たぶんコーディング規約のようなものは無いと思います。実際のコードを眺めてみると分かりますけど、インデント幅がスペース2つ(Rubyで一般的に使われるインデント幅)のものもあれば4つのものもあります。
私はこれまでRubyを含む様々なプログラム言語を業務で扱ってきました。それなりに経験はあると思っていましたけど、他人の書いたコードを読むとあらためて初めて知る関数(メソッド)・ロジック(処理の手順)などに遭遇し刺激を受けます。これが私のコードリーディングをする楽しみの一つでもあります。先日Redmine改善業務を行なった際に String#b メソッドの存在を初めて知り感心しました(Patch #31059: Use #b shortcut instead of #force_encoding)。
レビューを依頼される人(レビューア)の中には、単にコードを読んでOKかNGかを判断する方もおられると聞きます。しかしレビューを依頼する人(レビューイ)はOK・NGの返答だけがほしいのではなく、レビューイ自身がスキルアップするためのコメントや指摘などを求めていると思います。
そのためにはレビューアも新しいことを学ぶ必要があります(ITの世界は進化が速いので追いつくのは大変ですけど)。偶然ですが、先日当社で定期購読しているWEB+DB PRESSでRuby 2.6に関する機能紹介の記事を読む機会がありました。Rubyは古い書き方もサポートされているので2.6になったからと言って大きく変わることはないと思っていましたけど、範囲(Range)の終端が省略できることを知って感激しました(Feature #12912: An endless range `(1..)`)。知らないよりは知っていたほうがコードレビューする時に役立つとあらためて認識しました。
![]() |
Redmineの開発業務にVSCodeとVimを使っています。VSCodeは動作が軽くて使いやすいのが良いです。 |
![]() |
数十年ぶりに万年筆を使い始めました。「Lamy」のsafariシリーズは万年筆初心者にもちょうど良い入門モデルです。 |
![]() |
香港・深圳に行くときに持っていく必携アイテム(SIMカード、ポケットティッシュ、オクトパスカードなど)を紹介。 |
![]() |
中国で使えるWeChat Pay(微信支付)にクレジットカードからチャージする方法です。 |
![]() |
2台のApple Watchを使って睡眠分析や心拍数測定を測定してみました。 |
![]() |
社員研修に伴うサポート体制変更・休業のお知らせ(5/20〜23) 社員研修に伴い、5月20日〜23日はサポート体制の変更および休業とさせていただきます。 |
![]() |
オープンソースカンファレンス2025 Nagoyaに弊社代表の前田が登壇(ブース出展あり) オープンソースカンファレンス(OSC)2025 Nagoyaに弊社代表の前田が登壇。『Redmineの意外と知らない便利な機能(Redmine 6.0 対応版)』をテーマに発表します。 |
![]() |
エンタープライズプラン向け「優先サポート」を開始 My Redmineでは、エンタープライズプランをご契約のお客様向けにサポート対応を優先的に行う「優先サポート(プライオリティサポート)」を開始いたしました。 |
![]() |
プロジェクト管理ツール「RedMica」バージョン 3.1.0をリリース Redmine互換のオープンソースソフトウェア ファーエンドテクノロジー株式会社は、2024年11月19日(日本時間)、Redmine互換のプロジェクト管理ソフトウェア「RedMica 3.1.0」をリリースしました。 |
![]() |
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |