はじめに
- フレームワークとはいったいなんなのか?
- 言語との違いや関係性はなんなのか?
- アプリの開発力を高めるためには フレームワークをたくさん勉強するべき?
初心者が勉強を進めていくと一度はぶつかるこの疑問について。
たまにある、
「Ruby on Railsでの開発力を高めたいと思っている。RailsはRubyの”上位の技術”だから、Railsの勉強を集中して行うべき?」
という疑問にも回答すべく、今回はRubyとRailsを例に使って言語とフレームワークの関係性や違いを分かりやすく解説しました。
フレームワークについて
フレームワークと言語に上下関係はない
ちなみにRailsとRubyに技術的な上下関係はありません。
また、ある程度まで上達してなおRailsの開発力を高めたかったら、むしろRuby言語の勉強を優先して行った方がいいと言えます。
フレームワークでこんなものが簡単に作れる
Ruby on Railsを構築するプログラミング言語Rubyは、Webアプリを作る以外にも以下のような様々なことができます。
- チャットボット
- スマホアプリ
- ゲーム
- Webスクレイピング
- Webクローリング
Ruby on Railsは「Webアプリケーションを」「決まった流れに従って」構築することに特化したフレームワークです。
フレームワークはインスタント食品
Ruby on RailsとRubyの関係は、料理における「インスタント食品」と「生の食材」との関係に近いと私は考えます。
Railsのようなフレームワークは、インスタント食品に該当します。
例えばインスタント食品であるカップラーメンは
- お湯を沸かす
- お湯を注いで数分待つ
の手順を踏襲するだけで、我々は
- お湯を注いだときカップラーメン内部で何が起こっているか
- カップ麺にはどのような具材が入っているか
- 調味法はどうするのか
- 麺はどのように作られたのか
を「食べる側は一切気にする必要がなく」美味しく食べることができます。
Railsフレームワークの良いところの一つは、「決まりきった方法に従って実装を行うのであれば、開発者側が内部構造を深く理解する必要がない」ことです。
なぜこのようなことが可能かというと「Railsの設計者が内部で、開発者側が深く実装を意識しなくて済むよう親切に」設計をしてくださっているからです。
言語はオーダーメイドの料理
Ruby言語そのものは生の食材に該当します。
生の食材で料理をしようと思うと、例えば肉じゃがを作るときに
- 何の具材を入れるか
- 調味料の割合
- 具材の切り方
- 煮込む時間
- 盛り付け方
などを逐一考慮しなければならず相応の手間がかかります。
加えてその過程で包丁や火の扱い方、栄養素についての知識が必要とされるかもしれません。
Ruby言語そのものは「多様なことができる」故に、「用途によって深い基礎知識を持って逐一考慮し開発者側が設計を行う」必要があります。
Railsの開発力をあげようと思ったら、Rails内部でどのような実装が行われているかを理解する必要がありますが、それはRailsライブラリ内のRubyコードを読むことに他なりません。
当然Ruby言語の文法知識が要求されます。
料理に例え直すと、「食材であるジャガイモ本来の性質を理解し、具材の切り方や煮込み時間などを考慮する」ことでより美味しい肉じゃがを作れる、といったところでしょうか。
また、インスタント食品と生の食材に上下関係が無いように、フレームワークと言語に上下関係はありません。
あくまで言語の用途特化機能群がフレームワークです。
まとめ
言語とフレームワークの関係性や違いについて解説しました。
アプリ開発の経験も浅くて慣れていない最初は、もちろんフレームワークをガンガン使ってアプリ開発の経験と学びを積みましょう。
そこからさらにアプリ開発のスキルを深めていきたい場合にはぜひ言語に対する理解を深めていくのがいいかと思われます。
参考
この記事は「CodeShip」内での実際の質疑応答や指導・アドバイスの一部を基に作成しています。