All posts by Kenji

DIxAOP の Java Framework, Spring


Spring3 入門 (技術評論社)
Spring3入門 を Amazonで買う

DIxAOP ってなんだ? と思っていたら、 ある人が紹介してくれました。 DIxAOPについてはわかりやすく書かれているそうです。 パラパラっと見てみましたが、 EAADDD などのアーキテクチャを一通り知っている人が書いた本に見えます。 今回は第1章をじっくり読んでみました。 Spring フレームワーク の前書きみたいな内容で、 Spring を使ったことのない私にはちょうどいいです。

Spring の特徴

Spring の特徴として 際立っているのが DIxAOP だ。 第1章では紹介程度になっているのだが DIxAOP なくして Spring は成り立たないといっても過言ではなさそうだ。

Spring の DIxAOP 設計 は Webアプリケーション が抱える 3つの問題点 を解決する。 以下、簡単にまとめた。

オブジェクトのライフサイクルの問題
オブジェクトの生存期間をコントロールする作りこみが困難
部品化の問題
部品化をするためには実装非依存にする必要があるが、それなりにコストがかかる。 (注: 単にインターフェースを使えばいいという問題ではない。)
技術隠蔽や不適切な技術隠蔽
高レベルの技術を初級レベルの開発者に利用させて不具合を引き起こしてしまったり、不適切な技術隠蔽をしてその技術の利用が困難になってしまったりすることが開発現場でよく起こる。

Spring では、 上2つの問題を DIコンテナ が、 最後の問題を AOP が解決する。

Webフレームワーク というと Rails や FuelPHP, CakePHP などがあり、 「(アクティブレコードパターンの) 簡単にデータベースが使えるもの」という印象を受けてしまいがちですが、 Spring3 入門 では アーキテクチャ の考え方からしっかりと書かれていて EAAに見られるパターンの説明も(第1章では)随所で行われています。 第1章では特にレイヤの分離の説明が重点的に行われています(フレームワークを使う人には是非ともわかるようになっていてほしい内容です!)。 コードの例もあり、全体的にしっかりした印象を受けます。

以下、第1章の中で私が(個人的に)重要だと思った内容を簡単に書き留めました。

アプリケーションアーキテクチャ

プログラムを作る際には 最低でも 2つの方面からの要件・目標がある。

  • ユーザの要件: ユースケースなどで表される機能要求やレスポンスタイムなどの非機能要求
  • 開発者・運用者の目標: 開発期間の厳守、変更・機能追加のしやすさ、テストのやりやすさ

この本では 2つ目の 開発者・運用者の目標 からアーキテクチャの重要性が説かれている。

アーキテクチャに求められるもの

  • 開発効率
    • 意図を把握しやすく、理解しやすい構造
    • テストが容易に行える構造
  • 柔軟性
    • 変更しやすく、機能追加しやすい構造
    • 将来の環境の変動に耐えられる頑健な構造

ティアとレイヤ

Web アプリケーション の アーキテクチャ は ティア と レイヤ に分かれている。 ティア は 物理層 を表し、 レイヤ は 論理層 を表す。

ティア

クライアント層、中間層、 EIS(Enterprise Information System)層 の 3つに分かれるのが基本となっている。

各ティアの例
クライアント層 パソコン、スマートフォン
中間層 アプリケーションサーバ
EIS層 DB、レガシシステム

レイヤ

EAA の冒頭あたりにある分類と同じ分け方でレイヤが書かれている(プレゼンテーション層、ビジネスロジック層、データアクセス層 の3層)。 (もちろん異なる分け方もある。) 互いに隣接するレイヤ間では一方向のアクセスのみ許す。

トランザクション処理がどのレイヤに属するのかは迷うところだが、本書ではプレゼンテーション層とビジネスロジック層の境界と説明されている。

Spring3 入門 (技術評論社)
Spring3入門 を Amazonで買う

ネオスチグミンが最大濃度配合された目薬


ネオスチグミンが最大濃度配合された目薬を探してみましょう。 「ネオスチグミンって何?」という方は目薬に含まれる成分の効果をご覧ください。

最大濃度

そもそも最大濃度ってどれくらいなんでしょうか。 この記事を書いている時点で、一般用眼科用製造販売承認基準という基準では 0.005% です。 というのも 一般用眼科用製造販売承認基準で最大濃度配合と記載されている市販の目薬の説明書を見ると ネオスチグミンメチル硫酸塩 の含有量が 0.005% または 100ml 中 0.005g と記載されているからです。

ネオスチグミンメチル硫酸塩を最大濃度含んだ目薬

ネットで検索したところ 下記のものが見つかりました。 本当はもっとたくさんありますが、書ききれません。

第二類医薬品

第三類医薬品

こうして見ると 「ネオスチグミンメチル最大濃度配合」 というのは さほど特別なことではないと思えてきませんか?

目薬を選ぶ基準

ネオスチグミンメチル硫酸塩について差がなかった上の製品について 別の視点から比較してみましょうか。 血管収縮材なんて絶対にいやだ! という人は第三類医薬品ですね。 ではひとまず上に挙げた第三類医薬品について比較してみましょう。 単位はパーセントです。 パーセントで表示されていない製品については 1ml を 1g と仮定して計算しています。

第三類医薬品 成分比較表
ロートゴールド40マイルド マイティアフレッシュ40 サンテ40ゴールド サンテ40プラス
酢酸d-α-トコフェロール (天然型ビタミンE) 0.05 0.05 0.05 0.05
メチル硫酸ネオスチグミン 0.005 0.005 0.005 0.005
パンテノール (ビタミンB5) 0.1 0.05 0.05
ピリドキシン塩酸塩 (ビタミンB6) 0.05
L-アスパラギン酸カリウム 1 1
アラントイン 0.1
マレイン酸クロルフェニラミン 0.03 0.03 0.03 0.03
タウリン 1 0.5 1
コンドロイチン硫酸エステルナトリウム 0.5
イプシロン-アミノカプロン酸 1

大容量を選ぶならロートゴールド40マイルド (ロート製薬)です。 ほかに気にするとすればビタミンB5、タウリン、アラントインですね。 組織代謝が活発になるそうです。 アスパラギン酸カリウムは酸素を眼に送るのに役立つそうです。 酸素が大切っていう話は『目は1分でよくなる!』に載っています。 コンドロイチンは角膜保護、アミノカプロン酸は炎症を抑える働きがあります。

では次に第二類医薬品を見てみましょう。

第二類医薬品 成分比較表
スマイル40EX ゴールド デジアイ ファルチロン サンテメディカル10
レチノールパルチミン酸エステル (ビタミンA) 33000単位
酢酸d-α-トコフェロール (天然型ビタミンE) 0.05
メチル硫酸ネオスチグミン 0.005 0.005 0.005 0.005
フラビンアデニンジヌクレオチドナトリウム (活性型ビタミンB2) 0.05
パンテノール (ビタミンB5) 0.05
ピリドキシン塩酸塩 (ビタミンB6) 0.03 0.1 0.1 0.05
タウリン 0.1 1 0.5 1
ナファゾリン塩酸塩 (ビタミンB6) 0.003 0.003
L-アスパラギン酸カリウム 1 1 1
マレイン酸クロルフェニラミン 0.03 0.02 0.03
塩酸テトラヒドロゾリン 0.01 0.03
シアノコバラミン (ビタミンB12) 0.02 0.02
コンドロイチン硫酸エステルナトリウム 0.1
イプシロン-アミノカプロン酸 1
グリチルリチン酸二カリウム 0.1

ビタミンAだけパーセント表記にしていません。 スマイル40EXは市販目薬で唯一ビタミンAを含んでいるものだそうです。

有効成分がたくさん入っているのはよさそうに思えますが、たとえばナファゾリン塩酸塩には血管を収縮させて充血をとる働きがありますので、健康的にいいのかは疑問です。

ちなみに私は スマイル40EX マイルドを使っています。 よく効いている気がします。