Laravelとドキュメントと書籍の話

タグ: Laravel  

テクニカルな内容ではありません。

Laravelに限った話でもありませんが、公式ドキュメントを「全て」のレベルの人のために整えるというのは無理です。例えば、マイクロソフトのソフトウェアであれば、値段が高いですし、そうしたドキュメントを整える人的資源も、人を雇う資金も潤沢でしょう。

しかし、オープンソースのソフトウェアにそれを求めるのは酷というもの。開発にかかるコストだけでもかつかつでしょうに、ドキュメントまで整えているのです。

基本的にドキュメントは「初心者」向きに書かれる傾向があります。誰でも、そのプロダクトを初めて使用する時には初心者です。どうせ時間を費やすならできるだけ幅広く使ってもらえる部分に力をかけたほうが効率的です。となれば、どうしても初心者向きの内容になります。

それを様々なレベルの人に合わせて情報発信していくのは、コミュニティーが担っています。場合により、ドキュメントがほとんどコミュニティーに委ねられているものもありますね。ドキュメント以外にフォーラム、SNS、質問サイトでQ&Aの形式で知識が蓄積されていき、そうした情報により補われています。

Laravelのドキュメントを見てみると、最低限度の情報を提供しています。これは、ドキュメントはコアのAPIではないという開発者のTaylorさんの考えによるものです。そのため、ある機能の点と点、各部品の機能は示されていますが、それらをつなぎあわせて一つのWebアプリとしてどう仕立てるのかについては説明されていません。

それは、利用者のこれまでのWebアプリの経験に頼っているからです。フレームワークを使用する開発に慣れていない「フレームワーク初心者」のため、公式ドキュメントだけでなく、Code Happyなどの情報源がブームし始めた頃には用意されました。このような情報源により、「組み立て方」を理解することができたのです。

現状も同じです。組み立て方を学ぶにはチュートリアルを行ってみるのが一番です。Laravelには公式チュートリアルはありません。そこで、Web情報や電子本などが出版されてきました。

それにより、逆の不満も出てきました。「初心者向きの書籍ばかりで、中級者、上級者に適する書籍はない」

それは、いつでも、何に対しても事実です。紙の書籍でも事実でしょう。初心者に対して最初の一歩を示すのは簡単です。真っ白な紙であればどこを塗っても、塗った分だけ色は広がっていきます。

ところがある程度スキルを身につけた方は、知識の身に付け方に差があります。そのため、情報の範囲を狭め情報を提供します。余白を埋めるかどうかは、その書籍を選ぶ読者次第です。もちろん読者は内容が余白を埋めてくれるものであれば購入しますが、既に知っている知識であれば買ってくれません。

中級、上級向けになるにつれ、専門性が求められます。

扱う情報の領域が狭くなってしまえば、読者の対象も狭くなり、それ故に売上は見込めなくなります。中級、上級向けに書くには努力がより必要になるのに、より儲からなくなります。まれに、売れないならその分高くして利益を出そうと出版されます。時々、売れなくても安いまま出版され、やっぱり売れなくて市場から淘汰されます。でも、多くの場合は出版される努力もされないでしょう。ですから、中級、上級向けの書籍は数が少ないのです。

それに、フレームワークに関しては、少なくても中級というレベルの方なら、コアのコードは読めると思います。コアのコードを読めれば、仕様としての使い方は理解できます。Laravelのソースは読みやすいですので、是非チャレンジしてください。

ただし、その機能が何のために用意されているかは、フレームワーク以外の知識を持っていなければ、わからないものもあります。サービスコンテナが、ドキュメントやソースを読んでも使えないとしたら、交換性やテストについての知識が欠けているからです。Webデザインが専門の人は、PHPが使えるようになってもキューは使えないでしょう。ファイルシステムにはWebストレージ、HomesteadにはVagrant、ElixerにはGulpやJavascriptの知識が必要です。

これらは、多少厄介な面があります。リクエストを処理してレスポンスを返す処理を作るという本来の単純なWeb開発が複雑になります。より、知識が求められるのです。レベルがあがるにつれ、知識をより幅広く持つ必要が出てきます。

フレームワークにLaravelを選択する人は、知識を学ぶ必要が起きるとしても、先取的で便利なものを好む傾向があるようです。Laravelに着いて行けば、先取的な技術も学べます。ですが、これらを全部使う必要はありません。学ぶことは時に楽しいことでありますが、コストでもあります。不必要な部分はきっぱりと使わない決断をするのも賢明です。

ドキュメントを読んでも使い方がわからないのは、確実にあなたのせいではありません。しかし、Laravelのせいでもありません。必要であれば、周辺知識を学んでください。さらに、コアのソースからも情報が得られます。

シンプルな事実ですが、何かの利便性を手に入れようとしたら、学習のコストは必要になります。より便利なものを求めるなら、よりコストを支払う必要があるということです。

Laravelに限った話ではありませんね。