« ソフトウェア開発は自己目的化しやすい | トップページ | チケット駆動開発を要求工学の品質特性の観点から考える~チケット駆動開発がAgile開発を必要とする理由 »

2013/06/26

RedmineのREST APIは素晴らしい~ビッグデータの手法をRedmineにも活用する

RedmineのREST APIを実際に試してみたら、とても素晴らしい。
分かったことをメモ書き。

【元ネタ】
Rest api - Redmine

Redmine REST API - r-labs

Rest Issues - Redmine

コマンドラインとブラウザで JSON API を手軽に試す | COLOPL Engineers' Blog | 株式会社コロプラ【スマートフォンゲーム&位置ゲー】

RedmineのREST APIを使ってみる | 『世界』はあまりにも広い

Redmine REST API の翻訳 | プログラマーズ雑記帳

【1】RESTはマッシュアップというWebサービスの一つ。
REST APIを使えば、Redmineからチケットの情報だけでなく、プロジェクトやユーザ、果てはWikiまでHTTP経由で取得できる。
RedmineのREST APIの内容を見ると、GETメソッドだけでなく、POST・PUT・DELETEもサポートしているようだ。
また、取得結果はXMLだけでなく、JSONにも対応している。
つまり、JavaScriptで操作したいなら、JSONの方が楽だろう。

RestAPIを使うには、Redmine REST API - r-labsのように、システム管理画面でAPIを有効にした後、個人設定画面でAPIキーを取得すればいい。
そのAPIキーをリクエストに含めてHTTP接続すれば、欲しいチケット情報を取得できる。

ブラウザ上でRESTを試すには、Firefox RESTClientやChromeのAdvanced REST clientを使えば良い。
URLを設定するだけで、GETやPOSTを実行できる。
藤原さんがBlogに書かれているように、Java製のRESTClientもあるので、ローカルPC上で試すこともできる。

Rest api - Redmineによれば、下記のURLにAPIキーをセットすれば、以下のURLでデータを取得できる。
Firefox RESTClientからPOSTして、データを登録してもいい。

# 全チケットを一覧表示
http://localhost:3000/issues.xml?key=XXXX

# チケット番号2の情報を表示(カスタムフィールドも含む)
http://localhost:3000/issues/2.xml?key=XXXX

# プロジェクトID=2の全チケット一覧を表示
http://localhost:3000/issues.xml?project_id=2&key=XXXX

# 全プロジェクトを一覧表示
http://localhost:3000/projects.xml?key=XXXX

# プロジェクトID=2のメンバーを一覧表示
http://localhost:3000/projects/2/memberships.xml?key=XXXX

#全ユーザ一覧を表示
http://localhost:3000/users.xml?key=XXXX

# 実績工数のすべての履歴を表示
http://localhost:3000/time_entries.xml?key=XXXX

# チケット番号8470の関連チケットを表示
http://localhost:3000/issues/8470/relations.xml?key=XXXX

# fooプロジェクトの全バージョンを表示
http://localhost:3000/projects/foo/versions.xml?key=XXXX

# Wiki名「マニュアル」のWiki内容を表示(日本語名もOK)
http://localhost:3000/projects/foo/wiki/マニュアル.xml?key=XXXX

# カスタムクエリを一覧表示
http://localhost:3000/queries.xml?key=XXXX

# システム管理画面で作成した全ステータスを一覧表示
http://localhost:3000/issue_statuses.xml?key=XXXX

# システム管理画面で作成した全トラッカーを一覧表示
http://localhost:3000/trackers.xml?key=XXXX

# システム管理画面で作成した全ての優先度を一覧表示
http://localhost:3000/enumerations/issue_priorities.xml?key=XXXX

# システム管理画面で作成した全ての作業分類を一覧表示
http://localhost:3000/enumerations/time_entry_activities.xml?key=XXXX

# プロジェクトID=2のカテゴリを一覧表示
http://localhost:3000/projects/2/issue_categories.xml?key=XXXX

# システム管理画面で作成した全てのロールを一覧表示
http://localhost:3000/roles.xml?key=XXXX

# システム管理画面で作成した全てのユーザグループを一覧表示
http://localhost:3000/groups.xml?key=XXXX

上記のGETメソッドを見れば分かるように、Redmineにある殆どすべての情報をHTTPレスポンスで取得できる。
このレベルまで対応したOSSのツールはあまりないのではないだろうか?

【3】RestAPIの使い道としては、スマートフォンなどの他のデバイスでRedmineを操作したい時や、他システムと連携してRedmineにある開発プロジェクトの進捗や品質に関する情報を取り込む時があげられるだろう。

前者の場合は、RedminePMのように、iPhoneやAndroid上でRedmineチケットを操作できる。
外出先でRedmineをちょっと見たい時に便利だ。
あるいは、Windows上に、メールソフトのようなリッチクライアントを作って、Redmineチケットの一覧を表示したり、チケットを一括更新できるような機能を作ってもいい。

iPhoneアプリRedminePM: プログラマの思索

後者の場合は、例えば、原価管理システムへRedmineチケットの予定・実績工数を取り込むことで、原価計算することも可能だ。
あるいは、Redmineのチケット情報を夜間バッチで取り込んだ後に、多種多様なメトリクスを日次で蓄積して、時系列で分析するやり方も可能だ。
つまり、経営者に日々の売上や月次のPL/BSを報告して経営判断に使うように、Redmineにある開発プロジェクトの情報を取り込んで、日次・月次のタイミングで進捗や品質に関するメトリクスを出力して、プロジェクト管理の強化に役立てることもできるはず。

【4】RestAPIが有効である理由は、Redmineのようにシステムに有用な情報が蓄積されていることが前提条件だ。
システムに蓄積されたデータが少なかったり、そもそも扱いづらいデータ構造ならば、RestAPIで提供してもあまり意味が無い。
逆に言えば、有用な情報を蓄積したシステムは、RestAPIのように外部の利害関係者へAPIを公開すれば、そのAPIでWebサービスをマッシュアップしてもらうことで、ビジネスチャンスが生まれる。

例えば、下記のマッシュアップ情報一覧サービスサイトを見ると、GoogleやTwitterやAmazonだけでなく、食べログやリクナビ、楽天、天気情報、書籍レビュー、ゲームレビューなどのAPIも公開されているらしい。

ワッフル/WAFL|みんなで作るWeb API&マッシュアップ情報一覧サービスサイト

マッシュアップの対象として、Googleマップだけでなく食べログの情報も組み合わせたWebサービスを作ったら、面白いのではないだろうか?

また、天気予報APIでは、気温や降雨量の情報を取得して、コンビニの商品の売れ筋傾向を見ることもできる。
あるいは、湿度情報・花粉情報・ビール指数・アイスクリーム指数・素肌乾燥指数などを組み合わせて、医療品やビール、アイスクリームなどの商品を売るタイミングを見つけ出すというWebサービスもありうるだろう。

天気予報API|活用方法

最近はビッグデータ活用と言われるが、これらの情報を組み合わせて、予期しない事象を見出すというクラスタ分析も簡単になった。
アルゴリズムは既にあり、HadoopやMauhtのようなレコメンドエンジンもあるのだから、アイデアとプログラミング能力さえあれば、いくらでも新しいビジネスを創出する可能性がある。

オープンソースのレコメンドエンジンMahout: プログラマの思索

Redmineにもビッグデータを活用できる可能性が秘められていると思う。

|

« ソフトウェア開発は自己目的化しやすい | トップページ | チケット駆動開発を要求工学の品質特性の観点から考える~チケット駆動開発がAgile開発を必要とする理由 »

ビジネス・歴史・経営・法律」カテゴリの記事

Redmine」カテゴリの記事

ソフトウェア工学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« ソフトウェア開発は自己目的化しやすい | トップページ | チケット駆動開発を要求工学の品質特性の観点から考える~チケット駆動開発がAgile開発を必要とする理由 »