MENU

IBM iでGitとORIONを使ってみよう ~IBM iで広がるオープンの世界

 

 

 

GitとORIONが
IBM iで利用可能

 2016年6月、IBM iユーザー待望のGitとORIONの提供が開始された。

 Gitについては、オープンソースの世界でよく使用されているソフトウェア構成管理(SCM:Software Configuration Management)ツールである。10年ほど前に、Linuxの開発者であるLinus Torvalds氏がLinuxカーネルの構成管理のために開発した。

 一方、ORIONはEclipseプロジェクトの1つで、クラウド環境での開発を目的としたWebブラウザベースの統合開発環境(IDE:Integrated Development Environment)である。IBMのクラウドサービスであるBluemixでも採用されている開発環境で、HTMLやCSS、Java Script、Java、PHP、Rubyなど、Webアプリケーション開発で使用される各種言語に対応している。

 本稿ではIBM i環境を対象に、GitとORIONの入手方法およびGitを使った構成管理について紹介する。

 GitとORIONは、5733-OPSというライセンス・プログラムのなかで、6月からPTFとして提供を開始している。提供当初は、それぞれ個別のPTFが提供されていたが、今ではオープンソース製品用のグループPTFとして提供されている(図表1、PTFレベルは本稿執筆の2016年10月時点)。

 

 以下に、GitとORIONの利用手順を説明する。

 

Gitで構成管理

 GitはPTF番号SI61060で提供されている。5733-OPSのオプション6が導入されている環境でこのPTFを適用すれば、その時点からGitを使用できる。

 Gitはほかのソフトウェア構成管理ツールと違い、クライアント/サーバーのようにマスタ・リポジトリをもつ必要はなく、ピアの関係で構成され、分散管理方式を採用する。つまりGit用のサーバーを構築しなくても、PC上で簡単にリポジトリを作成し、ソースをバージョン管理できる。

 実際に、IBM i 上にリポジトリを作成してみる。QSHELLなどを用い、Gitリポジトリを作成したいIFSディレクトリに移動(cd)し、git initコマンドを実行する(図表2)

 

 すると指定したディレクトリに、.gitというディレクトリが作成され、このなかに構成管理の必要情報が格納される。この.gitディレクトリこそが、gitリポジトリの実体である。

 次に、このリポジトリにファイルを追加する。同じディレクトリにsample.txtというファイルを作成し、git addコマンドを実行すると、その瞬間からsample.txtファイルは管理対象となる。ファイルの状況については、git statusコマンドで確認できる。現在は初期状態ということで、「Initial commit」と表示される(図表3)

 

 さらに管理されているこのファイルに編集を加え、その編集内容を反映する。git commitというコマンドに、変更内容のコメント“first commit”を追加して実行する(図表4)。git log とコマンドを実行すると、それまでのコミットの履歴を確認できる(図表5)

 

 

 今回は割愛するが、コミット処理の前に、Gitで使用するユーザー、メールアドレスを事前に設定しておく必要がある。これらの基本的な操作やコマンド例については、Gitサイト(https://git-scm.com) を参照されたい。

 

ORIONで開発

 ORIONは、5733-OPSのオプション8が導入されている環境で、PTF番号SI60170を適用すれば使用可能になる。前述のとおり、ORIONはWebブラウザベースの開発ツールであり、IBM i 上で稼働させる場合はサーバーの起動が必要である。QSHELLからorion というコマンドを実行し、ORIONのサーバーを起動できる(図表6)

 

 サーバーが起動すると、QORION、QZSHSHという2つのジョブが、QHTTPSVRサブシステム下で稼働する(図表7)。なおサーバーを停止するときは、起動時と同様にQSHELLからstopORIONというコマンドを実行する(図表8)

 

 ORIONのサーバーが起動されると、Webブラウザから2025番ポートを使ってアクセスできる。ポートは、/QOpenSys/QIBM/UserData/OPS/Orion/orion.ini ファイルから、変更可能である(図表9)

 

 

 初回アクセス時は右上にある「Register」からユーザーを登録し、ログインする。ORIONはIBM i のユーザー認証ではなく、独自のレジストリを使って認証する。インターネットに接続できる環境であれば、OAuthを使ってGoogleやGithubのユーザーで認証するようにも構成できる。

 今回は、ORIONが独自にもつレジストリを使ったユーザー認証を前提にセットアップする。

 最初に、「Register」もしくは「Try it Now」のボタンをクリックすると、ユーザー登録画面が表示される。任意のユーザーIDとパスワードを指定し、「Sign up」をクリックすると、ワークスペースが表示される(図表10)

 

 開発を始めるには、まずプロジェクトを作成する。ツールバーより、「File」→「New」→「Project」→「Basic」と展開する。画面上部にポップアップが表示されるので、作成するプロジェクト名を入力し、「Submit」をクリックする。指定した名前のプロジェクトが作成され、ここに適宜フォルダやファイルを追加して開発を行う。

  ORIONではPHPやJavaScriptなどに加え、フリーフォームRPGのソース編集も可能である。構文に合わせて色分けされ、5250画面に比べるととても見やすい(図表11)

 

 開発したソースは、デフォルトでは/QOpenSys/QIBM/UserData/OPS/Orion/serverworkspace ディレクトリ配下に、ユーザーごとに作成される。ソースのコンパイル時には、このディレクトリ上に作成されるILE RPGのソースファイルを指定できる。

 ただし作成されたソースはPASE上で稼働するORIONのジョブで作成されるので、CCSID1208とUnicode CCSIDになっている。RPGの場合、コンパイルの際には、9月29日に提供された5770WDSのPTF を適用し、TGTCCSIDパラメータに5035などを指定する必要がある。各リリースのPTFなどの詳細については、下記developerworksのサイトを参照されたい。

Compile RPG from Unicode source -new TGTCCSID parameter in 7.1, 7.2, 7.3  http://ibm.biz/RPG_Compile_Unicode_Source

 

 

ORIONとGitの連携

 ORIONを使ってブラウザからソースを開発できたが、このソースの構成管理を担うのがGitである。前項で紹介したCUIベースでの構成管理に加えて、ORIONと連携させたGUIベースでの管理も可能である。またGitはピアの関係でサーバーを必要としないと述べたが、サーバー的な役割はもたせられる。IBM i 上にマスタとなるリポジトリを作成し、そのリポジトリをORIONやその他Gitをサポートする開発ツールから複製して、チーム開発に利用できる。

 それではここから、ORIONとGitを使った構成管理の方法を紹介しよう。

 まず、IBM i 上の任意のIFSディレクトリにGitのリポジトリを作成し、ORIONからそのリポジトリに対してソースのpush/pullを可能にする。チームでGitリポジトリを共有する場合は、「ベアリポジトリ」を作成する。

 ワークスペースから「Git」アイコンをクリックし、Gitビューを表示する。上部の「Repositories」をクリックし、表示されたメニューから「Clone Repository」、さらに「More」をクリックする(図表 12)

 

 図表13のように、Repository URLにGitリポジトリに接続するユーザー、ホスト名、そしてGitリポジトリ・ディレクトリを指定する。次に、「New folder」もしくは「Existing folder」を選択し、Cloneされた内容をOrionのワークスペースのどのフォルダに置くかを指定する。

 

 最後に「OK」をクリックすると、クローンの完了である。なおURLのサンプルからもわかるように、接続はSSHが使用可能であることが前提である。

 対象サーバーに接続され、指定したユーザーのパスワード、もしくはSSHの秘密鍵ファイルを指定すると、既存リポジトリの情報がワークスペースに複製され表示される。編集画面に戻ると、先ほど指定したフォルダに、クローンされたリポジトリの情報が作成されていることが確認できる。

 Gitと連携したあと、リポジトリの最新情報を取得するには「Fetch/Pull」を行い、逆に自分が実行した変更をリポジトリに反映するには「Push」を行う(図表14)。その流れを以下に紹介する。

 

 まず、ローカルで開発している場合と同様にソースを編集し、変更内容をコミットする。すると編集した内容は、まず「Outgoing」セクションに表示される。この時点では、変更された内容はリモートのリポジトリには反映されておらず、「Push」操作を行う必要がある。Outgoingセクションの右側にある「Push▼」をクリックし、メニューから「Push All」を実行する(図表15)

 

 

 以上で、ローカルで編集した内容がリモートのリポジトリに共有され、コミット履歴にもその内容が反映される。

 ではこの変更内容を、別のユーザーのワークスペースから見てみよう。

 デフォルトのままでは、変更されたことが通知されないので、開発者は開発を始める前に、まずリモート・リポジトリの内容をローカルに反映する必要がある。そのためのコマンドが、「Fetch」である。「Incoming」セクションの右側にある「Fetch▼」をクリックし、「Fetch All」を実行すると、先ほど別のユーザーUser01からPushした内容が表示される(図表16)

 

 この時点ではまだローカルには反映されておらず、変更された内容を確認したあとMergeする。Mergeするには、図表16にあるように、merge用のアイコンをクリックする。Mergeが成功すると、ユーザーUser01の変更した内容がコミット履歴に追加される。

 今回は正常にMergeされたケースのみを紹介するが、開発者間で実施した変更内容が競合する場合も多々ある。その場合は、開発者間で実施した変更内容について、比較ツールなどで確認し、競合を解決したうえでMergeする必要があることはいうまでもない。

 また、今回は「Push」と「Fetch」を使ったが、ORIONには「Sync」というボタンも用意されている。ローカルとリモートを同期する機能だが、自動的にFetch、Rebase、Pushの処理を行う。Merge するのか、Rebase するのかは、チームの開発方針によって異なるが、Rebase を採用する開発の場合であれば、「Sync」ボタンで同期させる方法も考えられる。

 

Rational Developer for i とGitの連携

 ここまでORIONとGitの連携について紹介してきたが、Gitは「Rational Developer for i 」(以下、RDi)との連携も可能である。RDiはEclipseベースのツールなので、EGitと呼ばれるGitのプラグインを使って連携できる。なお、EGitはEclipse Marketplace から取得できる。

 ここではEGitがインストールされている前提で、RDiとGitを連携した開発方法を紹介する。

 EGitがインストールされると、「Git」というパースペクティブが追加される。このパースペクティブから、ORIONで実施したのと同じように、リモートのリポジトリのクローンを作成する。「Clone a Git repository」と書かれたリンクをクリックすると、リポジトリを指定する画面が表示されるので、ホスト名、Gitリポジトリのディレクトリ、sshで接続するユーザー、パスワードを入力すると、自動的にURIが組み立てられる。URIはORIONで指定したときと同じ構文で、ssh://ユーザー名@ホスト名/Gitリポジトリ・ディレクトリとなる。

 ウィザードを進め、「Local Destination」という画面で、ローカルのどのディレクトリにクローンするかを指定する。リポジトリのクローンが終わると、図表17 のように、Git Repositoriesビューにリポジトリの情報が表示される。リモート・リポジトリとの同期には、リポジトリを右クリックし、コンテキスト・メニューから「Push to Upstream」「Fetch from Upstream」を実行する。

 

 

 Orionのときと同じように、RDiでソースを編集したあと、コミットからPushするまでの流れを紹介しよう。

 ソースを編集すると、画面右下にあるGit Stagingビューの「Unstaged Changes」に表示される。このなかでリポジトリに共有するものを選択し、右クリックで「Add to Index」を実行する(図表18)

 

 Staged Changes に対象のファイルが登録されたら、コミットのメッセージを入力し、「Commit and Push」をクリックすると、コミットとプッシュ操作を同時に実行できる。プッシュが成功すると、プッシュ結果画面が表示され、リモート・リポジトリに変更内容が反映されたと確認できる。

 ORIONと比較したRDi使用のメリットは、RDiのインターフェースからRPGのプログラムをコンパイルできることである。IBM i プロジェクト・パースペクティブを使い、対象のソースを右クリックし、コンテキスト・メニューより「リモート・アクション」→「コンパイル」を選択することで、ソースをIBM i 上のライブラリにプッシュ(転送)し、コンパイルできる。

 GitやORIONに関する機能の詳細は、下記のサイトで入手できる。

Git SCM: https://git-scm.com/
ORION : https://wiki.eclipse.org/Orion

 昨今、タブレットやスマートフォンをクライアント端末として採用するケースでは、オープンソースによる開発が進められている。その開発をサポートするのが、今回紹介したORIONとGitである。

 WebアプリケーションのバックエンドとなるRPGなどの開発を支援するには、まだ「かゆいところに手が届かない」状況ではあるが、ファイルのRenameでバージョン管理されているケースでは、構成管理ツールとして一定の効果を確認できるだろう。ぜひ挑戦していただきたい。

 

著者|藤村  奈穂 氏

日本アイ・ビー・エム システムズエンジニアリング株式会社
オートメーション・ソリューション

[i Magazine 2016 Winter(2016年11月)掲載]

新着