ラベル mozaby の投稿を表示しています。 すべての投稿を表示
ラベル mozaby の投稿を表示しています。 すべての投稿を表示

2011年7月28日木曜日

Zabbix API用のjQueryプラグインを公開しました

MozabyはPhoneGap + JavaScriptで開発しているのですが、そのソースコードのうちZabbix APIにアクセスする部分のソースをjQueryのプラグインとして公開しました。

ソースはGitHubで公開しています。

プラグインだけだとイメージが湧きにくいですし、サンプルコードとしても利用できるので、一緒に簡単なデモアプリもつけてみました。デモアプリはブラウザからZabbix APIのリクエストを投げて、結果をそのまま表形式で画面上に表示します。

もともとはこのプラグインとは関係なく、Zabbix APIで何ができて、どんなデータが返ってくるのかを調べるために作ったのですが、このプラグイン公開にあたって書き直してみました。

デモアプリの使い方

まずはデモアプリの使い方です。githubからダウンロードしたtar.gzもしくはzipファイルを解凍して、できたディレクトリをそのままZabbixのWebインターフェースと同じサーバ上にアップロードしてください。(ZabbixのWebインターフェースと同じサーバ上でないと、ブラウザのSame Originポリシーに引っかかって動作しません。)

ブラウザからApache経由でアクセスできる必要があるので、RedHat系のサーバではデフォルトの/var/www/html以下にまるごと置いてしまうのが早いと思います。

アップロードしたら、必要に応じてdemo/main.jsに書いてあるZabbix APIのURLを変更します。

// Zabbix server API url
var url = 'http://localhost/zabbix/api_jsonrpc.php';

設定は以上です。あとはブラウザからdemo/index.htmlにアクセスしてください。

トップはログイン画面になっているので、APIアクセス権のあるユーザでログインしてください。Zabbix側の設定で"APIアクセス"にチェックがついているユーザグループに所属しているユーザでしかAPIにはアクセスできないので注意が必要です。

ログインが成功したら、ドロップダウンから実行できるAPIコマンドが選べますので、試しにhostとgetを選択して"Send Request"ボタンを押すと、

このように下に結果が表示されるようになっています。

JSON形式で返されたデータを1回だけループで回してテーブル表示にしているので、ネストしたデータはJSONデータがそのまま表示されますが、とりあえずどのようなデータが返ってきているかは分かると思います。

また、メソッドのドロップダウンの下にある"Parameters"をクリックすると、詳細なパラメータを設定することができます。

現時点ではcreateやupdate系のメソッドはリストには出てくるのですが中身は実装していません。今後少しずつ追加していくと思います。

jQueryプラグインの使い方

jQueryプラグインとして利用するときは、htmlファイルにダウンロードしたファイルのjqzabbixディレクトリ以下にあるjquery-1.4.2.jsとjqzabbix.jsを読み込むように指定します。

<script type="text/javascript" charset="utf-8" src="jquery-1.4.2.js"></script>
<script type="text/javascript" charset="utf-8" src="jqzabbix.js"></script>

まずはオプションを指定してオブジェクトを生成します。オプションには以下のものが指定できます。指定しない場合は以下のデフォルト値が利用されます。

server = new $.jqzabbix({
    url: 'http://localhost/zabbix/api_jsonrpc.php',  // Zabbix APIのURL
    username: 'Admin',  // ログインユーザ名
    password: 'zabbix',  // ログインパスワード
    basicauth: false,  // Basic認証を利用するかどうか
    busername: '',  // Basic認証のユーザ名
    bpassword: '',  // Basic認証のパスワード
    timeout: 5000,  // リクエストのタイムアウト時間(ミリ秒)
    limit: 1000,  // 一度に取得するデータの上限値(個々のリクエストのオプションで上書き可能)
})

host.getなどのリクエストを行う前に認証を行う必要があり、認証の前にAPIのバージョンを取得する必要があります。これらのメソッドはあらかじめ用意してありますので、以下のように実行してください。

server.getApiVersion();
server.userLogin();

これでserverオブジェクトのプロパティにAPIのバージョンと認証idが保存されますので、あとは通常のAPIリクエストを実行できるようになります。

このプラグインは内部でjQueryの$.ajax()を非同期で実行するようになっていますので、メソッド実行の返り値ではリクエストが成功したかどうかは分かりません。上記のメソッドは引数としてZabbix APIのオプションパラメータ、成功時の関数、失敗時のコールバック関数を指定することができます。例えば、

var success = function() { alert('success!'); }
var error = function() { alert('error!'); }

server.userLogin(null, success, error)

とすれば、成功時には"success!"のポップアップが、失敗時には"error!"のポップアップが出るようになります。これらのsuccess, errorコールバック関数は$.ajax()関数で指定するsuccess, errorコールバック関数と同様、引数にdataとtextStatusを受け取ることができます。

ここまでくれば、以下のようにAPIのリクエストを実行できます。

server.sendAjaxRequest(method, params, success, error)

methodはhost.getのようなZabbix APIで決められているメソッドを、paramsは同じく決められたパラメータを、successとerrorは上で説明したのと同じ成功時と失敗時に実行されるコールバック関数です。Zabbix APIのメソッドとパラメータの詳細はZabbix APIのドキュメントを参照してください。

最初にMozabyのソースの一部だと書きましたが、実は今のバージョンのMozabyはこのプラグインを使っていません。もともとMozabyを開発し始めたときはJavaScriptを勉強し始めたときだったので、あまりオブジェクト指向っぽい書き方はできていませんでした。今後こちらのプラグインを使うように移行しようと考えつつ開発を行っています。

現状はとりあえず動くものができたので公開します、という段階なので、まだ大きな修正を行う可能性があります。ある程度仕様が固まったら1.0のタグを打って、Mozabyのサイトに掲載しようと思っています。

意見や要望があればコメント、もしくはTwitterで@kodai74までお願いします。

2011年7月14日木曜日

Mozabyのリリースから1ヶ月経過した状況

iPhone用ZabbixビューワアプリMozabyを6/8にリリースしてから1ヶ月が経ちました。

リリースする前はバグが出たらどうしようとか、問い合わせが多く来てしまったらどうしようという不安もあったのですが、今のところ特に大きな問題もなく順調に推移しています。

iPhoneアプリをリリースするという経験ができたこともあり、せっかくなので発売から1ヶ月経った状況と感想をまとめておこうと思います。細かい数字を出すかどうか少し考えたんですが、隠すほどの売り上げでもないですし、具体的に出すことで何かの参考になるんじゃないかと思い記載することにしました。

前提として、Mozabyは2.99ドル(350円)の有償アプリです。アプリ、WebサイトApp Storeはすべて英語のみで、世界すべてのマーケットで販売しています。

販売数

まずは販売数ですが、6/8から7/7までに105本の購入がありました。購入頂いた方、どうもありがとうございました!正直、これは想定していたよりも多かったです。

販売数はZabbix SIAのサイトに掲載してから伸びが見られたので、やはり本家サイトに掲載してもらう影響は大きいですね。MozabyのサイトのトラフィックもZabbix SIAからのものが多くなっています。

マーケット

同じ期間のマーケット別販売状況は以下のようになっています。Zabbixのユーザが多く、かつiPhoneがある程度普及している国を表していることになると思います。

  • 日本 17
  • アメリカ 15
  • オランダ 9
  • ブラジル 8
  • ロシア 7
  • イギリス 6
  • フランス 4
  • 南アフリカ 4
  • デンマーク 3
  • ドイツ 3
  • ベルギー 2
  • カナダ 2
  • スイス 2
  • イタリア 2
  • トルコ 2
  • アルゼンチン 2
  • ハンガリー 1
  • スペイン 1
  • スウェーデン 1
  • オーストラリア 1
  • エストニア 1

日本以外ではアジアの国はなく、それほどZabbixは使われていないんだろうと思います。

また、発売当初は日本のユーザの購入が多かったのですが、後半は海外からの購入の方が多くなってきています。これは日本語の情報が少ないことが影響しているのかもしれません。

サポート状況

これまでに6件のサポート、4件の今後の機能追加に関する質問がありました。すべて英語での問い合わせで、ほとんどのメールがgmailからのものだったので、個人で使っている人が多いと見てます。

サポートの問い合わせはすべてZabbix側の設定の問題だったので、ドキュメントの分かりづらいところを修正したのみで、バグフィックスのリリースを出す状況にはなっていません。

機能の追加に関してはAcknowledgement(障害対応コメント)、グラフ、プッシュ通知、iPad版に関するものでした。このうちAcknowledgementとグラフの機能は現在開発中です。

1ヶ月経過した感想

とりあえず、サポートやバグ報告がそれほど多くなかったことが一安心というのが正直なところです。おかげで開発に時間を割くことができました。

これはリリースしてから思ったことですが、安易に無償アプリでリリースすると問い合わせ対応に追われる可能性があります。無償アプリの場合は「とりあえずダウンロードしてみる」ことができるので、有償でリリースした場合に比べてダウンロード数はかなり多くなると思いますし、本当にそのアプリが欲しいと思っている以外の人もダウンロードを行う可能性が高くなります。

特に個人の開発者は時間の制約が大きいと思うので、これからアプリを出してみようかなと思っている人はこの点も考慮しておくのが良いと思います。特に海外の人は日本人よりもサポート問い合わせやバグレポートを積極的に行う傾向があります。

Mozabyの場合はZabbixユーザのベースがあるため、欲しいと思う人は自分でApp Store内を検索するだろうと思っています。いまのところiPhoneのZabbixアプリはMozabyだけなので、とりあえずは機能の実装が一段落するまではこのまま緩やかにユーザが増えていくのが望ましいかなと考えています。

これから有償アプリを開発しようかと考えている人が気になるのがアプリの売り上げだと思います。上記の販売数から察してもらうと分かると思うのですが、正直iPhoneアプリは単価が安いので大した売り上げにはなりません。

一時期iPhoneアプリで一儲け的な話があちこちでありましたが、アプリマーケットができた当初は別として、今はゲームや人気のユーティリティなど購入対象が幅広く、かつApp Storeでトップ10に入るくらいのレベルでないと一儲けとはいえない状況だと思います。

iPhoneアプリをリリースするためには、Appleのデベロッパープログラム(年間10,800円)、開発用のMac、テスト用のiPhone、サポートサイト用のドメインとWebサーバの費用、それに加えて開発とサポートの手間がかかることを考えると、継続的に利益を出すだけでも苦労するんじゃないかと思います。そのような状況なので当然ながら企業としてiPhoneアプリだけで利益を上げることは至難の業だと思います。

少なくとも現時点でMozabyは販売したばかりですし、マーケットに競合アプリがないので多少の売り上げはありますが、数ヶ月すれば今より販売数は少なくなるでしょうし、他にZabbixアプリが出れば環境も大きく変わるでしょう。

逆に、個人で少しづつ開発したものが簡単に世界に販売できて、それなりのフィードバックをもらえるというのはかなり良い経験になると思いますし、そのようなプラットフォームは他にはあまりないと思います。こういったことを勉強だと思って少しづつでも時間を割ける人はぜひ挑戦してみると良いんじゃないでしょうか。

今後の予定

上にも書きましたが、Acknowledgementとグラフ機能は現在開発中です。開発状況は少しづつMozabyのサイトで公開していこうと思っています。

Zabbix API自体がまだ不安定な要素があることが心配ですが、複雑な仕組みを入れずアプリをシンプルに保つことができれば対応はそれほど難しくないと思っています。機能追加の開発を進めつつ、今年中にはリリースされるであろう2.0への対応も行っていきたいと思います。

Mozabyに対する要望や質問があれば、Twitterで@kodai74までコメント頂ければと思います。

ZabbixビューワアプリMozabyの情報はこちらからどうぞ。

2011年6月11日土曜日

Mozabyがリリースされました

6/6に無事MozabyがApp Storeの審査を通過して、6/8から各国のApp Storeで販売が開始されました。無事審査を通ることができたので、まずは一段落です。

App Storeの審査についてまとめておくと、

  • 5/29(日)に審査の申込。Waiting for Reviewステータス
  • 6/6(月)にIn Reviewのお知らせが届く
  • 20分後にレビュー完了、Processing for App Storeのお知らせ
  • 15分後にReady for Saleのお知らせが届く

各フェーズの通知はメールでも届きますが、iPhoneにiTunes Connect Mobileアプリをインストールしておけばプッシュ通知でも届きました。

思っていたよりもレビューが早かったことに驚きましたが、Mozabyのサイトのアクセス状況を見ているとIn Reviewステータスになる数日前にはアメリカ本土からのアクセスがあったので、アプリ本体のレビューの前から付随するチェックは開始されているのかもしれません。

ということで、今App Storeの審査を通そうとしている方はだいたい申請してから1週間程度はのんびり待っておくと良いと思います。

さて、これから次のバージョンに向けて新機能の開発を行っていきます。とりあえずはAcknowledgement(障害対応コメント)とグラフ機能の実装を考えています。グラフはいろいろなライブラリがあったりiPhoneでも重くならずに動くかどうかという課題があったりするので、ベストな実装には多少時間がかかりそうです。

公式サイトは英語のみなので、要望などがあればこのブログのコメント欄やTwitterなどでも意見を頂ければと思います。