このページの本文へ

前へ 1 2 次へ

エンジニア・インタビュー 第2回

開発者とは“やったもの勝ち”  NTTデータのOSS「Hinemos」

2007年11月22日 11時48分更新

  • この記事をはてなブックマークに追加
  • 本文印刷

作業の細分化とコンピュータへの依存度の増大により、システムとネットワークの安全性がさらに重視されるようになった。しかし、監視・管理のシステムは高価で、また操作が複雑なものが多い。その中、導入しやすさを謳ったオープンソースの監視・管理ツールのHinemosが2005年にリリースされた。リリースから2年、当初はメンバーの1人であったが、現在は開発リーダーを努める大上貴充さんに、開発から現在に至るまでの開発話を聞いた。

NTTデータ

株式会社NTTデータ 基盤システム事業本部 オープンソース開発センタ 技術開発担当 大上貴充さん(31)              2000年富山大学大学院理工学研究科電子情報工学専攻修了後、株式会社NTTデータに入社し、画像・映像処理の研究に携わる。その後、2004年よりOSSを用いたシステム構築、運用管理ツールの開発部署に異動。現在に至る。

ユーザーの意見が活かされる開発へ

 Hinemosは日本発のOSS(Open Source Software)で、複数のコンピュータを一括して監視・管理・運用可能なツールである。その開発は独立行政法人情報処理推進機構(IPA)の公募からスタートし、2005年9月に開発がひととおり終了し、公開された。そして2007年にはソフトウェア・プロダクト・オブ・ザ・イヤーという賞を獲得している。このHinemosの最大の特徴は管理対象とになる複数のノード(コンピュータ)を任意にグルーピング・階層化し、一括管理できることである。たとえば、OSやサーバーの種類別などにしてグループごとに管理できるというわけだ。また、一度設定すれば、後はグループに追加するだけで簡単に管理できるのもメリットである。

NTTデータ

監視管理機能画面。管理対象のノードを「ping」や「syslog-ng」などさまざまな方法で監視できるほか、リソース情報をリアルタイムにグラフ表示することが可能となっている。

NTTデータ

ジョブ管理機能画面。ユーザーが作成したジョブを複数のノードで連携させて定義・実行することが可能。ジョブの進捗情報も一覧画面で確認できる。

NTTデータ

リポジトリ情報管理機能画面。コンピュータ群の構成情報や資産管理情報などをグループ化、階層化して管理できる。

「Hinemosはオープンソースプロダクトをふんだんに取り入れたアーキテクトで、開発ではその“組み合わせの妙”がポイントになりました。オープンプロダクト同士がうまくマッチするか、しないか。この部分は作る側から見て非常におもしろい部分です。ただ、複数のオープンソースを組み合わせていることで、バグの原因がどこにあるのかが判明しにくかったり、プロダクトの深い部分で起こっている問題には手を出せなかったりと難しい面もたくさんありました。たとえば、ジョブスケジューラで実行されるデータベースレベルでのロック機構を、パフォーマンスの観点からメモリ上でのロック処理に変更するという場合。その時は、ソースコードを追いかけることで、別の実装クラスではメモリ上でのロック機構を利用できることを突き止め、代替として、この手法を利用するようにパラメータを変更して対処しました」

 オープンソースプロダクトはコードを自由に見られる一方で、親切に説明してくれるドキュメントが少ない。そこで、開発者のコミュニティに参加するなどにより、情報の収集や問題を相談し解決したという。

 また、大上さんはOSSの開発に関わることによって、働くスタイルも変わったそうだ。Hinemosに関わる前は研究職というポジションで、黙々と映像処理などの研究をしていたが、ある種ユーザーの顔やマーケットが見えないところもあったという。しかし、HinemosのOSSという特性上、多くのユーザー、開発者と接点を持ち、それを開発に活かせるようになったのだ。

「Hinemos開発の経験を通して、使う人の立場を強く意識するようになりました。そこでHinemosは作りもシンプルにし、導入するのも簡単にできるようにしたのです。Hinemosでは、導入に関するドキュメントもしっかりと用意し、インストールもインストーラーで簡単にできるようにしています。また、エンジニア視点で開発すればついオーバースペックになりがちなところを、ユーザーの意見を重視し、付加する機能に優先順位を付けて採用しています」

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

アスキー・ビジネスセレクション

ASCII.jp ビジネスヘッドライン

ピックアップ