IBM Bluemix の利用者に提供されているサービスの1つに IBM DevOps Services(以下、IDS)があります。名前の通り、DevOps のための統合環境サービスなのですが、事実上「ウェブから使えるエディタ」として認識している人もいらっしゃるかもしれません:

もちろん統合環境であるからには、こうした「ウェブだけでソースコードが編集できる」機能があることも重要ですが、それだけではありません。ソースコードのバージョン管理として事実上の標準となった Git のリポジトリ機能も使えますし、ビルド&デプロイの管理機能も付属しています。これらはバラバラに(=自分の使い慣れたツールと組み合わせて)使うこともできますし、この環境だけで全て利用することもできます。今回はその前者の例として、IDS を Git のリポジトリとして(のみ)使う例を紹介します。要はソースコードの編集は普段使い慣れたローカルマシンのエディタを使いつつ、ソースコードのバージョン管理に IDS を使おう、という考え方です。必ずしも Bluemix アプリケーションではない、普通のウェブアプリケーションやツールのソースコード管理としても IDS が使える、という使い方をイメージしています。
まずは IDS にウェブブラウザでアクセスして IBM Bluemix の ID とパスワードでログインします:
http://hub.jazz.net/
初めて IDS を使う場合はここでユーザー名の別名を聞かれたりするので適当に決めて答えておきましょう。ただ、ここで決めた名前がこの後作成する Git リポジトリの URL の一部になるのでそのつもりで。
ログイン直後の画面です。既にプロジェクトを利用していたりすると、それらが表示されている画面になるので、見た目は人によって多少変わるかもしれません。以下の画面はまだ何も使っていない、まっさらな状態でのプロジェクト一覧画面です:

では早速 Git リポジトリとしてのプロジェクトを1つ追加しましょう。"Start coding" と書かれた大きなアイコン部分をクリックします:

ここでプロジェクトの名称(以下の例では "my1stApp")を指定します。今回はこの IDS 内に新しいプロジェクトを作成するので、"Create a new repository" を選択します:

続いてリポジトリの作成先を指定するので、"Create a Git repo on Bluemix" を選択します:

するとアイコンのすぐ下に今から作成する Git のリポジトリ URL が確認できます。後で再確認することもできますが、一度ここでメモしておきましょう。 また作成するリポジトリにサンプルの README を含めるかどうかを選択するチェックボックスが表示されています。ここでは最初に README を含めておくことにします(任意です)ので、チェックボックスを ON にしておきます:

続けてオプションが3つ表示されています。上から順に (1)プライベート(非公開)リポジトリにするか、(2) Scrum 管理機能を追加するか、(3) Bluemix アプリケーションプロジェクト機能を追加するか、です。この例では全て OFF にしていますが、いずれも必要に応じて ON/OFF してください。最後に "CREATE" ボタンを押すと、この設定で Git リポジトリが作成されます:

Git リポジトリが作成されると、このような画面に切り替わります。指定した名前のプロジェクトが生成され、その中に License.txt と(オプションで指定した)README.md が含まれている状態で生成されています:

画面内で Git のブランチ(この図では master)を表示する部分の右側にダウンロードアイコンが表示されています。現在のブランチの状態でソースコードをまとめてダウンロードする場合はこのアイコンをクリックします(今は行わなくて構いません):

また、更にその右側に "Git URL" と書かれた箇所があり、そこをクリックすると改めて Git リポジトリの URL を確認することができます。忘れてしまった場合はこの方法で Git URL を確認してください(このすぐ後に使います):

では試しにこの Git プロジェクトの中身を別マシンに clone してみましょう。Git が導入されている環境下で以下のように自分の Git URL(以下の例では https://hub.jazz.net/git/teyande/my1stApp)を指定して git clone してみます:
成功するとこのように License.txt と README.md を含む my1stApp というディレクトリが作成され、現在のリポジトリがクローンできたことがわかります:

次にこのプロジェクトディレクトリに移動して、ローカルマシンで変更を加えてみます。本当はここでは vim とか Sublime などの普段使い慣れたエディタ等を使ってファイルを編集することを想定していますが、以下の例では echo コマンドを使ってシンプルな phpinfo.php というファイルを1つ追加しています。何か新しいテキストファイルを1つ(以上)同じディレクトリ内に作成してみてください:
この時点でディレクトリにはもともと存在していた2つのファイルに加え、いくつかのファイルが追加されている状態になっています:

ではこの変更を Gir リポジトリに反映させましょう。git add して、git commit します:
こんな感じでローカルリポジトリへのコミットが成功するはずです:

では最後に、このローカルリポジトリへの変更をリモートリポジトリへも反映させるべく、git push します。途中でユーザー名やパスワードを聞かれるので、IBM Bluemix のIDおよびパスワードをそれぞれ指定して入力します:
↓こんな感じになれば成功です:

git push が成功すると、IDS 内のファイルにもその変更が反映されているはずです。この例では元のプロジェクトには存在していなかった phpinfo.php ファイルが git push によって送り込まれ、プロジェクトファイルの一部として追加されていることがわかります:

とりあえず Git リポジトリとしての機能が使えることがわかりました。ただこれだけなら GitHub と変わりません。GitHub にない機能の1つとしては「(無料で)プライベートリポジトリが持てる」ことが挙げられます。例えば今回は作成時に Private チェックボックスをオフにしていたので、この時点ではリポジトリは公開されており、同じ URL を誰からでも(IBM Bluemix のアカウントを持っていない人からでも)参照することができる状態になっています:

公開状態で作成されたリポジトリをプライベートな非公開状態に変更するには、リポジトリ画面右上の歯車アイコンをクリックし、左メニューから "OPTIONS" を選ぶと、"Private" のチェックボックスが現れます。ここにチェックが入っていれば非公開、入っていなければ公開状態となります:

非公開状態に切り替えてみましょう。"Private" チェックボックスを ON にして、"SAVE" ボタンをクリックします:

この状態で、同じリポジトリ URL にアクセスすると IBM Bluemix アカウントでログインしていない場合はログインが求められるようになります。また自分(リポジトリのオーナー)以外の ID でログインすると、以下の様な「非公開です」という画面だけが表示されて、中身を確認することはできなくなります:

Git のリポジトリを非公開状態で管理しようとすると、GitHub では有償アカウントが必要になります。GitHub 以外にオープンソース製品などで独自にプライベートリポジトリを作れないことはないのですが、IBM Bluemix の IDS を使えば、実質的に無料でプライベートリポジトリまで含めて利用することができる、ということになりますね。 IDS は単なる Git のリポジトリ以上の機能がありますが、この無料のプライベートリポジトリ機能だけでも魅力的だと思っています。

もちろん統合環境であるからには、こうした「ウェブだけでソースコードが編集できる」機能があることも重要ですが、それだけではありません。ソースコードのバージョン管理として事実上の標準となった Git のリポジトリ機能も使えますし、ビルド&デプロイの管理機能も付属しています。これらはバラバラに(=自分の使い慣れたツールと組み合わせて)使うこともできますし、この環境だけで全て利用することもできます。今回はその前者の例として、IDS を Git のリポジトリとして(のみ)使う例を紹介します。要はソースコードの編集は普段使い慣れたローカルマシンのエディタを使いつつ、ソースコードのバージョン管理に IDS を使おう、という考え方です。必ずしも Bluemix アプリケーションではない、普通のウェブアプリケーションやツールのソースコード管理としても IDS が使える、という使い方をイメージしています。
まずは IDS にウェブブラウザでアクセスして IBM Bluemix の ID とパスワードでログインします:
http://hub.jazz.net/
初めて IDS を使う場合はここでユーザー名の別名を聞かれたりするので適当に決めて答えておきましょう。ただ、ここで決めた名前がこの後作成する Git リポジトリの URL の一部になるのでそのつもりで。
ログイン直後の画面です。既にプロジェクトを利用していたりすると、それらが表示されている画面になるので、見た目は人によって多少変わるかもしれません。以下の画面はまだ何も使っていない、まっさらな状態でのプロジェクト一覧画面です:

では早速 Git リポジトリとしてのプロジェクトを1つ追加しましょう。"Start coding" と書かれた大きなアイコン部分をクリックします:

ここでプロジェクトの名称(以下の例では "my1stApp")を指定します。今回はこの IDS 内に新しいプロジェクトを作成するので、"Create a new repository" を選択します:

続いてリポジトリの作成先を指定するので、"Create a Git repo on Bluemix" を選択します:

するとアイコンのすぐ下に今から作成する Git のリポジトリ URL が確認できます。後で再確認することもできますが、一度ここでメモしておきましょう。 また作成するリポジトリにサンプルの README を含めるかどうかを選択するチェックボックスが表示されています。ここでは最初に README を含めておくことにします(任意です)ので、チェックボックスを ON にしておきます:

続けてオプションが3つ表示されています。上から順に (1)プライベート(非公開)リポジトリにするか、(2) Scrum 管理機能を追加するか、(3) Bluemix アプリケーションプロジェクト機能を追加するか、です。この例では全て OFF にしていますが、いずれも必要に応じて ON/OFF してください。最後に "CREATE" ボタンを押すと、この設定で Git リポジトリが作成されます:

Git リポジトリが作成されると、このような画面に切り替わります。指定した名前のプロジェクトが生成され、その中に License.txt と(オプションで指定した)README.md が含まれている状態で生成されています:

画面内で Git のブランチ(この図では master)を表示する部分の右側にダウンロードアイコンが表示されています。現在のブランチの状態でソースコードをまとめてダウンロードする場合はこのアイコンをクリックします(今は行わなくて構いません):

また、更にその右側に "Git URL" と書かれた箇所があり、そこをクリックすると改めて Git リポジトリの URL を確認することができます。忘れてしまった場合はこの方法で Git URL を確認してください(このすぐ後に使います):

では試しにこの Git プロジェクトの中身を別マシンに clone してみましょう。Git が導入されている環境下で以下のように自分の Git URL(以下の例では https://hub.jazz.net/git/teyande/my1stApp)を指定して git clone してみます:
# git clone https://hub.jazz.net/git/teyande/my1stApp
成功するとこのように License.txt と README.md を含む my1stApp というディレクトリが作成され、現在のリポジトリがクローンできたことがわかります:

次にこのプロジェクトディレクトリに移動して、ローカルマシンで変更を加えてみます。本当はここでは vim とか Sublime などの普段使い慣れたエディタ等を使ってファイルを編集することを想定していますが、以下の例では echo コマンドを使ってシンプルな phpinfo.php というファイルを1つ追加しています。何か新しいテキストファイルを1つ(以上)同じディレクトリ内に作成してみてください:
# cd my1stApp # echo '<?php phpinfo(); ?>' > phpinfo.php
この時点でディレクトリにはもともと存在していた2つのファイルに加え、いくつかのファイルが追加されている状態になっています:

ではこの変更を Gir リポジトリに反映させましょう。git add して、git commit します:
# git add . # git commit -m 'phpinfo.php added.'
こんな感じでローカルリポジトリへのコミットが成功するはずです:

では最後に、このローカルリポジトリへの変更をリモートリポジトリへも反映させるべく、git push します。途中でユーザー名やパスワードを聞かれるので、IBM Bluemix のIDおよびパスワードをそれぞれ指定して入力します:
# git push : : Username for 'https://hub.jazz.net': bluemix@teyan.de Password for 'https://bluemix@teyan.de@hub.jazz.net': : :
↓こんな感じになれば成功です:

git push が成功すると、IDS 内のファイルにもその変更が反映されているはずです。この例では元のプロジェクトには存在していなかった phpinfo.php ファイルが git push によって送り込まれ、プロジェクトファイルの一部として追加されていることがわかります:

とりあえず Git リポジトリとしての機能が使えることがわかりました。ただこれだけなら GitHub と変わりません。GitHub にない機能の1つとしては「(無料で)プライベートリポジトリが持てる」ことが挙げられます。例えば今回は作成時に Private チェックボックスをオフにしていたので、この時点ではリポジトリは公開されており、同じ URL を誰からでも(IBM Bluemix のアカウントを持っていない人からでも)参照することができる状態になっています:

公開状態で作成されたリポジトリをプライベートな非公開状態に変更するには、リポジトリ画面右上の歯車アイコンをクリックし、左メニューから "OPTIONS" を選ぶと、"Private" のチェックボックスが現れます。ここにチェックが入っていれば非公開、入っていなければ公開状態となります:

非公開状態に切り替えてみましょう。"Private" チェックボックスを ON にして、"SAVE" ボタンをクリックします:

この状態で、同じリポジトリ URL にアクセスすると IBM Bluemix アカウントでログインしていない場合はログインが求められるようになります。また自分(リポジトリのオーナー)以外の ID でログインすると、以下の様な「非公開です」という画面だけが表示されて、中身を確認することはできなくなります:

Git のリポジトリを非公開状態で管理しようとすると、GitHub では有償アカウントが必要になります。GitHub 以外にオープンソース製品などで独自にプライベートリポジトリを作れないことはないのですが、IBM Bluemix の IDS を使えば、実質的に無料でプライベートリポジトリまで含めて利用することができる、ということになりますね。 IDS は単なる Git のリポジトリ以上の機能がありますが、この無料のプライベートリポジトリ機能だけでも魅力的だと思っています。