albatrosary's blog

UI/UXとエンタープライズシステム

HTML5勉強会#11(名古屋)でYEOMANのお話をさせて頂き感じたこと

名古屋ではじめてお話させて頂きました。YEOMANを説明してSingle-page Applicationを開発するときにモックサーバをgruntタスクに追加すると良いです、というストーリーです。Webサーバの構築ができるできないに関わらずモックサーバを使う意味というのはあります。

 

 

レイヤ開発

アーキテクチャから見たレイヤは何層にもなりますが2000年頃の3階層アーキテクチャと呼ばれていたモデルが一番シンプルで考えやすいと思います。

f:id:albatrosary:20140306002956p:plain

 

1995年頃ORACLEデータベースがバージョン7.3を発売した頃は、実はビジネスロジックとデータ層もOracleデータベースで構築することがはやっていました。レスポンス的にもっとも優れていて集中管理できるシステムが良いとされていました。ビュー層は表示専門でVisual Basicなどを用いてODBC経由でデータベースからデータを取得し表示させるという役割です。

2000年過ぎるとJavaが頭角を現してきます。HTMLも使われだしてきますのでVIEW層をHTMLで行いビジネスロジック層をJavaでデータ層をOracleでというのがオーソドックなアーキテクチャでした。ビジネスロジックJavaで行う派とOracleで行う派がいましたがJava人口が多かったためJavaビジネスロジックを構築するのが当たり前になってきました。ただ、優秀なJavaアーキテクトはOracleで処理を行うレスポンスの良さは良く理解していたので(過去の書籍を調べると解ります)適材適所で判断していました。

2005年頃は、データ層での実装はほとんどなくなり単純にデータを格納する箱と化しました。こうなると必ずしもRDBMSを使う必要がなくなりNoSQLなどのデータベースが使われだします。データベースもそれほど性能が良くなくても問題のないものに入れ替わって行きます。

そして現在は、VIEW層にビジネスロジックが入り込んで来ます。Javaの役割は2000年以降の地位を若干奪われて来ています。ビジネスロジックを実装する部分というのは、若干他のレイヤと比べ複雑になる傾向にあります。これはそれだけコード量が多いことになるためです。

レイヤの概念とSingle-page Application

少し難しいお話になりましたがSingle-page Applicationで開発するというのは開発レイヤの移動を意味します。ビジネスロジック層がより上位(ビュー層の方向)に移動して来たことを意味します。そうするとコーティング量も増えるのも当然でやるべきことが増えるのも自然の流れです。しかし、以前データ層からビジネスロジックがなくなったようにJavaのレイヤからもビジネスロジックがなくなります(正しくは少なくなります)。

これに加えHTMLの表現力の向上により従来のビュー層でもコーティングが多くなっています。SASSやCOMPASSは、CSSの見た目を設定するという概念をCSSの見た目をコーティングするということに変化しています。

これだけやることが増えればテストコードも必要、チェックスタイルも必要それ以外にも。

どういうことか

やることが増えるというのは見方を変えると進歩の証(もしくはその過程にある)ということができると考えています。その昔Javaがそうであったように。

JavaScriptではビジネスロジックは無理」という表現はCOBOLの時代だと「ORACLEではビジネスロジックは無理」、ORACLEの時代では「Javaではビジネスロジックは無理」とか言われていたのです。無理とかそういう後ろ向きなことではなくどうすればできるのかアーキテクトなら考えるでき事柄だと思います。

最後に

モックサーバを使いましょうというお話から飛躍しましたが、つまりレイヤ開発をしましょうという意味です。

脱線しすぎで申し訳ございません。HTML5勉強会#11(名古屋)で登壇し、そこから過去起きたことを連想して記事を書きました。HTML5勉強会#11(名古屋)はとても楽しませて頂きました。短い時間でしゃべるというのは話すテンポ、内容共にスキルが必要です。45分しゃべる方が個人的には楽です。

様々な方から刺激を受けました感謝致します。ありがとうございました。

APIに関すること(2014/3/8追記)

APIとはご存知のようにApplication Programming Interfaceです。Interfaceとはレイヤ同士の接点または接点となるプログラムのことで、つまり「つなぎ役」です。UI/UXやRESTはAPIです。そのAPIの一部がシステム全体を定義できるはずもありません。

ただ、APIを定義することでレイヤが疎結合になりますので機能の一部として重要な位置づけになります。そしてシステムは各機能が有機的に結びついてはじめて成り立ちます。

UI/UXは人間とシステムのインターフェイスです。ガチガチのシステムエンジニアが論理的に作業を行える領域ではありません。感性が重要になるところです。最近デザイナーに求められるスキルが増しているのはこのためではないでしょうか?