車輪の再発明について 〜 オレオレライブラリとかフレームワークとか
Posted: Updated:
今年をしめくくる勢い
個人的に,今年はオレオレPHPフレームワークとオレオレJSライブラリの年として終わりそうなので,(たぶん)本年最後のブログとして少々つらつらと.
- 再発明の目的は?
- 仕事で使うの?
- 趣味で使うの?
- 実用に耐えるの?
とか色々と,オレオレと車輪の再発明については諸々の議論もありますし,個々のポリシーもあると思います.そのへんはさておき,今回は主に自分自身が感じたメリットなんかを振り返ってみます.
仕入れた知識を蓄積できる
実はこれが一番大きくて,思わぬ効用だったのですが.
初めて知った仕様を試しに実装してみてノウハウを定着させたり,一般的問題のスマートな解決法を仕入れたらそれを反映させたり,今までの経験と知識のコレクションとして役割を果たしてくれました.(そういう視点で見られちゃうとむしろ恥ずかしいんですが)
以前は新しい情報もブックマークするぐらいで,手を動かす動作にはなかなか繋がりませんでしたが,オレオレプロダクトが実践のハケ口になってくれるようになってからは,実際のコードに落とし込む機会が増えました.
色々しらべるキッカケになる
オレオレとは言えども,フレームワークやライブラリの体裁を成してみようと思うと,余所のプロダクトの設計・実装は気になるものです.
これが普段なかなか触れる機会(気合)のなかった,他のプロダクトのコードリーディングに繋がります.コードリーディングの重要性は余所でも説かれていますが,ここでは読めば何かしら勉強になるよね,という端的なメリットとして挙げます.
他のプロダクトを理解しやすくなる
前項からつながる話ですが,色々な実装やら一般的問題について検証する過程と,実際に自分なりに考えてみる過程で,いろいろな経験を得られます.
この経験があると,他のプロダクトを使ったときにも実装の意図を読みやすくなるので,使いこなしレベルが幾らか向上します.少なくともブラックボックス状態(ハマったらハマりっぱなし状態)を脱することは容易になるでしょう.
インプットとアウトプットのサイクル
総じて,オレオレライブラリとかフレームワークというのが,自分にとってはインプットとアウトプットの軸になってくれました.
実業務で使ったり,自作サービスを作ったりをしていないので,実用性については机上のなんちゃら系ではありますが,一定の学習効果は得られたのかなぁと思います.
サービス考えるより,オレオレのおもちゃを地味にいじくり回すのが好きという性癖に依るところもあるので向き不向きもですね.
とはいえ,来年は他のプロダクト使ったりして,何か形になるものを作る気運を高めたいな〜と考えてます.
Ah
MVCになれなかった,オレオレフレームワークの発端.
世間のMVCなフレームワークを(いまだに)マトモに使ったことがないから,自分で習作してみようという変な試みから生まれて,結局MVCでないナニカになりました.
すべてのActionをWebAPIみたいに,リクエストパス・メソッド・パラメーターの3セットを伴ってやり取りする設計です.Actionは処理単位と考えてもらったらOKです.詳しくはGitHubのほうへ.
データプロバイダーとして,リクエストを受けてデータを返すことを専業にするつもりで作られています.フロントエンド側で画面遷移とかビューを制御して,データだけサーバーに取りに行く感じ.
全体としては,単純なリクエスト制御(ルーティングというほど賢くないかも)と処理単位の設計を提供してるだけなので,フレームワークというには随分ゆるい.データベースやテンプレートエンジン周りのドライバ,セッション機構などは用意してないので,かなり薄っぺらい作りです.
というか,そこまで手を回す前に熱が引いてしまっただけなんですが…PHPTALのドライバと薄っぺらいPDOラッパーでも書けばいいかなと思ってます.
Clayworks
jQueryしか書けなかったので,オレオレライブラリでJS覚えよう作戦.
特にユースケースを考えずにつくってしまった無鉄砲なライブラリですが,目標は世間のライブラリが平然とやっていることを自分で実装して勉強してみることです.
で,現状は一般的な機能のクロスブラウザ実装と,jQueryっぽくなるかならないかの境界で迷走していて特に特徴づけされていません.強いて言うなら「黒魔術感がないと思うのでJavaScript詳しくないひとでも幾らかコードリーディングしやすいんじゃないかな〜?」というぐらい.
今後は前述のAhとの兼ね合いを考えて,Clayworks側にウィジェット(画面構成物)単位のテンプレート管理だとかサーバーコミュニケーションの機構を充実させていけたらなぁ,とかぼんやりと考えています.
AhとClayworksの2つを組み合わせることでWebアプリ向けソリューションになる…かもしれない.まあ,きっと1人だと完成しないんですけどw 何かない限りは今後も一人遊びです.
あと,サブパッケージでCSS4(!)までの対応を目標に,セレクタエンジンを再発明してみようかな…とか.
そんなかんじで
今年を振り返ってみるとこんな感じですね.jQueryMobile特需が...笑
1〜3月 : 開発全般への熱が高まる・Ahを作り始めた頃
4〜6月 : Node, Titanium熱が高まる・ブログが元気
7〜9月 : jQueryMobile・ブログ更新頻度が減退(業務量と反比例)
10〜12月 : 続jQueryMobile・続ブログ減退・Clayworksに手を付けたところ
年度末にはいつぞや立てた言語別学習方針の振り返りでもしてみましょうかね.
とりま,来年もよろしくお願いします.