2018の12日目の記事です。1つであるLINEキャリアの開発を担当している黒澤です。配属され、すでに約半年が過ぎました。Bootを使用しています。Bootを使用して感じたことについて、色々と書いていきたいと思います。Bootを知らない方や、フレームワームの選定に悩んでいる方向けの記事となります。Calender向けにかなり省いたものとなっています。詳しくは公式ドキュメントなどをご参照ください。ついてよく知らない方もいるかもしれません。Frameworkについて簡単に説明します。プラットフォーム向けのオープンソースアプリケーションフレームワークです。Webアプリケーションに限らず、広範囲のJavaアプリケーションを開発できます。コミュニティーも盛んです。Bootと思っていただければ大丈夫です。TomcatなどのWebアプリケーションコンテナを内蔵して手早くアプリケーションが動くようにしてくれます。ProgrammingTestです。非常に魅力的な機能なので是非読み進めていって欲しいです。いう言葉が出てきましたが、馴染みのない人もいるかと思います。とって大事な要素です。略で、クラス間にある依存関係を、コードに書くのではなく、実行時に解決していくデザインパターンのことです。クラス間の依存性が高く、柔軟性に欠けてしまうコードを書いてしまうことはありませんか。その理由の一つに、クラスが他のクラスをコード上で静的に参照している場合があります。環境を判定する条件分岐のコードを都度書かなければいけません。}}そこでインターフェースを共通化させます。}}少しすっきりしましたが、HogeがProductionLogicとDevelopmentLogic両方の環境用のコードに依存していることは変わりません。静的に参照するのではなく、Hogeの外部から動的に依存オブジェクトを渡してあげる形に設計します。これにより依存性が薄まり、柔軟な切り替えが可能になります。HogeにLogic実装クラスのオブジェクトを渡してくれるのでしょうか。それをやってくれるのがDIコンテナの仕事というわけです。オブジェクトインスタンスの生成を管理し、それを使用するオブジェクトに渡してくれることで面倒ごとを解決してくれます。依存するコンポーネントの適切な実装を結びつけてもらいます。}}柔軟に依存性を注入できるようになるため、例えば環境の違いにより一部だけ別のロジックに変えるといった事が簡単にできるようになります。Programming)同様にプログラミング手法の1つです。いちいちボイラープレートなコードを書いて、コピペコードが増殖し、保守性を下げたりしてしまいがちです。ログ処理や、トランザクションの開始と終了処理をすべてのビジネスロジックコードごとに書くのは大変ですよね。いったあらゆる面に出てくる共通処理(としてやりたいこと)を横断的な関心と呼びます。そこで、共通処理をアスペクトとして書き、それを対象のビジネスロジックに編み込めば、依存性が下がり変更修正のコストも低くなります。処理を書かなくて済むようになります。適切なアノテーションを付けるだけでやってくれるものもありますし、上記のログ処理のように、自分でアスペクトを書くこともできます。テストコードはとてもカジュアルに書くことができます。以下のようなコードがあるとします。}}こちらのサービスをテストするためのテストコードを記述します。単体テストが可能になります。便利なパッケージを使うとさらにテストが楽になります。実務運用していくにあたって注意が必要な点もありましたのでまとめておきます。呼ばれるクラスでラップされます。アスペクトによる処理はこのラッパー部分に編み込まれます。経由されずAOP処理が効きません。生成されたラッパーのインスタンスはフィールドに値を持っていません。DIが注入した参照を通してフィールドに直接アクセスすると、意図した値が読み出せないことがあります。これはgetterなどアクセサメソッドを定義して、メソッド呼び出しとしてアクセスするようにする事で解決できます。メソッドを用いる事で解決できます。作るコンストラクタに注意しましょう。Requestをハンドルするメソッドから非同期に良び出したメソッド内で、RequestScopeのBeanにアクセスすると、Scopeの範囲外からのアクセスになるためクラッシュする。違いを意識して開発しましょう。フレームワークを持っているがありました。共通部分の切り出しが楽などなどの利点もありました。Frameworkでは、各種オブジェクトの役割は命名規則ではなくアノテーションにより付与します。そのため、フレームワークによる制約が軽くなり、アークテクチャの選定など設計を柔軟に行うことが可能な点も魅力的だと思いました。いいのではという内容の記事でした。技術から得られる事はあるのかなとも思いますので参考にしてみてください。ここまで読み進んでいただいた皆さん、ありがとうございます。開発担当の小澤さんにはレビューやアイデアの提供していただきました。