
プログラマをする上でよく使う言葉である、フレームワーク。
転職する際にIT企業の面接では、以前何のフレームワークを使っていましたか?などと聞かれるくらい一般的な知識になっています。
今回はフレームワークとはどういうものなのか?
更にもう一歩踏み込んで、javaの有名なフレームワークであるspring frameworkについての概要と特徴を述べていきたいと思います。
フレームワークとは?
システム開発を行う上で、プログラミングを効率化するために用意された、プログラムのひな形のようなものです。
最初はフレームワークについての知識を覚えるのに時間がかかりますが、慣れると簡単にプログラムを作ることができるので、実際に使っていてとても便利だと感じます。
その為、現在大多数のプログラマが概念や使用方法を知っています。
フレームワークを使用することによるメリットとデメリット
フレームワークといえど、いいことばっかりということはありません。
ということで、メリットとデメリットの一例を挙げます。
メリット3点

- 汎用的な機能は用意されており、簡単
- セキュリティ上安全なコードが書ける
- 書き方がある程度固まっているので、複数人の開発で書いたコードに統一性を持たせやすい
デメリット2点

- 固有の書き方を覚える必要があり、覚えることが増える
- コーディングルールがある程度決まっているので、プログラミングの自由度が低い
フレームワークにはどんなものがあるか?
プログラミング言語により、様々なフレームワークがあります。
簡単にどんなものがあるのか挙げていきます。
PHP
- Laravel
- cakePHP
- FuelPHP
Ruby
- Ruby on Rails
java
- spring framework
- Apache Struts
これらは数多くあるフレームワークの一例です。
今回は、javaで有名なフレームワークである、spring frameworkについて掘り下げていきたいと思います。
spring frameworkの基礎知識
数あるjavaのフレームワークのなかでも頻繁に使われているのがspring frameworkです。
springを採用しているシステムも比較的多くかつ使い勝手もいいので、覚えておいて損はないという事で今回はピックアップしています。
まずは、フレームワークといえど基本となっているのはjavaなので、java自体の知識習得が必要になります。
これを飛ばしてしまうと分からないところが多くなってしまい、springの学習が非常に辛くなります。
更にいうと基本的な構文に加えて、オブジェクト指向の理解とアノテーションの学習をしていると、springがより理解しやすくなります。
spring frameworkで大事な2つのワード
spring frameworkの特徴として、DI(Dependency Injection)とAOP(Aspect Oriented Programming)というワードはおさえておいた方が良いです。
少し難しい言葉だと思いますので、簡単に概要を説明いたします。
DI
DIは日本語だと「依存性の注入」と訳されます。なんのこっちゃよく分からないと思いますので、わかりやすくいうと「オブジェクトを注入する」という意味です。
DIを使うことによる恩恵としては、プログラムの変更や修正を簡単にしてくれるという点が挙げられます。
従来では変更を行う場合に時間がかかっていましたが、DIの導入により簡単に変更を行うことができ、かなり楽に開発ができるようになりました。
ちなみにキーワードとしては、@Autowired(フィールドやメソッドなどに自動的にオブジェクトをバインドしてくれる)や、@Service(適切な箇所に付与することでトランザクション管理をしてくれる)といったものがよく使われるので、覚えておくと役に立ちます。
余談ですがPHPのフレームワークであるcakePHPで開発していた時は、テスト実行時にログが毎回ファイル出力されてしまって困った事があったのですが、DIが使えるspringではモックを渡したりすることで、実際にファイルにログは吐かれることはなくてDIは便利だなと思った出来事がありました。
AOP
AOPは日本語だと「アスペクト指向プログラミング」と訳されます。
本質的な処理と共通化可能な処理を分けて記述することでプログラムの分かりやすさとバグなどの原因特定に大きく寄与してくれるものです。
例外処理などのクラスを横断する処理を、ビジネスロジックというシステム固有処理(例えば銀行のシステムでいうと取引によって手数料を決定するロジックなど)からは、分離してコードを記述します。
これにすることにより、同じ処理をおこなうコードが集約され、複数の処理をシンプルにすることができます。
「引き継ぎコストを大きく減らしてくれる」というのが、使用していて実感した点です。
springを導入したい
何をすればいいか?ですが、統合開発環境(IDE)をインストールして開発をするのが一般的です。
Eclipseを使用する人であれば、STSプラグインを導入することでspringを使った開発が可能です。
また、STSというSpring開発の専用開発ツールもあります。
専用開発ツールとはいってもEclipseをベースにしたIDEなので、操作がまったくわからなくなることはないと思います。
まとめ
数あるフレームワークの中でspring frameworkをおすすめしたのは、1つが「java言語のフレームワーク」だったこと、もう1つが「近年多くのシステムで使用されていること」が理由です。
javaはコンパイル言語、変数の型をしっかり決める、など学ぶことが多い言語であり、それでいて記述はわかりやすく初心者が学びやすい言語です。
C言語は初心者にとっつきづらすぎる、PHPは比較的簡単にコーディングできてしまうという点があり、ちょうどいいところにいるのがjavaであると思っています。
また、近年多くのシステムで使用されているspring frameworkはjavaのフレームワークの中では流行りの為、参考書も多いかつ情報が豊富です。
そういった意味ではcakePHPのような近年使用が減りつつあるフレームワークよりも、springのような多くの開発で使用されているフレームワークを学習するのは、私はとても有用な事だと思います。
情報がなかなか見つからないと学習意欲がなくなりやすいといった点もあるので、初心者は情報量が多い分野の学習から始めた方がいいです。
以上の点から、springははじめてのフレームワークという方にもおすすめできるフレームワークだと思いますので、気になった方は是非学習してみることをおすすめします。