albatrosary's blog

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

「なぜAngularJSを薦めるのか ー 個人的な思い」を読んで 〜 SIerで働いている君へ僕の思いを届けるよ 〜

小川充氏とはhtml5jエンタープライズ部で久しくして頂き「エンタープライズHTML5」というテーマで色々と議論させて頂いております。大変尊敬できる方であり自分が backbone.js を触ったのも同氏のブログを読んだのがきっかけの一つでもありました。最近ではエンタープライズにおけるAngularJSというテーマで勉強会などさせて頂いています。

今回のエントリーは同氏のブログ「なぜAngularJSを薦めるのか ー 個人的な思い」を読んで自分なりのエンタープライズ像を書こうかと思った次第です。書いているうちに「中二病」のような書き方になりましたが気軽ブログ的に記載します。尚「エンタープライズ限定」ですのでよろしくお願いします。

なぜAngularJSを薦めるのか ー 個人的な思い - I am mitsuruog

AngularJSはエンタープライズ向きか

「AngularJSはエンタープライズ向きであるか?」という問に対しては「YES」と即答します。体系化されているという点ではAngularJSかなと思います(jQueryでバリバリやりますとかちょっとないかなと思います)。AngularJSの何がいいかというと具体的には:

  • 構造定義(service/factory/controllerなど)
  • Dependency Injection(DI)
  • テスト(karmaなど)
  • 開発ツール(YEOMAN、特に angular-fullstack が好み)

が良くて、こういった諸々のものがもれなく利用できることから「Angularフルスタック」と呼ばれています。これに大規模プロジェクトを回すにはJavaScript の柔軟過ぎる部分(良くも悪くも)を補う意味で TypeScript を利用すれば間違いないのではと思います。ただし気になる点も幾つか(後ほど)。そして、これからエンタープライズでAngularJSを使うという人には読んで頂きたい資料:

Enterprise x AngularJS

開発ライフサイクルから見たAngularJS

AngularJSでのアプリケーション開発はガチ

AngularJSを使う開発は、ガチなアプリケーション開発なので開発プロセスでの全体最適化が必要です。
もう話題としては尽きたことではありますが、AngularJSなどのいわゆるSingle-page Applicationを構築するときに必要となる技術は他にもあります。通信/APIサーバ/セキュリティなどなど考えるべきことは多くあります。「AngularJSでアプリケーションを作る」ということは「Single-page Applciationを作る」ということなので必然的にバックエンド設計も「正しく」設計・実装できないと、せっかくのAngularが台無しになります。実際に多くのプロジェクトで台無しになっているケースが多いのではと思いますがどうでしょう。そしてCIツール一つとっても「Single-page Applicationやるのになぜそれを選んだのか?」と疑問を持ちたくなるようなデシジョンするアーキテクトもいて「単に使い慣れたから」という理由での選定は成り立たないです。
こういったことがAngularJSの欠点でもありますが、エンタープライズ向けのJavaScriptフレームワークが他にあまり見当たらないのも事実だと思います。エンタープライズ開発の場合はスキルセットの異なる開発者を集める文化がありますので何かしらの手法等で束縛するものが必要になります。コーティングガイドとかもその一つです。
AngularJSはちょうどいい束縛感があるのかなと言ったところです。束縛されるので好き嫌いが生じる要因にもなります。

SIerって変化に耐えられるの?

Web技術の進歩はとてもハイスピードで進行しています。いわゆるSIerが果たしてこのスピードについてこれるのか疑問で、社員向けにAngularJS開発マニュアルを作って配布した頃にはバージョンも変わり何の役にも立たないということもあります。AngularJS 2.0の検討が進んでいますが、たぶん1.3とは装いがかなり変わるのではないかと思います。そのときSIerエンジニアは「どのような対応をすれば良いのか」を考えておく必要があります。ついでJavaScriptにしてもECMA 5系から6系へと変わる時期に差し掛かります。SIerには片手間でJavaScriptを使っているエンジニアがほとんどだと思いますので、この点においても問題かと思います。
そして、仕事のやり方、特に環境を変えなければ難しいと思えるいくつかのことがあります。よくあるのが社外の人とコミュニケーションを嫌うというSIer文化が破滅的だと思います。情報が欲しいならまず自分から情報を公開しないと集まりませんから。
このようにWeb技術の進歩は著しく内向きなエンタープライズには中々ハードルの高い開発ではないかと考えます。頑張る割には成果(売上)が上がらないとかもありますので、将来を見据えて取り組んだ方が良いかと思います。

ついでに エンタープライズUX

11/19にHTML5 Expertsで UX に関する記事が書かれました。素晴らしい記事です。

いま、UXを語るのはなぜ悩ましいのか?─長谷川恭久ロングインタビュー | HTML5Experts.jp

これをエンタープライズでとなると話がかわります。「難しい」の一言になります。なぜか。ユーザ体験を得るはずの利用者は仕様策定に入れないのが現実のエンタープライズです(ちょっと言い過ぎ)。社内SEが多少ユーザヒアリングしまずが、実は本当の利用者ではなくシステムを使わない部長とか課長だったり(そうでない場合ももちろんあります)。その社内SEとSIerの営業SEが打ち合わせ、そして営業SEと実装するSEが、、、そしてSEが実装を受け持つ外注と打ち合わせするという流れ。外注に発注するときの条件として「UX的な◯◯を考慮して・・・」とあっても距離があり過ぎて理解不能な要件になることが多いのではないかと思います。なのでエンタープライズUXはないかなと考える次第です。

更についでに エンタープライズアジャイル

要件が決まっているエンタープライズアジャイルって何でしょう?というのがそもそもの疑問であります。無駄なドキュメントを作らないとか手戻りができるとかと聞きますが、ウォーターフォールでも無駄なドキュメントは作らないし手戻りだって必要ならしますから。個人的にはアジャイル(風なの)は利用させて頂いております。特に下記本は超おすすめ。

Amazon.co.jp: 実践 反復型ソフトウェア開発: 津田 義史: 本

最後に

今回はマイナス思考的な書き方になり、かつ、少し粗めに書きましたが、自身はエンタープライズIT領域を好み仕事しています。エンタープライズIT業界もより柔軟に技術者が面白いと思えることが積極的にできるようになるといいね。