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

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

2017/01

普段は Eclipse で Java のコーディングをしています。そして開発時のアプリケーションサーバーには Jetty を使っています。最近この開発環境を構築する際の手順を久しぶりに行ったのでまとめておきました:

まず Eclipse に Java EE の開発環境までは導入済みであると仮定します(或いは初めから Java EE 開発環境を選択して Eclipse をインストールします)。その Eclipse に Jetty のプラグインを導入して、開発環境を構築します。

Jetty プラグインをインストールするには、Eclipse のメニューから Help - Eclipse Marketplace を選択します:
2017013101


マーケットプレースのダイアログが開いたら、検索ボックスに "jetty" と入力して検索します。検索結果の中に
 ・Eclipse Jetty
 ・Run-Jetty-Run
が含まれているはずなので、これらを1つずつインストールします(まとめての導入はできないので、2回に分けてインストールを実行します)。インストールが完了したら Eclipse を再起動:
2017013102


これで開発用アプリケーションサーバーに Jetty を使った開発が可能になります。開発中のウェブアプリケーションをこの環境下で実行するにはプロジェクトを右クリックし、Run As を選ぶと、実行方法の選択肢の中に "Run Jetty" というものが追加されているはずです。これを選択します:
2017013103


すると選択中のウェブアプリケーションが Jetty に読み込まれた形で起動します。起動時のポート番号は 8080 番です:
2017013104


ウェブブラウザで http://localhost:8080/(プロジェクト名) にアクセスすると、開発中のウェブアプリケーションに試験アクセスすることができます:
2017013105


今はいちいち Jetty を別途インストールする手間とか不要になったんですね。こりゃ便利!

自分はコーディング時のエディタを使い分けています。具体的には Java の場合は Eclipse 、それ以外は vi/vim を使うことが多いです。他がどうとかいうつもりはありませんが、指がショートカットを覚えているので生産性がいいと思っています。個人的にはこれらの使い分けで戸惑うことはありませんでした。

そんな時に Vrapper という Eclipse プラグインの存在を知りました。Eclipse 内のコーディングキーバインドを vi 風にする、というものです:
2017012801


そんなものが存在していてもおかしくはないだろうな、と思っていましたが、具体的なものを知ったのは初めてでした。試しに最新バージョンの 0.70.0 を使ってみました。

Vrapper を使う前提として、Eclipse は 4.0 以上である必要があるとのことでした。というわけで Juno (4.2)以降の Eclipse 環境を用意する必要があるのですが、今回は Eclipse Neon(4.6) 環境を用意して導入してみました。以下、その時の様子を紹介します:

Vrapper の導入方法は他の Eclipse プラグインと同様です。 まずはメニューの Help - Install New Software を選択:
2017012801


プラグインの Updatesite を指定します。このページによると同プラグインの安定版の Updatesite は http://vrapper.sourceforge.net/update-site/stable らしいので、この URL を指定します。するとインストール可能なプラグインの一覧が表示されるので、必要なもの(特定の言語依存のプラグインを導入しないのであれば) "Vrapper" 本体と "Optional Vimscript Plugins")にチェックを入れて先に進みます:
2017012802


インストール中の様子です。しばらく待ちます・・・:
2017012803


このようなダイアログが出たら Eclipse を再起動します。再起動後に Vrapper が有効になります:
2017012804


Eclipse 再起動後に、どんな感じが試すために1つプロジェクトを作ってみました:
2017012805


Java プロジェクトを作って、その中に MySample01.java というファイルを新規に追加しています:
2017012806


すると(静止画像では伝わりにくいのですが・・・)テキストファイル内のカーソル移動、編集モードへの移行(i)、ビューモードへの移行(ESC)など、キーバインドが vi/vim 風に切り替わっています。おお、なんか変な感じ(笑)!:
2017012807


":" を押してコマンドモードに移動する操作も再現できています。vi/vim では ":sp (ファイル名)" で画面を分割して2つのファイルを同時に編集することができますが、同じことをやってみます:
2017012808


Eclipse の2ファイル同時編集モードが上下にタイル分割されて実行されました!すげー、元の機能をうまいこと使って融合できているようです:
2017012809


もちろん ":q" で終了できます:
2017012810


はい、元の1画面モードに戻りました:
2017012811


というわけで、vi/vim の基本的なキーバインドは再現できているようです。これで Eclipse 内でも vi/vim のキー操作が使えるようになって超便利・・・なのかどうかはまだよくわかりません(苦笑)が、面白いプラグインであることは間違いなさげ。

IBM LinuxONE(メインフレーム版 Linux)に IBM Domino をインストールすることに挑戦してみました:2017012200


いくつか前提を紹介します。まず LinuxONE の環境は IBM LinuxONE コミュニティクラウド上の RHEL 6.x のサーバーインスタンスを使うことにします(最大 120 日間無料で使えます)。また IBM Domino を導入する際にはその環境に X Window のデスクトップ GUI が必要です。これらの環境を用意するまでの手順はこちらを参照ください:
IBM LinuxONE コミュニティクラウド上で X Window のデスクトップ環境を構築する


次に IBM Domino ですが、これは無料で入手できるものではありません。IBM Domino のサブスクリプション契約をお持ちで、インストールモジュールをダウンロードする権利をお持ちの人のみが入手可能なものです。

(訂正)
IBM Domino は IBM 無料トライアルダウンロードプログラムに含まれており、IBM LinuxONE 向けのエディションもこの対象でした:
https://www.ibm.com/developerworks/downloads/ls/lsds/

2017012302


IBM ID をお持ちか作成いただくことで、こちらからトライアル版をダウンロードしてご利用いただくことも可能です:
2017012301



(有効なサブスクリプション契約をお持ちの場合は、)"Linux for z System" 向けの IBM Domino の最新版をダウンロードしてください。ちなみに 2017/Jan/22 時点では V9.0 英語版がパーツ番号 CIBM5EN で検索することで見つけることができるはずです。ファイル名は DOMINO_9.0_64BIT_LIN_ZS_EN.tar でした。このファイルを入手済みであるとして、以下を紹介します。

LinuxONE に限らないのですが、Linux 版の IBM Domino は導入前に root ではない実行時のユーザーおよびそのグループを OS 内に作成しておく必要があります。以下、notes グループの notes ユーザーによって実行する前提として、これらのグループとユーザーを作成しておきます:
# groupadd notes
# useradd notes -g notes

ユーザーを作成したら、ダウンロードしたインストールモジュールファイルを展開し、zlinux64/domino フォルダ内のインストーラー(install)をコマンドラインから実行してインストール作業を行います:
# cd /data
# ls
DOMINO_9.0_64BIT_LIN_ZS_EN.tar

# tar xvf DOMINO_9.0_64BIT_LIN_ZS_EN.tar

# cd zlinux64/domino

# ./install

インストーラーを実行すると、次のようなインストール画面に切り替わります。ここから次へは TAB、変更時はスペース+変更内容+Enter で、必要に応じてオプションを編集しながらインストーラーの作業を進めます:

2017012002


LinuxONE で利用する場合、唯一意識すべきはインストール先のディスクだと思われます。比較的メインディスクに空きがない状態で導入するには /data 以下を指定して導入するようにします。以下の例はデータディレクトリをデフォルトの /local/notesdata から /data/local/notesdata に変更している様子です:
2017012003


最終確認画面が表示されています。問題なければ TAB キーでインストールが開始されます:
2017012004


インストールが完了しても、IBM Domino の場合はセットアップを行わないと動きません。というわけでセットアップに移りますが、その前に1つ作業があります。 xhost の設定をしておかないとセットアップ時に利用する GUI のウィンドウが開かないのです。

またここからは X Window システムのデスクトップ GUI 環境が必要になります。というわけでまずは VNC クライアントを使ってこのサーバーのデスクトップを開いてターミナルを起動し、この xhost コマンドで notes ユーザーの画面でインストーラーウィンドウが開くようにしておきます:
# xhost +local:notes

そのまま続けて notes ユーザーに su し( root ユーザーでは server は起動しません)、ノーツデータディレクトリがカレントディレクトリになっている状態から server を実行します。これ実はサーバーの起動手順と同じですが、最初の一回はセットアップモードでの起動が行われます:
# su - notes

$ cd /data/local/notesdata
$ /opt/ibm/domino/bin/server

すると GUI に Domino セットアップのフラッシュスクリーンが表示され・・・
2017012005


しばらくすると、見慣れた Domino サーバーセットアップの画面に遷移します。ここからはいつもの(Windows とかの)セットアップと同じです:
2017012006


セットアップが完了し、再度 server コマンドを実行すると、今度は Domino サーバーがコンソール内で起動し、Domino サーバーとして利用可能になります:
zdomino


IBM Domino は有料のソフトウェア製品であり、この製品(特に IBM z Systems 版)を無料で入手する方法は限られてしまいますが、その手段をお持ちの方であればのインストールモジュールを入手する方法がちと面倒ではありますが、IBM Domino はメインフレーム上のパブリッククラウド Linux に導入して使うまでの環境は(IBM LinuxONE コミュニティクラウドを使うことで)無料で用意できることになります。

試験的な利用も含め、パブリッククラウド上で IBM Domino の環境を作って動かしてみたい、という方は是非一度お試しください。

IBM LinuxONE(メインフレーム版 Linux)の挑戦シリーズです。今回は RHEL6.x のインスタンス上に X Window のデスクトップ環境を導入してみます。加えてこのデスクトップ環境にリモートアクセスできるよう VNC サーバーも合わせて導入します:
2017012201


まず前提条件として LinuxONE の環境が必要になりますが、今回は「無料で最大 120 日間クラウド上の LinuxONE インスタンスが使える」という IBM LinuxONE コミュニティクラウドの環境を使って RHEL 6.x のサーバーを作り、その上に今回の環境構築を行うことにします。そこまでの環境構築手順についてはこちらを参照ください:
IBM LinuxONE コミュニティクラウドを使う(2017年1月版)


さて、LinuxONE と言っても RHEL(RedHat Enterprise Linux) であることには変わりありません。ということは普通は以下のコマンドで X Window のデスクトップ環境が導入できることをご存知の人も少なくないと思います:
# yum groupinstall "Desktop"

ということは LinuxONE でも同じコマンドを実行するだけでよいのでは・・・と思うかもしれませんが、残念ながら LinuxONE の RHEL6.x では yum は動きますが、グループ情報が登録されておらず、"groupinstall" コマンドが使えない模様でした(赤字および青字が yum groupinstall コマンド実行後の出力結果です):
# yum groupinstall "Desktop"
Loaded plugins: product-id, refresh-packagekit, search-disabled-repos, security,
              : subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Group Process
RHEL67                                                   | 3.0 kB     00:00
rhel67optional                                           | 2.9 kB     00:00
rhel67supp                                               | 2.9 kB     00:00
Warning: Group Desktop does not exist.
Error: No packages in any requested group available to install or update

ではどうするか? 要は「groupinstall がコマンドが使えないなら、install コマンドを使えばいいじゃない」というわけで、yum groupinstall コマンドで実行されるのと同じコマンドを yum install コマンドで実行してしまいましょう。この件について詳しくはこちらのブログエントリで紹介しているので、興味がある方はこちらも参照ください:
yum の groupinstall でインストールされるパッケージを確認する


具体的には以下のコマンドを実行して、"Desktop" グループに含まれるはずの個別パッケージをまとめてインストールするよう指定します:
# yum install NetworkManager NetworkManager-gnome alsa-plugins-pulseaudio at-spi control-center dbus gdm gdm-user-switch-applet gnome-panel gnome-power-manager gnome-screensaver gnome-session gnome-terminal gvfs-archive gvfs-fuse gvfs-smb metacity nautilus notification-daemon polkit-gnome xdg-user-dirs-gtk yelp control-center-extra eog gdm-plugin-fingerprint gnome-applets gnome-media gnome-packagekit gnome-vfs2-smb gok openssh-askpass orca pulseaudio-module-gconf pulseaudio-module-x11 vino

ついでというわけではないのですが、X Window のデスクトップを導入しても、ネットワーク越しにデスクトップが利用できないと意味がありません。というわけで RHEL6.x で使える VNC サーバーとして TigerVNC を導入することにします:
# yum install tigervnc-server

なお、TigerVNC の導入そのもの(インストール後の設定方法含む)について、こちらで詳しく紹介しているので一度参照ください:
CentOS に VNC サーバーを導入する


TigerVNC サーバー導入&設定後に再起動し、VNC ビューワで IP アドレスとポート番号を指定してアクセスすると、LinuxONE に導入された X Window のデスクトップ環境にアクセスできます:
2017012202


これで LinuxONE をデスクトップとして使ったり、GUI 必須のアプリケーションが利用できるようになりますね。
 

IBM LinuxONE(メインフレーム上の Linux)ネタシリーズ、今回は Go 言語を動かしてみます。
http://golang-jp.org/


前提として、IBM LinuxONE の環境が必要になります。今回は 120 日間無料で使える IBM LinuxONE コミュニティクラウド上の RHEL 6.x 環境を使うことにします。この IBM LinuxONE コミュニティクラウドの導入方法についてはこちらを参照してください:

さて、s390x 向けの Go 言語をどうやってインストールするかというと・・・ なんとグーグルから同環境を含めた各種プラットフォーム向けのバイナリが主要バージョン毎に提供されているのでした:
https://storage.googleapis.com/golang/

Windows や Linux, OS X 向けはもちろん、ARM デバイス向けのバイナリも提供されています。そしてメインフレーム Linux である s390x アーキテクチャのバイナリも提供されていることが分かります:
2017012001


2017/Jan/20 現在、正式リリースされている中では 1.7.4 が Go 言語の最新バージョンだったので、これをダウンロードして利用することにします:
# cd /tmp
# wget https://storage.googleapis.com/golang/go1.7.4.linux-s390x.tar.gz
# tar -C /usr/local -xzf go1.7.4.linux-s390x.tar.gz

上記のコマンドで /usr/local/go 以下に Go を展開しました。環境変数 GOPATH と合わせて PATH を設定しておきます:
# vi /etc/bashrc

    :
(最後に以下の2行を追加して保存) : export GOPATH=/usr/local/go/ export PATH=$PATH:/usr/local/go/bin

改めてログインし直し(或いは source /etc/bashrc を実行し)、Go 言語のバージョンを確認してみます(青字が出力結果):
# go version
go version go1.7.4 linux/s390x

正しくインストールできたと同時に、s390x 環境で Go 言語を導入できたことが確認できました。

このページのトップヘ