JavaのSpringフレームワークの目的は、楽したいこと。
サーチマン佐藤です。
こんにちは。
先日、JavaフレームワークSpringの環境作成、
最初のプログラムの作り方をアップしました。
===================================
STS(spring-tool-suite)インストール
===================================
Springは、現場で使うことも多いので、
是非、周りの方に教えて頂ければと思いますが、
(無料ですし)
このSpringフレームワークの特徴、
一つ述べたいと思います。
それは、DI(Dependency Injection)と呼ばれる、
依存性の注入です。
依存性の注入??
何のこっちゃ?(笑)
って話ですが、
要するに、その目的だけを言えば、
開発で、いかに楽できるかって話です。
システムは、当然ですが、
一連の全てのプログラムが、
正常に動作する必要があります。
しかし、各々、
一つ一つのプログラムが、
正常に動作する保証は、
なかなか難しい。
「単体テストやればいいだろ」
と言いますが、
例えば、
Aというプログラムが
Bというプログラムを呼んでいる場合、
Bが出来なければ、
Aの単体テストが出来ない・・・・
なんて話は非効率です。
Bも作りながら、同時に、
Aも作りたい。
「車」に例えれば、
エンジンの開発テストしたい時に、
タイヤが出来なければ、
エンジンの開発テストができない、
と同じです。
エンジンもタイヤも、
別々の技術者が、別々に開発して、
最後に、がっちゃんこするのがいい。
じゃあ、どうするのか?
一つの方法は・・・・
設計書できっちり書いて、
その通りに、AもBも実装するって、
まあ、そりゃそうなんですが、
理想論と言うか、
強制力もないので、
現実は、うまくいかない。
もちろん、一人で開発するなら、
一つの頭脳で完結するので、
たいして問題はおきないけど、
(職人芸ですね)
でも、複数人になると、
トラブルになりやすい(苦笑)。
そこで、Springを使えば、そこはもっと、
強制的に自動的になる(←ここ大事)。
具体的に言えば、(Javaなので)
Bのインターフェースを定義してしまう。
Aの開発者は、
Bのインタフェースだけ意識すればよくて、
Bの開発者は、インターフェースに沿って実装する。
AもBも、同時に開発できる。
それを、「依存性の注入」と言うのですが、
・・・分かり難い言葉(苦笑)。
要するに、
Bが出来なければ、
Aの単体テストが出来ない・・・・ことを、
AがBに依存性がある状態と言い、
そこで、AにBのインターフェースを注入することで、
依存を無くす、という話ですが、
だったら、「依存性の排除」
って言葉の方がよかったのでは?
という気もしますが、どうなんでしょうか。
※どなたか、このへんの説明、
うまくできるなら、教えてくださいませ。
まあ、とにもかくにも、
Springは、そんな感じで、
開発を、すっきり分けて、
楽で効率的にすることが目的。
ただし、その(楽にするための)作業が多くなりすぎて、
楽にならないなんて、皮肉な話もあるので、
気をつけてくださいませ。
仕事にも言えますね。
マニュアル作りすぎて、かえって、仕事が大変とか。
ではでは、またお会いしましょう。
ありがとうございました。
●追伸
Springでは、ここ数年、Spring Bootも出てきて、
もっと楽しようって話になってます(笑)
Webアプリの開発を容易にするため、
Webサーバー(Tomcat)まで内包してるので、
面倒な設定が全くありません。
最初に見た時、
ついにここまで来たかって気分でしたし、
私の知人が、ふっと見たら、
何も知らない新人が、それなりの
Webサーバー&Webページを作っていたとか(笑)。
その功罪はともかく、
簡単に、Webサーバーを含めた
Webページまで作れるので、
試す価値はあると思いますよ。
是非、アナタ自身、
周りの方にも教えてあげてくださいね。