まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:marketplace

IBM Bluemix には「サービス」と呼ばれる数多くの API 群が利用可能なものとして登録されています:
2015082501



これらのサービスは大きく3種類に分けることができます:
(A) IBM サービス
IBM のソフトウェア製品やソフトウェアサービスが SaaS / DBaaS として提供されているもの。
ベータ版も含まれる(ベータ版は原則的には無料)。
Bluemix のサービス一覧内では青い枠で囲まれている。

(B) ビジネスパートナーサービス
IBM のビジネスパートナー様が提供する SaaS / DBaaS が、Bluemix からも使えるようになっているもの。
課金体系や提供形態(無料枠の有無など)も含めてビジネスパートナー様が決める。
パスポートアドバンテージ契約時の割引対象外。
Bluemix のサービス一覧内では緑の枠で囲まれている。

(C) 試験提供サービス
(もともとの Cloud Foundry が提供している)オープンソース製品の SaaS / DBaaS や、
IBM サービスのベータ版になる前の段階で試験的に公開しているサービス。
サービスに関しては原則的には無料(試験提供のランタイムは他ランタイム同様の課金体系)。
Bluemix のサービス一覧内では白い枠で囲まれている。


これらの中の (B) ビジネスパートナーサービスは、例としては Twilio サービスであったり、SendGrid サービスであったり、Box サービスであったり、ClearDB(MySQL の DBaaS)サービスであったり・・・といった感じで、特定の目的についてデファクトスタンダードといえるような Web API が Bluemix のサービスとして登録されています。つまり Bluemix ユーザーは、これらの業界標準 API を使ったアプリケーション開発が、Bluemix 環境の中でも可能になる、ということを意味しています:
2015082502



で、よく聞かれるのがこの質問です:
  自分(うちの会社)が作った API も Bluemix のサービスに登録できるの?

答は条件と手続きを満たすことで「ビジネスパートナーサービスとして登録できます」です。本エントリではこの流れと手続について紹介します。

サービスとして登録するまでの手続きの流れは以下のようになっています:

(1) クラウドビジネスパートナーとして登録
https://www.marketplace.ibmcloud.com/joinnow/ のフォームから会社を登録

(2) IBM クラウドマーケットプレースチームによる内容確認レビュー
登録内容が確認されて、問題がないかを判断(問題がなかった場合のみ (3) へ)

(3) Terms and Conditions に同意
https://developer.ibm.com/marketplace/docs/vendor-guide/business-partner-agreements/

(4) IBM Cloud Marketplace Business Partner 条件に同意後、90日以内にマーケットプレース API を実装
https://developer.ibm.com/marketplace/docs/vendor-guide/integrating-bluemix/

(5) Bluemix 用の追加条件に合意

(6) マーケティングキットを使ってプロモーション開始
https://developer.ibm.com/marketplace/docs/marketing-kit/



手続きの流れはこんな感じ。で、問題は「(1) はどういう条件をクリアして、どういうサービスを提供すると (2) がクリアできるのか」ということです。

その答は技術的・サービス内容的に決まっています。まず技術要件がこちら:
- マーケットプレース API を使って支払い機能とプロビジョニング機能をサポートすること
- Bluemix 内のアプリで有用に使えること
- サービスはクラウドで提供されていること
- コンポーザブル(組み合わせ可能)であること
- バックエンドは負荷の変更に耐えられるようスケールすること
- 英語版ウェブサイトが提供されていること
- 無料トライアルが提供されていること


そしてサービス要件がこちらです:
- Description にサービスの価値が記述されていること/Bluemix を組み合わせた価値が分かるようにすること
- Bluemix でそのサービスを使う場合のドキュメントへのリンクが提供されていること
- 簡単に開始できるスターターアプリや、スクラッチで開発する場合のサンプルなどが提供されていること
- サービスのダッシュボードが Bluemix から簡単に使えること(例えばリンク URL だけで使える、など)
- プロビジョニングやバインドの処理が3分以内に完了すること
- サポート情報が記載されていること
- メンテナンス時のダウンタイムをゼロにすること
- Terms of Usage へのリンクが提供されていること
- Bluemix や他のサービスとのシングルサインオンが提供されていること、など


曖昧なものもあれば、少しわかりにくいものもあります。いくつかの要件について補足します。まず Bluemix は全世界で提供されるサービスであり、例えば「日本のユーザーだけに使ってほしいサービス」であっても、ここに登録する以上は全世界の Bluemix ユーザーに公開されます。そのため英語版のウェブサイトは必須となります。プラスする形で日本語や他言語ウェブサイトを提供いただくことは可能です。

そしてプロビジョニングや課金は Bluemix を通して行う必要があるため、その機能を実装していただく必要があります。とはいえ、これらの実装は今すぐに対応しないといけないというものではなく、申請が完了して、合格した後の話のようです。

ここで登録するサービスは Bluemix 内の SaaS / DBaaS として利用されることになります。ということはどのような負荷のかかる処理で利用されるかを事前に想定することができません。したがってサービスそものが安定稼働しつつ、スケール対応ができている必要がある、ということのようです。

などなど、上記項目のいくつかは申請フォーム内で明確にチェックする必要のある項目として用意されていますが、個別に入力フィールドが用意されていない項目もあります。それらは Description として、明確にアピールする形で入力する必要がありそうです。


で、ここが大事な点。これらの要件の中で上記の青字で書かれている5項目は (1) の申請時点でクリアしている必要があるのです。

つまり (1) の申請の段階で、この5項目に関しては全て Yes にチェックされていないと先に進めなくなるのです。「クラウド提供」や「コンポーザブル」な点はともかくとして、「スケール対応」や「英語版ウェブ」、そして「無料トライアル枠の用意」、というのは技術的にも営業的にも判断や対応が必要になる可能性もありますよね。ただ Bluemix を利用する立場としては、そのような対応がされていれば安心して試せるし、安心して使えるとも言えます。


実は僕も自分で作った API を Bluemix のサービスに載せられないかな?と考えた時期はありました。が、スケールに対応するのは結構大変だよな・・・と感じたのも事実。 

・・・でも、よくよく考えてみると API そのものを Bluemix で作って提供してオートスケールサービスまで付けちゃえばいいのか?あれ、Bluemix 使っちゃえば技術的には意外と簡単なのかも・・・ (^^;


Bluemix を使って自社の SaaS のビジネスに新しいチャネルを・・・とお考えの皆様、ぜひ前向きに検討して、御社のサービスを Bluemix サービスに登録するチャレンジをしていただければ嬉しいです。


なお、この手続に関して詳しくは英語版資料(PDF)を参照ください:
https://developer.ibm.com/marketplace/wp-content/uploads/sites/30/2015/05/IBM-Cloud-marketplace-Business-Partner-Program-Overview-deck-as-of-5-01-15.pdf


 

CentOS で(Eclipseを使って) Java の開発環境を整備するまでの手順を紹介します。
Eclipse を使うので、CentOS には X Window やデスクトップといったモジュールが導入されていることが必要です。


まず Eclipse のインストールそのものは簡単です。JDK を導入した上で最新版をダウンロードして展開してもいいですし、最新版でなくてもよければもっと簡単に yum でインストールすることもできます(以下、こちらの手順を使っている前提で紹介を続けます):
# yum install eclipse

yum を使う場合であれば JDK ごとインストールされてます。なお、2014/10/22 現在ですが、この方法でインストールされる Eclipse のバージョンは 3.6.1(Helios) でした。


加えてウェブアプリケーションの動作確認のため FireFox も導入しておきます:
# yum install firefox

インストールが完了したら、デスクトップのメニューから アプリケーション > プログラミング > Eclipse で起動できます:
2014102101


初回起動時はワークスペースをどのディレクトリに作るか聞かれます。特に理由がなければデフォルトのままでも構いません。"Use this as the default and do not ask again" にチェックを入れておくと、次回起動時にこの質問は聞かれなくなります:
2014102102


Eclipse が初回起動した時の画面です。チュートリアルなどは飛ばして、"Workbench" をクリックし、実際の作業画面に移ります:
2014102103


実際にコーディングを行う作業画面がこちらです。最初の段階では何もプロジェクトがないのでのっぺらぼうですが、ここに作業するプロジェクトを追加していくことになります:
2014102104


ただ、この段階ではまだ Eclipse に充分なプラグインが導入されていないため、Java のウェブアプリケーションを作るウィザードも使えませんし、デバッグ用のウェブアプリケーションサーバーも含まれていません。最低限必要な環境を追加していく必要があります。

Eclipse 作業画面のメニューから Help > Install New Software を選択して、プラグインの更新ダイアログを表示します。そして Work with: 欄に使っている Eclipse のバージョンに合わせた更新サイト(3.6.1 であれば http://download.eclipse.org/releases/helios)を指定します。しばらく待つと下に更新可能なプラグインの候補がカテゴリーに分類されて表示されます:
2014102105


ここから必要なものを選択してチェックを付けていきます。まずは "General Purpose Tools" に分類されている "Marketplace Client" にチェック: 
2014102106


続けて "Web, XML, and Java EE Development" に分類されている "Eclipse Java EE Developer Tools" と "Eclipse Web Development Tools" の両方に(上記と併せて3つ)チェックします:
2014102107


そして Next ボタンを2度クリックし、使用条件を確認した上で accept して、最後に Finish ボタンをクリックすると選択した3つのプラグインの導入が開始されます。プラグインの導入が完了すると Eclipse の再起動を促されるので、再起動("Restart Now")します。再起動後はこの3つのプラグインが有効になった状態で起動します。

この時点では Java アプリケーションプロジェクトを作成することはできるようになっていますが、まだデバッグ用のアプリケーションサーバーが用意されていません。Apache Tomcat などを別途導入してもいいのですが、ここでは簡単に導入できる Jetty をインストールして Eclipse 内から使えるようにします。


Eclipse の再起動後、今度はメニューから Help > Eclipse Marketplace を選択します(Marketplace も上記で導入しているので、再起動後からは使えるようになっているはずです)。

Marketplace ダイアログが表示されたら Find 欄に "Jetty" と入力して、Jetty 関連のマーケットモジュールを検索します:
2014102108


この結果表示されるモジュールの中から、以下の3つをインストールします:
(1) Eclipse Jetty
(2) Run-Jetty-Run
(3) WebLauncher

Marketplace では3つまとめてインストールすることができないので、これらを1つずつ探して "Install" ボタンをクリックする、と繰り返します。そして3つ全てインストールし終わったら、再度 Eclipse を再起動します。これで準備完了です。


では改めてこの環境で Java アプリケーションを作って動かしてみましょう。Eclipse のメニューから File > New > Project を選択してプロジェクトウィザードを出し、Web の下にある "Dynamic Web Project" を選択して "Next" をクリックします。プロジェクトの名称は適当に("TestWeb" など)入力します。他はデフォルトのまま "Finish" をクリックしてプロジェクトを作成します:
2014102109


このプロジェクトにテスト用の JSP ファイルを1つ追加します。プロジェクト名部分を右クリックして New > File を選択し、このプロジェクトの WebContent フォルダ内に test.jsp というファイルを追加します:
2014102110


追加作成した test.jsp を選択してエディタで開き、以下の様な内容を記入します。単純に現在時刻を表示するだけのページですが、Java を使っているので一応 Java ウェブアプリケーションと言えると思います:
2014102111


では作成したこのアプリケーションを実際に動かしてみましょう。プロジェクトを右クリックして Run As > Run Jetty を選択します:
2014102112


Eclipse 内で Jetty が(デフォルトでは 8080 番ポートで)起動します。これでこのプロジェクトが Jetty から参照できるようになっているので、同一マシンで FireFox を起動し、http://localhost:8080/TestWeb/test.jsp にアクセスしてみます:
2014102113
動作が確認できました。ちゃんと Java ウェブアプリケーションの開発や動作確認までできる環境が揃いました!



以下はオマケですが、せっかく Linux 版 Eclipse をインストールしたので、Windows 版ではできない Terminal 機能を紹介します。Eclipse 内のビューを使ってターミナルコンソールを起動する、というものです。

先程と同様にメニューから Help > Install New Software を選択して、今度は "General Purpose Tools" 以下の "Local Terminal" をチェックしてインストールして、Eclipse を再起動します:
2014102114


再起動後、Eclipse のメニューから Window > Show View > Other を選択し、Terminal の下にある Terminal を選択して OK をクリックします:
2014102115


すると画面右下に "Terminal" という名前のタブが1つ追加されます。まだ有効になっていませんが、ここがターミナルコンソールとして使えるウィンドウになります:
2014102116


実際にコンソールを使うにはタブ内の一番右のアイコン(マウスオーバーすると "New Terminal Connection in Current View" と表示される所)をクリックして、接続設定ダイアログを表示します。特に変更の必要はないので、そのまま OK ボタンをクリックします:
2014102117


ターミナルコンソールが有効になり、シェルとして使えるようになります。これで別窓のシェルにいちいち移動する手間が省けます:
2014102118


ただこの機能がまだ Incubation 段階だからなのかもしれませんが、このターミナルコンソールでは日本語が化けて表示されてしまうようです。日本語の入出力に依存するような自由な使い方はまだできない、という認識の元で使えそうです。






このページのトップヘ