そもそもフレームワークって何だ?
フレームワークって大事だよね、というのは開発現場における共通認識だと思います。でも、そもそもフレームワークって何なのでしょうね。
一般的には、目的にあった再利用可能なコードをまとめて類似の開発に役立つようにまとめたもの、であり、つまりライブラリセット、とほぼ同じものを指します。ただ我々が、フレームワーク、という用語を使う場合、心の中では、コーディングのお作法、モデルの考え方、外部データとのアクセス手法、システム構成など、使い方や開発方針についてもイメージに入れているのではないでしょうか。
いろいろと調べたり聞いたりしてみたのですが、みんなの心の中にある「フレームワーク」というものの定義は、意外ともやもやとしているようです。それなのに、非常に重要という共通認識だけがある。
この、もやもや感をなんとかしたいと思いませんか?
フレームワークの嬉しいところ
フレームワークはアプリケーション開発で良く使われる機能を提供します。Webアプリケーションフレームワークを使うことで、以下のような機能を手軽に使うことができるようになります。
- データベースアクセス(データベース接続、O/Rマッパー)
- URLマッピング
- 表示支援(テンプレートシステム、Ajax)
- 速度向上機能(キャッシュ)
- 自動構成
- 外部インターフェース(Webサービス)
- 標準プロトコル対応
- セキュリティサポート
あらかじめ用意されたこれらの機能を活用することで、開発効率を劇的に上げることができるのです。
もし、これらの機能をスクラッチから書くとするとかなり大変です。スクラッチから書くとテストも自力でしなければいけないのですが、フレームワークで提供されている機能は誰かがテストを行なっているため、ある程度は信頼できるでしょう。
また、フレームワークを用いると以下のような効能もあります。
- コーディングのお作法が決まる
- モデルやインターフェースの考え方が共通化できる
- 書くコード量が減る
それによりアプリケーションの保守がしやすくなる効果も期待できます。
今的な開発においてはフレームワークを使うのは常識であり、使わないのはナンセンスですらあります。
フレームワーク、最高!!
フレームワークの負の側面
でも世の中うまい話には落とし穴があるのですよ。フレームワークをきちんと使うには、そのフレームワークに対する知識、スキルが必要なのです。
十分なスキルがないと、以下のような問題が発生します。
- インストールでハマる
- 保守でハマる
- そもそも使い方を覚えられない
フレームワークを使えばスキルが低くても大丈夫、というような話を耳にすることがありますが、大嘘、です。
フレームワークを正しく使うためにはそのフレームワークを理解する必要があり、そのためのスキルは絶対に必要です。
ではスキルは勉強すれば身に付くから、勉強で解決!!、かと言うと話はそう単純ではなく、ハマり所は他にもあります。
- フレームワークにバグが含まれていたり
- 使っていたフレームワークが保守されなくなったり
- バージョンアップによりフレームワークのAPIが突然変更されたり
- OSバージョンアップによりライブラリが変更されて動かなくなったり
- 一部のライブラリのバージョンを上げたら挙動が変わったり
- そもそも機能、パフォーマンスが不足していたり
システム開発、システム保守に携わっている方なら、こういうタチの悪い問題に、絶対にハマったことがあるはずです。
安易にフレームワークを選定すると、間違いなくしっぺ返しを食らうものです。
実はそもそもフレームワークのセッションを企画したのは、
- 駄目なフレームワークに引導を渡したい
- 古くなったフレームワークのお葬式をしたい
という、極めてネガティブな理由だったりします。DISる系のネタは絶対盛り上がるよね♪。でもLL FutureじゃなくてLL Funeralになっちゃうので止めました。残念。
フレームワークの偉い人に聞いてみたい
上述のようにフレームワーク選定に失敗すると酷いことになっちゃうし、でもフレームワークを使わないのは今的な開発ではありえないし、さて、どうしましょう、困りました。フレームワークセッションのタイトルが LL Funeral になっちゃいそうなのも困りました。
困ったときには、とりあえず偉い人を呼ぶのがセオリーです。LL Futureではフレームワークに見識のある以下の個性豊かな方々にお集まりいただきました。
- 比嘉康雄(The Seasar Project)
- 能登信晴(MobaSiF)
- 瀧内元気(Ruby on Rails)
- 吉田裕美(Gauche on Rails)
まずは彼らに、使っている、もしくは作っているフレームワークについて紹介と自慢をしてもらおうと思っています。
自信を持ってフレームワークを使っている理由を聞くことで、フレームワーク選定に関するもやもや感は、ある程度は解消できるのではないでしょうか。
未来のフレームワークは?
さらに、LL Futureというからには、未来についても当然聞かなければいけません。パネリストの方々には、今後の予定、妄想についても語っていただく予定です。
当日をお楽しみに!
さて、あなたはこれからどんなフレームワークを使いますか?