【次世代開発フォーラムレポート】
■■ ソフトウェア開発の新潮流~Rubyの場合~ ■■
■開発のニーズへの対応
現在のソフトウェア開発は短納期、低価格、高品質というニーズが増えている。
これらを実現するには開発を小規模化する事が必要であり、以下の利点がある。
・生産性が高い
・伝達コストが低い
・変化に強い
生産性が高いとは少ないコード量で処理を記述できること。
(アセンブラで記述するよりは高級言語等を使用した方が生産性が高いのは明らか)
Ruby on
Rails(DBを利用するWebアプリケーション用フレームワーク)と
Javaだと前者のほうがコード量が1/10で済む。
必ずしも生産量が1/10になってるという訳ではないが、コード量が少ないことにより、
メンテナンス性もいいし、開発者の精神(圧迫)コストも下がる。
生産性が高ければ、少人数で開発ができるため、
伝達コストも下がり、変化(仕様変更等)にも強くなる。
顧客満足度は開発人数が少ないほど、高くなる傾向がある。
■Rubyの特性
動的な型を持つ言語であること。
※動的な型とはプログラムの字面上には型情報がなく、データの型は実行時にだけ決まること。
この場合実行時に遅くなる可能性があるが、最近はマシンパワーも増大しており
それほど大きいインパクトはない(ネットワークやDBの方がよっぽどボトルネックになる)。
(Ruby on Railsの場合)制約の多い言語であること。
制約が多いということは効率よく開発ができるともいえる。
適用範囲が広いフレームワークは逆に開発効率が下がる場合もあり、
ケースにより使い分ける必要がある。
■■ プログラマ魂:保存・変形・視座・多重・名前・位相 ■■
■プログラマはこうあるべき
プログラムの概念的な話を幾何学で表現。
学習曲線とは最初と最後はゆっくりで途中は比例的に上昇する曲線。
よって勉強するには、一番勉強がノっている時に新しい勉強を始めると、
ずっと右肩上がりで能力を伸ばすことができる。
プログラムの定数、変数、記号の語句の出現頻度を調べ、
クオリティをはかることができる。
プログラムを作りっぱなしにせず、評価・研究を行うべき。
可視化上手はプログラミング上手である。
■■ 今、開発者は何をすべきか?変化に対応し続けるシステム開発のヒント ■■
■■ ~大規模企業システムの現場から~ ■■
■開発の現状
最近の開発に関して、プロジェクトの成功率60%、品質OK60%、納期OK50%
というアンケート結果が得られた。
原因は以下の通りであり、
(マクロ)
・経営とITの緊密化
・ニーズ多様化、複雑化
(開発現場)
・短期開発、無理な納期
・頻発する仕様変更
・開発案件の増加による人手不足
問題克服する取り組みとして、以下を実施した。
・開発手法の標準化
ドキュメントの雛形を提供、開発ノウハウ集をドキュメント化。
また開発ルールを局在化することにより生産、品質を向上させる。
基本的にはスキルのない人でも開発できる環境をつくる。
(ある程度のレベルは開発者養成を行い保持する)
・開発状況の見える化
・フレームワーク活用
フレームワークを活用するにはそれなりのコストがかかり、
逆に開発効率を下げてしまう可能性があるので、
利用ガイド等を作成し、開発をサポートする。
■今後の注目技術
Javaバッチ
通常はバッチ処理にはCOBOLが使用されるが、以下の問題点がある。
・オシュア(インド、中国)にCOBOL開発者が少ない(Java系多い)
・モジュールの共有ができない
・資産の二重化
Javaバッチを採用することにより、開発効率を上げる事にしたが
以下に挙げる様な問題点も判明している。
・性能が悪い(遅い)
Unicode変換、バイトコードの実行時コンパイル
・リソース消費が大きい
インスタンス生成、JVMの複数起動
Javaバッチの問題を解決するために、
必要なタイミングで文字コード変換、インスタンス生成を
行えるような方法を模索中。
■■ EclipseとAjax開発 ■■
■開発ツール
今まではAjax開発には欠かせないJavaScriptには、
クロスブラウザやデバッグの問題があったが、
フレームワークやタグライブラリ等の開発ツールの出現により緩和してきている。
(参考)
フレームワーク
Rico、Dojo、Prototype等
ラグライブラリ
Ajax、GWT(Google Web Toolkit)等
■MyEclipse
講演者(http://eclipsewiki.net/eclipse/の製作者)が推していた、
EclipseベースのJ2EEWebアプリ開発のIDEである。
Ajax、Struts、JSP等の技術をサポートしており、
その他開発ツールもDB操作、コードアシスト(HTML,JSP,XML,CSS)、
JavaScriptデバッガ、スニペット(コードの断片集)等充実している。
■Ajaxでの問題点
・ソースコードが誰でも見れる状況にあるので、難読化する必要がある。
・自動テスト手法が確立していない(HttpUnit程度のものしかない)。
■■ WebシステムにおけるOSSの最新動向 ■■
■OSS(Open Source Software)の現状
オープンソースを開発に導入する機会は年々増加している。
以下にメリット・デメリットを挙げる。
[メリット]
・初期導入費が安い
・カスタマイズが可能
[デメリット]
・扱うスキルのある人がいない
・他のAPとの互換性
・サポートの不安
・日々新しいバージョンが出る
・実績が少ない
これからは今後のIT戦略を踏まえて、OSSを選択していく必要がある。
■WEB開発の大きなトレンド
・DIコンテナ
コンポーネント間には相互の依存関係が発生し、
再利用ができないという問題があったが、
DIコンテナではコンポーネントの相互関係を定義ファイルに記述して
利用するため、互いの依存関係が低くなる。
(例)Seaser、Spring
・AOP(アスペクト志向)
作成したコンポーネント群に対してアトヅケで機能や処理を挿入可能。
・O/Rマッピング
DBの各テーブルをオブジェクトとして操作可能にする機能。
(例)HIBERNATE
■OSSに利用法
先のデメリットに挙げた様にOSSにはいくつかの問題点が存在するが、
イントラマート(講演者の会社)ではそれらの問題を解決するもの、
OSSを組み合わせたフレームワークを商品として提供している。
開発したフレームワークのいくつかは、Seaserファウンデーションに寄贈している。
(http://oss.intra-mart.org/)
■■ TRICHORD
プラクティス大集合 -日々の改善と実践の記録 ■■
■チェンジビジョン(講演者の会社)
現在Jude(UMLモデリングツール)を開発している会社。
現在はTRICHORD(トライコード)という、プロジェクトの状況可視化ツールを作成中である。
随時更新中でhttp://trichord.change-vision.com/index_ja.htmlから無料版がDL可能。
■プラクティス
プラクティスとは開発プロセスや実践事例の事で、
TRICHORDを開発して実際に行った開発プロセスを講演で紹介した。
プラクティスの特徴
・実際に行う
・自分で方法を発案する(ある程度の原則は存在するが・・)
・試してみる(ダメなら執着しない)
・目的を明確にする
・楽しくわかりやすい
■実践例
●プロジェクトキックオフ
・席替え、模様替え
最初のチームの共同作業となる。
新しいメンバーが追加されたら再度行う。
・ちょっとした打ち合わせスペースを用意し、
別室で行う程でない話し合いを行う。
・開発用のアプリ(ライブラリやツール等)を作り、
開発プロセスの感覚をつかむ。
・新メンバーが参加した時、チーム全員でホワイトボードに
好きなものを書き、チームにとけこみやすくする。
●リリース
・リリースゴールの共有
開発者がリリース時のイメージをつかむ。
・リリースプランニング
リリースまでのストーリーをカードに起こす。
・リリースタイムアタック
リリース時間を記録して競う。(早くなるとうれしい)
・バーンダウンチャート
残作業を可視化
・リリースパーティー
リリース終了後にささやかなパーティーを行い、開発者の疲れを癒す。
→評判がいいらしい
・タイムボックスを意識
作業単位を2~2.5時間とし(基本的ペアプロ)、問題がある場合は
その単位でアラームを挙げる(ダラダラ作業しない)。
・ペーバープロトタイピング
画面や処理の振る舞いを紙に簡単に記述したもので検討する。
・ふりかえり
毎週金曜日に一週間の自分の作業を振り返る。
・タスクのサインアップ
仕事を割り当ててもらうのではなく、自分でやりたい仕事を選択する。
(モチベーション増加)
・バグレゴ
バグ報告をレゴ(おもちゃのブロック)を積むことで報告する。
モノには強力なメッセージ(インパクト)がある。
・ニコニコカレンダー
日々の気分をカレンダーに記述する(よい、普通、悪い)。
情報を集計するとチームのムードがわかる。
(リリース直前に『悪い』が集中している等)
■■ 感想 ■■
講演で言われていたように、最近のニーズとして短納期の開発が増えており、
各社、開発ツールや開発手法で生産性を上げる様、努力しているようだ。
今回参加して、知らない用語や技術情報などに触れることができていい勉強になった。
ただし技術系のセミナーと違い、講演者の私見も混在している意見もあるので、
新しい技術または開発動向に関しては、自分でも調査・分析を行って
正しい情報を取得するようにしたいと思います。
以上
最終更新:2006年12月27日 11:26