🤔

読めるけど、わからん。そんなコードに詰まったときに読む話

に公開

まずは自己紹介

ナレッジワークでエンジニア組織の仕組み作りなどを担当しているsedoと申します。
Enablement Groupという部署に所属していて、社内のプロジェクト管理の仕組みを整えたり、社外への情報発信イベントの運営サポートなどをしています!

「なんか読みにくいんですよね…」から始まった話

読める。動いてる。エラーも出てない。
でも――なんでこう書いたんだろう?と、コードの前で手が止まる。

誰かの実装にケチをつけたいわけじゃない。
でも、判断の理由が見えないコードって、どこか触るのが怖い。
レビューもしづらいし、直す勇気も出てこない。

ある日の定例ミーティング後、若手エンジニアのナギサさんが、そっと言った。

「△△さんのあの処理なんですけど、動作自体はちゃんとしてるんです。でも、正直ちょっと読み解くのが大変で…」

ナギサさんは、物腰が柔らかくて丁寧な、でもとても優秀なエンジニアだ。
このときも、相手を傷つけないように、慎重に言葉を選んでいた。

「意図はあると思うんです。でも、コメントもないし、変数名もちょっと抽象的で…。うまくレビューもできなくて」

結局、「これは触らない方がいいやつかも…」とそっと閉じてしまう。
そうやって、保留のコードが積み重なっていく。

このときふと感じたのは、「ルール」が足りないんじゃない。
「判断の基準」が共有されていないことが、根っこにあるんじゃないか――ということだった。

読みにくいコードに悩む開発者

ルールがあるのに、なぜこうなる?

ふりかえってみると、ルール自体はちゃんと決めていた。命名規則も、ディレクトリ構成も、ドキュメントもある。

だけど、現場ではそれが「うまく使えない」「活かされていない」と感じることが増えてきた。

  • ルールは知ってるけど、具体的なケースにどう当てはめるか迷う
  • 想定外のパターンに遭遇すると、例外を許すかどうか判断できない
  • 誰かの意図が見えないと、指摘も修正も難しい

ルールが守られないのは、怠慢ではない。
判断のよりどころがないから、みんなが自信を持てないのだ。

判断基準が見えないと、コードもチームも迷子になる

「意図が見えない」と、手が止まる

過去のコードに触れていて、こう感じたことはないだろうか?

  • 「この順番で処理してるのって、なにか理由あるのかな…?」
  • 「ここだけ例外処理が丁寧なのって、バグ回避のため?」
  • 「この責務の分け方、なんか他と違う…?」

きっと、そのときの実装者には理由があったはず。
でも、それを知る手がかりがなければ、触る側は不安しかない。

不安だから手が出せない。レビューもしづらい。結局、そっとスルー。
そんなコードが少しずつ増えていくと、チーム全体の判断力も揺らいでいく。

小さな「迷い」の連鎖が、複雑なコードを育てる

「とりあえず動くようにしておいた」
「このへんはたぶん、他の人が詳しいから触らないでおこう」
「うーん…まあ今回はこれでいいか」

そんな小さな選択が積み重なって、気づけば誰も触りたくないコードができあがっている。

「判断基準」を共有することで、迷いを減らす

ナギサさんがふと漏らした。

「これって書き方の話じゃなくて、考え方の違いなんですよね」
「なんでそうしたかが分かれば、もっと納得できるし、レビューも対話になりそうで」

その一言が、チームの変化のきっかけになった。

判断基準を育てるための、ちょっとした仕組み

・PRテンプレートに「なぜこの実装にしたか」を書く

たった一文の背景説明があるだけで、レビューの空気は大きく変わる。

「初期リリースの範囲を優先し、汎用性よりもシンプルさを選びました」

ナギサさんも「こういう一文があると、レビューの姿勢が変わるんです」と話していた。

・レビューコメントに「判断理由」を添える

レビューをする側も、単に「こっちのほうがいい」と言うだけではなく、
「なぜそう思ったのか」「どういう観点で見ているのか」を一緒に書くようにすると、レビューは指摘ではなく対話になる。

「以前この実装でバグが出たことがあるので、今回は安全側で設計してもらえると嬉しいです」

背景を共有することで、受け手も納得しやすくなるし、考え方の擦り合わせにもつながる。

・SlackやNotionで「良い判断例」を気軽にシェア

ナギサさんは、判断に迷った場面や、納得できた実装をメモに残していた。

「こっちは処理が短くなるけど、未来の自分が読めなさそうだったので、あえて冗長に書きました」

日常の中に埋もれがちな良い判断を拾って残す。
それだけで、判断基準の種が育っていく。

・ふりかえりで「判断に迷ったところ」を話す

「実は、ここの設計、拡張性とシンプルさでめちゃくちゃ悩んだんですけど…」

迷った記録も、立派な判断の材料。
その葛藤を言葉にしてみるだけで、他の人の視野にもなる。

レビューを通じて考え方を共有する開発チーム

判断基準は育てていくもの

判断基準は、誰かが最初から持っているわけじゃない。
対話や振り返り、ちょっとした共有の中で、チーム全体で育っていくものだ。

  • 押しつける ではなく、聞き合う
  • 指摘する ではなく、なぜそうしたかを語る
  • 評価する ではなく、迷いを言葉にする

そんなチームで開発できたら、レビューも実装も、
少しずつやさしく、しなやかなものになっていく気がする。

ナギサさんは、今日もまた、丁寧にレビューコメントを書いていた。
誰かを正すためじゃなく、その人の考えに寄り添うために。

あなたのチームでは、どんな判断基準が育っていますか?

最後にちょっと紹介

他にも以前に私が投稿した記事を紹介しておきます。ご興味あれば読んでみてください。

株式会社ナレッジワーク
設定によりコメント欄が無効化されています