はじめに
最近、プロダクトコードを書くうえでの設計、特に変更容易性の高い設計に関する勉強をしていく中で、ライブラリに関して思いを馳せたので、ここに備忘録として残しておこうと思います。個人的な考えを中心に書いているので、何かあればコメントください。
前提
本文脈でのキーワードの定義を以下に挙げます。
ライブラリ
OSSや、標準ライブラリのこと
プロダクトコード
Webサービスを開発する上で書かれたコードのこと
ライブラリの概念
プログラミングで何かを表現するための基本的な機能群というイメージを持っています。
他の捉え方をすると、ソフトウェアという手段で実現できることを、それぞれのプログラミング言語で再現してくれるのがライブラリというイメージとしても捉えています。
なので、ライブラリで実現したいことは、ソフトウェアでできることの拡張と汎用化だと思っています。
プロダクトコードの設計指針
一方、プロダクトコードで実現したいことは、人間が抱える課題の解決。この、ライブラリとプロダクトコードのそもそもの目指すところの違いを意識することは、プロダクトコードを書くうえでとても重要なことだと考えています。
そこを意識できていないと、出来上がるものがだいぶ変わってくると思っています。
プロダクトコードで何を実現したいのか、はっきりさせて意志を宿すこと。
プロダクトコード内でセマンティックなまとまりを作り出すこと。
そこまで意識できていないと長い目で見た時の良いプロダクトコードというのは達成できない気がしています。
さいごに
まだまだ勉強中なので、この考えが合っているのかわかりませんし、この考え方も変わるかもしれませんが、ただ、プロダクトコードを書くうえで、1行1行に責任を持って意志を宿すという考えは今後も変わらないような気がしています。