26
institution みなさまの要望を かなえる技術的な話 2013.8.31 c4ljp2013 株式会社ミライト情報システム 中村 晃史 @tmpz84 プラグイン化と継続的インテグレーション 13831日土曜日

みなさまの要望をかなえる技術的な話(プラグイン化と継続的インテグレーション)

Embed Size (px)

Citation preview

institution

みなさまの要望をかなえる技術的な話

2013.8.31 c4ljp2013

株式会社ミライト情報システム 中村 晃史@tmpz84

プラグイン化と継続的インテグレーション

13年8月31日土曜日

自己紹介• 株式会社ミライト情報システム

• 中村晃史(なかむらあきふみ)

• システムエンジニア

• オープンソース図書館システムEnjuTrunk

の開発に従事

• 司書資格取得中(まだ8単位...)

13年8月31日土曜日

オープンソース図書館システムを

開発するにあたっての開発方法をご紹介します。

13年8月31日土曜日

おかげさまで!

• 環境省

• 気象庁

• 笹川スポーツ財団

• 三菱経済研究所 三菱史料館

ミライト版Enju導入実績

さらに続く...13年8月31日土曜日

様々な要望• 和暦を入力したい。

• 返却日を任意の日付を入力したい。

• あなたの書いた文言が気にくわない。

• 右に寄せて。左に寄せて。

• 請求記号のフォーマットチェック変えて。

13年8月31日土曜日

• 和暦を入力したい。

• 返却日を任意の日付を入力したい。

• あなたの書いた文言が気にくわない。

• 右に寄せて。左に寄せて。

• 請求記号のフォーマットチェック変えて。

大変な現実

http://www.flickr.com/photos/hcwoodward/220512694/http://www.flickr.com/photos/safari_vacation/9188873971/

13年8月31日土曜日

金太郎飴じゃないよ

• 図書館によって想いが違うので重要視する箇所が違う...

• もちろん図書館システム以外でも。

13年8月31日土曜日

館によってシステムが別物?

13年8月31日土曜日

解決?:プラグイン化!

• Enjuは、プログラミング言語Rubyで作成している。

• 言語的に動的で柔軟に仕様を変更することが可能!

13年8月31日土曜日

それぞれ開発

図書館システム コア部

目録 検索貸出返却

統計

13年8月31日土曜日

目録

それぞれ開発・カスタマイズ

検索目録貸出返却

統計

図書館システム コア部

目録 蔵書点検

NACSIS

インターフェイス

入力項目追加独自のカスタマイズ

支部図書館向け機能追加

それぞれ独立して開発

13年8月31日土曜日

• プラグインごとに開発可能なので、比較的素早く修正できる。

• 世界中で開発しているオープンソースソフトウェアもプラグイン化して組み込む。

• 依存度を低くして柔軟に対応出来る。

組み合わせ自由!

13年8月31日土曜日

でもね!

• あっちが合わない。

• こっちも合わない。

• リリースしてから発覚 ...

• だってメンバー3人なんだもん(言い訳)

13年8月31日土曜日

テスト重要!

http://www.flickr.com/photos/cimmyt/4764098169/13年8月31日土曜日

• 紙のテスト仕様書を使って人海戦術でテストするの?

http://www.flickr.com/photos/31029865@N06/6553871055/13年8月31日土曜日

継続的インテグレーション

継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する[1]。特に、1990年代後半以降の開発においては、継続的インテグレーションをサポートするソフトウェアの使用する傾向が強まってきた。

http://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

ここ数年でさらに重要視されてきた。

13年8月31日土曜日

継続的インテグレーション

継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する[1]。特に、1990年代後半以降の開発においては、継続的インテグレーションをサポートするソフトウェアの使用する傾向が強まってきた。

http://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

重要なのは、テストの習慣!13年8月31日土曜日

テスト面倒!

http://www.flickr.com/photos/sawamur/2122182899/

いやじゃいやじゃ

13年8月31日土曜日

面倒なので自動テスト

• RSpec → 機能の自動テスト

• Turnip + Capybara + selenium

   → 画面の自動テスト

• Chef + Serverspec → サーバの自動テスト

自動で出来るテストは、PCにやってもらおう!PCの高速化で可能に。

13年8月31日土曜日

Jenkins

• 日本発の CI サポートツール

• 様々なテストを継続的に実施。

• テストでエラーがある場合は、通知。

http://jenkins-ci.org/

13年8月31日土曜日

Jenkins

晴れマークはテスト成功!

13年8月31日土曜日

素早く継続的に提供

• 素早く直して素早く自動テスト。

• 素早くお客様に確認。

• それを継続的に。

13年8月31日土曜日

システムの進化を持続

かわいいにしきアナゴちゃん13年8月31日土曜日

まとめ

• 繰り返すこと。

• 修正は怖くない。

• はやく確実に届けたいなー。

13年8月31日土曜日

ご静聴ありがとうございました。

http://www.flickr.com/photos/ecstaticist/2589723846/

13年8月31日土曜日

提供

13年8月31日土曜日