フレームワークのソースコードを読まないからプログラミングが上達しないのですよ。

f:id:hrmch-ioii:20180419231916j:plain

@nabeemichi です。

WEBアプリだろうがスマホのアプリだろいうが今の時代、アプリケーション開発においてフレームワークやライブラリを利用しないことはない。 世界中の頭のいい人たちや、世界中の開発者の経験を詰め込んだ素晴らしいフレームワークやライブラリがオープンソースとして提供されてるからね。

これによって、アプリケーションを作成するために開発者がプログラミングをする部分はアプリケーション固有の動きの部分に集中することができ、 アプリケーション固有ではない他のアプリケーションでも行う部分はフレームワークにまかせて生産性を上げることができる。 なので、

フレームワークを理解し使いこなすことがエンジニアの仕事

の大部分になっているのです。 理解して利用しないと使えないし、生産性もあがらないので当たり前のことですが。。。

そんでもって、理解するために何をするかというと

フレームワーク作成元が発行している公式ドキュメント

を読んで理解するのです。 理解して利用できればいいのですが、ドキュメントだけでは理解しきれない場合もあるわけです。

ドキュメントは、英語や日本語で書かれていますので、一意に特定しきれない表現があったり、読んでいる側の勘違いだってあるのです。

で、理解できない場合はどうするのかというと、

フレームワークのソースコードを読む

のです。僕の場合はね。

ほとんどの開発者は読まないらしい。というか、読んでるやついないのでは? 実際に僕が手伝いに行っている会社のエンジニアも6人くらいいて、みんな読んでない。

他のエンジニアから言われるのが、

フレームワークの中身読むなんて、よっぽどフレームワーク好きなんですね?

とか言われるが、それは誤解です。 フレームワークを正しく、理解して、動作も確認して使いたいだけ。 論理的にも動作的にも理解した状態で使わないとか、僕には恐ろしくてできないわけよ。

なぜかというと

想定外の動作が起こったときにすぐに原因の想定ができる

ってことが大きい。 フレームワークのソースコード読んで論理的に理解しているから、原因箇所の仮説が立てやすい。

アプリケーションの作り方の正しさを論理的に察知できる

フレームワークも利用場面や利用想定がなければ機能は作れません。 フレームワークのソースコードを読んでいると、なんとなく思想や利用想定が見えてくる。 そのため、動き的には正しいのだけれど、論理的に正しい実装になっているのかを理解できる。

論理的に間違った実装をすることが、なぜダメかというと

フレームワークが想定していない利用方法だから

これをすると、バージョンアップで動作が変わってしまって対応できない。 まぁそうですよね?フレームワークが想定してない利用方法なので、バージョンアップのときに論理的に間違った実装していたら、動作の保証なんてされません。

さらに、保証されてない利用方法なので、どこでどんな影響があるのか自分で調べてドキドキヒヤヒヤしないといけない。 そんでもって、実装増やしていったときに、

動作的にも論理的にも。。。もうツンだ!作り直さないとどうにもならんかも。。。

みたいな感じで顔が真っ青になってるエンジニアを何人見てきたことやら。 フレームワークのメリットである生産性向上がまったくもってできなかったパターン。

自分の実装サンプルが増える

でもって、これがエンジニアにとっての一番のメリットだと思うわけ。

フレームワークなんてものは、自分よりも頭のいい世界中の優秀な人が作ってるはずなわけ。 だから、中身を見て、

こんな機能があるのか〜!

とか

こんな考え方で作ると効率的なのか〜!

とか

ええええ!こんな場面も想定されてるのか〜!!

とか、発見があるわけですよ。 この発見が重要なわけで、アプリケーション開発でもっと効率化した実装できないかな〜?と自分が思ったときに、 あ、フレームワークのあそこらへんの考え方が使えるかもしれない!!!! って思いつけるわけ。

こうやって自分のプログラミング方法や考え方のサンプルを知って、利用してみないと、プログラミングって上達しないと思うのです。 せっかく頭のいい人たちと、世界中の知見が詰まってるフレームワークを利用して、自分のプログラミングも効率的にスキルアップするのです。