Show page source of potm_0806_MobaSiF #16651

'''[wiki:sourceforge:ProjectOfTheMonth 今月のプロジェクト]'''

== [[Embed(ProjectOfTheMonth:potm_50x50.gif)]] 2008年6月 - !MobaSiF

 * '''プロジェクト名:''' !MobaSiF
 * '''登録日:''' 2008-05-07 16:22
 * '''プロジェクトホーム:''' http://sourceforge.jp/projects/moba/
 * '''動作環境:''' Web
 * '''ライセンス:''' Perl と同じ (Artistic License または GPL version 2)
 * '''言語:''' Japanese
 * '''プログラム言語:''' Perl (一部 C)
 * '''プロジェクト管理者:''' [user:s_kawasaki s_kawasaki],[user:tokiharu tokiharu]

=== プロジェクトの概要
DeNA のケータイ向けサービス「モバオク」「ポケットアフィリエイト」「モバゲータウン」などで利用されているケータイ向けウェブアプリケーションフレームワークをオープンソース化したものです。

=== プロジェクト管理者(能登 信晴氏)へのインタビュー
[[PageOutline(start=4, type=unordered)]]

==== このソフトウェアはどんなソフトウェアですか?

Perl のウェブアプリケーションフレームワークで、ケータイ向けサービスに共通的に必要される処理 (絵文字変換、キャリア/端末の判別、端末の認証、3キャリア共通テンプレートエンジン)が簡単かつ高速に行えるという特徴があります。

このフレームワークは[http://dena.jp/ DeNA](および関連子会社)の[http://mbok.jp/ モバオク]、[http://smaf.jp/ ポケットアフィリエイト]、[http://mbga.jp/ モバゲータウン]、[http://mbkr.jp/ モバコレ] などで長く利用されてきたものをオープンソース化したものです。

==== このソフトウェアの開発を始めたきっかけは?(なぜオリジナルのフレームワークを作ることになったのか)

作者の川崎によると、自社サービスを開発する際、思いついたことをすぐに機能として投入したかったので、既存のフレームワークではなく、完全に自分が把握できて自由にいじりやすい独自フレームワークを作ることにした、という話でした。

==== このソフトウェアの開発で苦労している点は?

正直、楽しく開発してきたので苦労した点はないと聞いています。

かわりに「工夫した点は?」と聞いたところ、

 * フレームワーク側では凝ったことをしない。
   * 不具合が発生した際、原因をつかみやすくするため。
   * アプリケーションのパフォーマンスをチューニングする際、フレームワークの処理時間が足をひっぱらないようにするため。

 * 起動コストがかからないように。
   * 起動時は最低限のモジュールを読み込み、アプリケーションロジックはリクエストに応じて動的に読み込む。

 * あまりガチガチにつくらず、緩めにしておき、後から変更できるように。
   * 最初にフレームワークを作って、その後「モバオク」のアプリケーションを書きながらフレームワークも必要に応じて変更していった。
   * 最近でもiモードID対応などを行ったが、そういう変更がしやすい。

という回答でした。

==== オープンソース化した背景と目的は?

DeNAのサービスではPerl、MySQL、Apache、[http://www.fastcgi.com/ FastCGI]、[http://qwik.jp/senna/FrontPageJ.html Senna]などのオープンソースソフトウェアを長く利用してきました。これらのソフトウェアの作者や貢献されている方に敬意を表します。DeNAとしても利用するだけでなく、何か貢献できないかと考えていたのですが、まずは我々が開発したフレームワークをオープンソース化してみようと考えました。

このフレームワークはケータイ向けのサービスを開発する際、とかく面倒な点をうまく吸収してくれますので、比較的簡単にケータイ向けサイトを作れるのではないかと思っています。ですので、!MobaSiF のおかげでケータイサイトが増えてきたという状態になれば、本当にうれしいです。正直そこまでいくのかまだわかりませんが。

あとは細かい話ですが、DeNAで働くエンジニアが家に帰って個人所有のPCやサーバなどの上でサービスを作ってみたいなと思ったとき、会社で使い慣れたフレームワークを使いたくても、これまではルール上、持ち出すことができませんでした。今回オープンソース化したことで、家でも慣れ親しんだ!MobaSiFを使ってものづくりを楽しむことができるという面もあります。この点は、社内のエンジニアからも好評です。

==== オープンソース化したことについて、周囲からの反応は?

おかげさまでいろいろなニュースサイトや、ブログで取り上げていただきました。とはいえ、オープンソース化自体初めてなので、この反響がどれくらいのものなのかは自分たちでもよくわからないでいます。実際はもうちょっと時間をかけて様子を見て、話を聞いたりしていかないとわからないのかなと思っています。

==== 今後の開発体制は?(社内開発したものを順次オープンソース版として公開していくかたちをとるのか、あるいはオープンソース版にソースツリーを一本化していくのか)

DeNA社内にはいくつかのサービスがありますが、実はフレームワーク部分だけを共通でソース管理しているわけではありません。フレームワークの構造自体、フレームワークとアプリケーションロジックをあまり厳密に分けておらず、サービスとして必要な処理をフレームワークに入れた方がいいと判断したら、各サービス勝手にフレームワークに手を入れるということをしてきました。この方が、各サービスで機動性と柔軟性を持って開発を進めることができるので。

そういう経緯があるので、オープンソース版とは独立して社内各サービスで利用しているものについてはそれぞれ開発が進んでいくと思います。サービスに依存しない機能は今後もオープンソース版に取り入れていけたらと考えています。

==== このソフトウェアのターゲット・ユーザーは?

ウェブアプリケーションフレームワークですので、もちろんウェブアプリケーション開発者ですが、中でもケータイ向けサービスを作ろうとしている人がターゲットになると思います。また言語としてPerlを前提にしていますので、ある程度Perlに慣れた方がターゲットかもしれないですが、逆に!MobaSiFを使うためにPerlを使い始めるという人がいたらそれはそれでうれしいです。

あとは、モバゲータウンなどDeNAのケータイサービスのシステムがどのようなコード、フレームワークで動いているのかに興味を持たれる方もターゲットになるかと思います。

==== 今後のプロジェクトの方向性は?

!MobaSiFのフレームワーク自体ではないのですが、近いうちにケータイ向け高速メール配信ソフトウェア(MTA = Mail Transfer Agent 的なもの)を関連ツールとして公開したいと考えています。日本のケータイキャリアの数は現状限られていますし、メールを受け取ってくれるキャリアのメールサーバの数も限られているので、送信側のサーバを増やせば高速にメールを配信できるというものではありません。また、あまり短時間に大量にメールを送りすぎると受信拒否されることもあります。かといってゆっくり送っていたら、必要なタイミングまでに多くのユーザにメールを送り届けることができません。そういった制約の中で、程よく高速にメールを送るためのソフトウェアです。

他に、NTTドコモ端末でHTTPSを利用したページで端末認証(iモードID取得)できない場合の代替機能なども必要ですし、先ほど述べた各サービスで取り込んだ機能を順次反映することなども考えられますが、その辺はマイペースでぼちぼち取り組んでいこうと思っています。

==== このソフトウェアあるいはプロジェクトについて誇れるところは?

なんといっても、モバオクやモバゲータウン(会員数1053万人、月間ページビュー156億) などの大規模実サービスで長く利用されてきた実績です。

あとは、シンプルで把握しやすくて、アプリケーションが書きやすいフレームワークであることです。我々は多機能であることより、シンプルでわかりやすく、処理が軽いことの方が重要だと考えていますので。

==== このプロジェクトでどこかやり直せるとしたら、どこを変更したいですか?

2003年から開発しているので、当時のケータイをサポートできるように作ったところから始めてここまで来ています。ある程度古いケータイ端末のサポートはあきらめて、現在主に利用されているケータイにターゲットを絞れば、もっとシンプルな処理にできるのになぁとは思っています。具体的に言うと、ページと絵文字のエンコーディングをUTF-8に統一してしまうなどです。必要となるDBの容量も若干増えますが、だいたいのサービスの場合それほど気にしなくてもいい問題だと思いますし。

==== あなたの本業は何ですか?

(まんまですが)ケータイサービス開発・運用エンジニアです。

==== あなたの開発環境は?

!MobaSiF開発者の川崎は、CentOS 4.xのサーバを!MobaSiFの開発に使っています。Samba を使ってサーバ上のディレクトリを手元のPC(Windows XP)にマウントし、秀丸エディタを使ってソースやドキュメントを書いています。SSH接続するためのターミナルには[http://www.chiark.greenend.org.uk/%7Esgtatham/putty/ Putty]を使っています。

動作確認にはケータイの実機ももちろん使いますが、PC上に[http://ja.wikipedia.org/wiki/Proxomitron Proxomitron]というHTTPヘッダを変更できるプロクシソフトウェアを走らせUser-Agentをケータイのものに変更できるようにし、Internet Explorer 6からこのプロクシ経由でサーバに接続して行うことも多いです。

==== このプロジェクトに貢献するには?

今のところ公開リポジトリなどは用意していないので、パッチなどmobasif at dena.jp というメールアドレスに送っていただければうれしいです。そして何より、バグなど発見されましたら、ご連絡いただきたいです。

==== !SourceForge.JPへの要望をお聞かせください。

サイトにいろいろ機能もあるようですが、今のところあまり使いこなせていないこともあって、あまり要望らしい要望はありません。

とりあえず、手っ取り早くソースを公開するのに便利で助かっています。また、[http://sourceforge.jp/projects/opensource/wiki/licenses OSI承認ライセンス 日本語参考訳]もライセンスを検討する際にとても参考になりました。どうもありがとうございます。

(取材日:2008年6月2日)

----
=== 記事へのご感想をお寄せください。
[[LineComment]]

'''[wiki:sourceforge:ProjectOfTheMonth 今月のプロジェクト]に戻る'''