Skip to content

Instantly share code, notes, and snippets.

@suma
Last active December 20, 2015 08:39
Show Gist options
  • Select an option

  • Save suma/6102076 to your computer and use it in GitHub Desktop.

Select an option

Save suma/6102076 to your computer and use it in GitHub Desktop.
Jubatus API設計(coreの分離作業)

jubatus/coreをサーバから独立させたAPI設計・リポジトリ分離

目的

追記(2013/07/29, 17:36以降)

  • Jubatusがどんなフレームワーク・機能を提供するのか明確にする #250
  • 公開API/非公開モジュールの振る舞いや仕様を明確にし、それらを利用・メンテナンス可能な状態にする(一部の人間しか利用・メンテナンスできない状態を避ける)
  • ライブラリのみでJubatusを利用可能にする(ユーザを増やす)
  • Jubatusのアルゴリズム・fv_converterなどを拡張可能にする
  • 安定性・利便性・拡張性の向上

https://github.com/jubatus/jubatus/wiki/Meeting%3A2013_04_15 より一部抜粋。

概要

jubatus/core以下を1プロジェクト(単体の共有オブジェクト)として切り離して、API設計をしたいと思います。

jubatusリポジトリ以下は今のままで構いません。少なくとも、この作業に関してはサーバと完全に独立したリポジトリで、API・フレームワークを設計・開発する作業をやりたいと思います。

作業成果のアウトプット・時期は、厳密には決めていません。

  • プロダクトオーナー: @suma
  • 作業メンバー:@suma(まずは1人)、他は未定。適宜増やしたり、助言を求めることはありそう
  • 作業開始時期;すぐ(2013年7月)
  • 作業場所: (案)jubatus/jubatus_core リポジトリなどを作成(もしくは@sumaアカウント以下)。jubatusリポジトリとは分離する。
  • リリース時期:未定。12月頃のリリースを目指す
  • アウトプット:core以下のAPI化したコード、APIについて記述した文書(利用可能なクラス、ヘッダの一覧、使い方、デザインドキュメント、規約)・開発ポリシーなど

相談・了承を得たい点

  • jubatus_coreリポジトリ(仮)で@sumaをプロダクトオーナーとし、Jubatus core以下のAPI・フレームワーク設計・開発を進めてよいか
  • jubatus_coreでは、Jubatus 0.4.5が提供しているすべてのアルゴリズムを提供するとは限らないかもしれない
  • jubatus/jubatusのRPCサーバとは異なる(新)機能が増えることも考えられる(ただし、それより先にAPIの設計を固めるタスクから作業着手の予定であり、新機能などが出てくるのは数ヶ月先のことになると想像している)
  • 作業進捗は月1回を目処に、MTGで報告する。また適宜、設計内容についてレビュー・相談を行う
  • @sumaの作業は、これまで通りJubatusの開発に参加するが、作業量はやや落ちることを想定とする

coreのAPI設計をいま始める理由

https://github.com/jubatus/jubatus/wiki/Meeting%3A2013_04_15

0.4.3リリース後(2013-4-19)は、@sumaを中心に、JubatusのAPI・フレームワークの設計をする予定となっていたが、現状のJubatusを整理しているが、API・フレームワーク設計の作業をしないままそこで止まってしまっている。

また、(@sumaの)現時点でのJubatus開発の作業範囲はgithub issue対応やリリース等にとどまってしまっている。このままの状況で放置していては、単体のライブラリもしくはフレームワークとして進化していくのは難しい。また、jubatusリポジトリで作業を開始した場合、サーバの互換性や既存機能にとらわれてしまうため、それを避ける目的もある。

タスク

API設計

Jubatusにのっている各アルゴリズムのインタフェース、分散処理のインタフェースといったAPI・公開範囲・それらの振る舞い(仕様:機能・非機能・実装面)を明確にしたり、定義するのが作業の中心となります。

  • APIとしてpublic/privateを切り分けるのが直近のゴール
  • 最終的には全APIの仕様(文書も)を出す
  • 分散の仕組みも提供できるようにする
  • リファクタリング(クラスの継承関係の見直し、ディレクトリの整理も行う)
  • fv_converterの拡張は、直近のタスクにはし難い(1人で作業するにはリソース不足)
  • jubatus/jubatusをupstreamとして変更点を取り入れることも想定する(新バージョンの修正の追随、モデルの保存・読み込みや、依存ライブラリなど)

作業リスト(作成中)

  • 完了 jubatus/core向けのwscriptの作成
  • https://github.com/suma/jubatus/tree/core
  • 0.4.5〜0.5.0をupstreamとした成果物等の取り込み(逐次)
  • 近傍探索, 新mixer
  • 依存ライブラリの整理:pficommon移植・re2(正規表現)
  • モデル保存・読み込みの仕様
  • アルゴリズムのディレクトリ・モデルのストレージ構成の再設計
  • MIX処理の定義(仕様化)
  • アルゴリズムのAPI整理・仕様の定義
  • フレームワーク設計・開発(評価)

将来的に、決めること・相談することになる点

  • 分離したjubatus_coreをリリースした時点でのJubatusサーバ等のありかた
  • jubatusリポジトリの行方
  • 現状のように1リポジトリ、サーバを提供し続けるのか
  • coreをjubatusリポジトリへ残し、サーバを別リポジトリへ移してcoreを参照する(もしくはその逆で、coreだけを別リポジトリへ分離する)
@suma
Copy link
Author

suma commented Jul 29, 2013

  • MTGでの議論
    • 進めていくのに問題はない
    • リポジトリはjubatus org以下の作業でよい
  • TODO:
    • 目的を書く(何のためのものか)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment