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

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

タグ:eclipse

EclipseNode.js アプリケーションの開発(というかデバッグ)を行うことができるような環境を作ります。そのために Nodeclipse というプラグインを導入します:
2017022001


導入手順は Eclipse のメニューから Help - Install New Software を選択し、インストール元の URL には "http://nodeclipse.org/updates/" を指定します。しばらく待つと導入可能なプラグインの一覧が表示されるので、"1st Nodeclipse Core" と "Enide Tools Collection" の2つにチェックを入れてインストール作業を続行します。最後に Eclipse を再起動するよう指示されるので再起動します:
2017022002


導入作業はこれで終わり。以下は使い方の説明です。Eclipse が再起動したら、Node.js のアプリケーションプロジェクトが作れるようになっています。

Eclipse のメニューから File - New - Project を選択するとプロジェクトウィザードが起動します。その選択肢の中に Nodeclipse カテゴリがあり、そこから Node.js や Node.js Express のプロジェクトが作れるようになっているはずです。今回は試しに "Node.js Express Project" を選んでみました:
2017022003


いつものようにプロジェクト名(以下の例では "MyExpress01")を入力し、属性を設定します。テンプレートエンジンが何種類かの中から選べそうだったので、今回は個人的に慣れている ejs を選んでみました。最後に "Finish" をクリックしてプロジェクトを作成します:
2017022004


Node.js Express プロジェクトが作成された直後の様子です。ejs テンプレートを使ったシンプルなアプリケーションが生成されています。興味ある方は中身を個別に確認してみてください:
2017022009


Eclipse の全体画面がこちら。右上を見ると Node.js 用のパースペクティブが追加され、同パースペクティブで開いていることが確認できます:
2017022000


特に明示的には何も手を加えていないこの状態で一度実行してみることにします。app.js を右クリックし、Run As - Node Application を選択します:
2017022006


コンソールに起動メッセージが表示されます。3000 番ポートで起動しているようです:
2017022007


というわけでウェブブラウザで localhost:3000 にアクセスしてみます。こんな画面になれば成功です。このページ自体は app.js から routes/index.js が呼ばれ、views/index.ejs をテンプレートとしたレンダリングが行われた結果が表示されています。ここまで確認できたら一旦サーバーを停止しておきましょう:
2017022008


では次に今の様子をデバッグしてみることにします。まず routes/index.js を開き、レンダリングを行っている箇所にブレークポイントを仕掛けてみます(該当行の左側をダブルクリックしてブレークポイントマークが付いたことを確認します):
2017022001


今度はデバッグモードで Node.js を起動します。app.js を右クリックして Debug As - Node Application を選択します:
2017022002


デバッグモードでの起動を明示したので、Eclipse のパークペクティブをデバッグ用に切り替えるか?という確認ダイアログが表示されることがあります。その場合は "Yes" を選択します:
2017022003


Debug パースペクティブに切り替わります。同時にアプリケーションがデバッグモードで起動し、最初の1行目で止まった状態になります(まだ起動していないのでブラウザからはアクセスできません)。F8 を押すか、メニュー下の Resume アイコン(右向きの緑の矢印)をクリックして、実行を続けます:
2017022004


コンソールに先程のようなメッセージが表示されるとサーバーが起動してことを意味します。ではあらためてこの状態でウェブブラウザから localhost:3000 にアクセスしてみます:
2017022005


先程のような画面が表示される前にブレークポイントを設定していたので、そこで停止しているはずです。Eclipse の画面を確認すると指定したブレークポイントで止まっている様子が確認できるはずです:
2017022006


この状態で各種変数の値を確認したり、ステップ実行したり、・・・といった、いわゆるデバッグ作業を行うことができるようになっています。最後にもう一度 Resume して処理を続けます:
2017022007


Resume 後にウェブブラウザを確認すると、先程と同じ画面が表示されているはずです:
2017022008



Nodeclipse の紹介はざっとこんな感じ。ところで、Node.js の開発に Eclipse を使うのって、結構マイノリティな気がしているが、実際のところどうなんでしょ??


(参考)
http://qiita.com/suesan/items/7f2c4863feb87a623517

普段は 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 のキー操作が使えるようになって超便利・・・なのかどうかはまだよくわかりません(苦笑)が、面白いプラグインであることは間違いなさげ。

IoT アプリ開発をする上で避けて通れないのが MQTT(Message Queuing Telemetry Transport) プロトコルです。デバイスやセンサーなどのマシン間接続(いわゆる "M2M")用に IBM を中心に提唱された軽量プロトコルで、Node-RED や IBM IoT Foundation Quickstart などでも使われています。

そして、この MQTT をアプリケーション実装する上で便利なライブラリPaho です。これも元々は IBM が開発したものをオープンソースとして Eclipse Foundation に寄贈し、現在は Eclipse プロジェクトの1つとして公開されています:

http://www.eclipse.org/paho/
paho_logo_400


この Paho ライブラリを使うことで MQTT の詳しいプロトコル仕様を理解することなく、MQTT アプリケーションを開発することが可能になります。プログラミング言語としても C/Java/Java Script/Python など、多くの言語に対応しており、PC やスマホ、組込機器など、多くのデバイスで利用することができるようになっています。

そして、この Paho の Java ライブラリを使って、実際に IBM IoT Foundation Quickstart の MQTT ブローカー( quickstart.messaging.internetofthings.ibmcloud.com:1883 )に接続して、MQTT パブリッシュ処理を行うサンプルを作ってみた時の様子をこちらで紹介しています:
QuickStart MQTT ブローカーに Java からパブリッシュする

QuickStart は IBM が公開している MQTT ブローカー(サーバー)で、認証なしであれば誰でも使うことができます。また上記リンク先でも紹介していますが、ここにパブリッシュされたメッセージは IBM BluemixNodeRED アプリケーションを使って簡単に取得したり、データベースに格納したり、データフローを定義することができるようになります。


IoT アプリ開発者にとって、この Paho は慣れておくことが必須のライブラリだと思いました。


世のノーツ開発者の興味が XPages に寄っている中で、1世代前の技術情報になることをご容赦ください(苦笑)。

久しぶりに触ったノーツに、久しぶりにプラグインをインストールしようとしてハマりました。何言っても言い訳になることはわかった上で、でもこの業界で1年半のブランクは大きいようです(苦笑)。


ノーツ(IBM Notes) はバージョン8から Eclipse RCP(Rich Client Platform) をベースとしたクライアントに生まれ変わり、Eclipse 向けに提供されているプラグインをノーツにもインストールできるようになりました。そもそも Eclipse は開発環境なので、世に出ているプラグインは開発環境向けのものが多いです。それもあって、プラグインの互換性は100%ではないのですが、Eclipse のプラグイン開発技術やスキルを使ってノーツの機能拡張もできるようになった、というものでした。

Eclipse の場合、プラグインをインストールしようとするとメニューの Help から Install New Software を選んで・・という手順になります:
2015030101


ノーツの場合はその方法からして異なるのですが、実はそれ以前に「そもそもプラグインインストールをメニューに表示するための準備」が必要でした。

それが
 (ノーツをインストールしたディレクトリ)/framework/rcp/plugin_customization.ini ファイルに
 com.ibm.notes.branding/enable.update.ui=true の一行を追加する
というもの。これをしてノーツを再起動すると、メニューの File - Application からインストールができるようになる・・・ はずだったのです。

でも試してみたらこんな感じ。File - Application までは表示されるのですが、その先にインストールの選択肢がありません:
2015030102


あれ?これは何?? と驚きましたが、どうやらノーツのバージョン9からこの部分の仕様が変更されていた模様です。詳しくはこちらの Technote にかかれていましたが、この設定に加えてランタイム設定の com.ibm.notes.branding.prefs ファイルから一行削除する必要がありそうでした:
[ファイル] - [アプリケーション] - [インストール] メニューが plugin_customization.ini ファイルで設定しても表示されない


ここまでの設定をしてノーツを再起動すると、無事にインストールメニューまでが表示されるようになりました:
2015030103


うーん、しばらく離れていて気づきませんでした。いつの間に・・・

この方法で UpdateSite の URL を指定して Eclipse プラグインをインストールすることができます。

またノーツ用の拡張機能を使って Eclipse プラグインを開発することもできますが、その手順の解説がどこかにないかなあ、と探していたら、こんなページを見つけてしまいました。今となっては懐かしくもあり、恥ずかしくもある技術解説ページです:
Lotus Notes 8 プラグインでグラフィックコンテキストを利用する



で、個人的にこんなの(画面右)を作ってたりします:
2015030104

このプラグインはいずれ公開したいとずっと思っていて、でもそれには公開 Domino サーバーが必要で、さてどうしたものか・・・と悩んでいたのですが、最近になって IBM Bluemix を使う方法を思いつきました。いずれ公開しますのでお楽しみに。なお、その際はこのページに書かれた設定も必要になると思うので、その時にまた参照してください。




このページのトップヘ