README駆動開発のススメ 或いは女優が美しさを保つ秘密に迫る

公開日:2018-10-26
最終更新:2018-10-26

これはとあるエンジニアが、テレビを彩る美しい女優から、モジュール開発の極意を学んだ物語。

とあるエンジニアの日常

開発者ならば日常的に自作モジュール(やライブラリ)を開発していると思う。既存の公開モジュールではかゆいところに手が届いていなかったり、開発中に再利用価値が高そうな仕様に気づいたり、様々な理由から頻繁な作業となっているのではないだろうか。
ところで、そのモジュールの出来はどうだろう。
「どうせ自分や身近なチームメンバーしか使わないから」という理由であちこち手を抜いてしまっていないだろうか。その結果、再利用に耐えない出来となり、プロダクトリリースとともに忘れ去られたり、ひどい場合はプロジェクト内でも出番がなくなったりしていないだろうか。
ぼくが手がけてきた多くのモジュール達はそのような運命を辿ってきた。

そこにアイはあるのか

ぼくの設計スキルに問題があるのだろうか。それもあるだろう。でも一番の問題はそこではなかった。
足りなかったのはアイだった。「愛」ではなく「EYE=目」。自分じゃない「誰か」にどう使って欲しいのか、その「誰か」はなぜ他のモジュールではなく「ぼくのモジュール」を使いたいのか。
第三者の目を意識した途端に頭の中の設計図がシャープさを増していく。インターフェースがそうである理由、そのメソッドが必要である理由、その機能を実装するべきではない理由。使いやすさ、パフォーマンス、機能。そのどれに一番焦点をあてなければならないのか。モジュールへの要求や要件が明確な形をとっていく。
人に見られる意識が女優を美しく保ち続けるように、使ってくれる誰かを意識することでぼくのモジュールに価値が宿る。「あたし女優よ」ならぬ「おれはプロだぜ」というのはこういうことなのだ。

書けよ、さらば与えられん

その効果に気づいたのはnpmパッケージの公開がきっかけだった。npmパッケージを公開するためにREADME.mdを書く必要があったのが、さて何から書こうかと考えた末、この構成で書くことにした。

  • What Makes This Module Unique(モジュールの特徴)
  • How To Use(使用方法)
  • Some Note(注意事項)

中でも最初に書く「モジュールの特徴」は大きな効果があった。

執筆時点でnpmに82万弱のパッケージが登録されており、日々その数は増している。それらのパッケージを利用せず、自分が新たにパッケージ開発をする理由は何なのか。開発のコンセプトをシンプルに書いてみる。「簡単に使えること」。82万のパッケージのどれよりも「簡単に使える」ってどういうことだろうと考え始める。「こんな宣言はしたくない」、「こんな設定もいらいない」、「このAPIは必要だが、必須の引数はこれだけだ」。利用方法、利用シーン、インターフェース設計の全てがコンセプトを中心に形になっていくことに軽い高揚感を覚える。
モジュール開発の中途で迷った場合、セルフレビュー時にもそこに立ち返る。「それは本当に『簡単に使える』を実現しているのか、そのために必要なのか」何度も同じ質問を自分にぶつけていく中で、これまでにない高い完成度のモジュールが出来上がっていく。
もちろん、現時点でのぼくのスキルやセンスが上限となっていることは間違いないのだが、その限界まで研ぎ澄まされた開発ができた強い達成感を感じることができた。

設計とはなにか

「品質とは誰かにとっての価値である」とはワインバーグの言葉であるが、READMEは「このモジュールが’(自分やチーム、そしてまだそこにいない未来の利用者達に)もたらす価値」の定義に他ならない。アジャイル計画の有名な手法としてインセプションデッキがある。これは「今から行う開発は誰のなにのために行うのか」だけを計画として定義するというアジャイルらしいライトで効果的な計画手法だ。READMEはさらに簡潔で、同様の効果を与えてくれる。
あなたもそのコード片をモジュール化する前に、15分だけ時間をとってREADMEを書いてみて欲しい。きっと、そこに何かを見つけるはずだ。

おまけ

ぼくが書いたREADME達を載せておく。少しでもあなたの素晴らしいエンジニアライフに貢献できたとしたら、望外の幸せである。

記事が少しでもいいなと思ったらクラップを送ってみよう!
300
+1
@p7TLdQd4Gya5mCh4の技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする