2016年6月20日月曜日

【JavaでPlayFramwork2.4.6】ビルド時のネットワーク問題と起動

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

最近はPlayFrameworkについて勉強を進めています。

プロジェクト起動


前回の荒技で、とにかく2.4.6でのプロジェクトは完成しました。

では、プロジェクトの起動に行ってみましょう。

コマンドプロンプトを起動し、

cd "作成したプロジェクトのフルパス"
activator run

これでプロジェクトが起動します。
が、実際には私はここで躓いたので、その時の経験談も踏まえて今回は雑談ベースです。

Activatorにパスが通っていない


私のような慌て者のエンジニアは上記の通りActivatorコマンドを実行しても「操作可能なプログラムまたはバッチ ファイルとして認識されていません。」とか出てくるかもしれませんね。
これはActivatorにパスが通っていないのでしょう。

PlayFrameworkの管理コマンドであるActivatorはダブルクリックで自動インストールするものではなく、圧縮ファイルを展開して設置し、そこに手動でパスを通さなければいけないものです。
この状況に陥っている人は公式サイトをもう一度ご確認下さい。


ネットワーク問題


PlayFrameworkはActivatorコマンド実行時とrun実行時の二回に分けてインターネット上からファイルをダウンロードしてくる挙動となっています。
従ってネットワーク環境に繋がっていない環境では起動出来ません。

私はここで大変苦労しました。
私の現在の現場環境はセキュリティが大変厳しいので自由にインターネット接続出来ません。
よってsbtのビルドで自動であっちこっちからjarファイル等のライブラリをダウンロードしてくるのは望ましくなかった為、オフラインビルドを試みました。


公式サイトのダウンロードページに「Offline Distribution」というリンクがあり、これがsbt実行ダウンロードするファイルを最初から一塊で取得出来るものです。
これを取得し、USBメモリでオフラインPCに移動させて、いざオフラインPCから起動……とやってみたわけですが……。

結論を言うと、無理!!
初回のオフラインビルドは現実的ではありません。

と言いますのも、どうやら「Offline Distribution」と言えども全部入っているわけではないようです。
インターネット界は日々進化していますので、細かいバージョンの差分とかが発生してしまって「Offline Distribution」には既に古くなってしまったものが混ざっているのです。

また、「Offline Distribution」はあくまで初回セットであり、そこから追加で何かプラグインを入れたりするとなると、当然ながら「Offline Distribution」の中にはありません。

「Offline Distribution」に入っていないものは別途、手動でネットからダウンロードしてオフラインPCに移植し……と頑張ってみましたが、無理でした。
取得しなければならないファイルは一個や二個の話ではないので、手動ダウンロードを繰り返してビルドしようと思ったら一日では終わりません。

二日……三日……どれくらい頑張ったら出来るんだろう???

とにかく、インターネットビルドを使わず手動ビルドで初回起動するのは三途の川のほとりで石を積み上げるようなものです。

頑張ってもゴールに辿り着けませんので、これからビルドする人は絶対にインターネット環境でビルドすることをオススメします。

  • オフラインだけでのビルドは至難。オンライン環境は事実上の必須。
  • どうしてもオフラインでビルドしなければならない場合、最初だけオンラインでビルドし、ダウンロードしたファイルをオフラインPCに移植する。

ただし、あくまでも初回起動時にjarファイルを収集するステップが大変なだけですので、一度ビルド出来てしまえば、後はオフラインでもOKです。
複数人で作業する場合も、最初に一台だけインターネット環境でビルドし、集めたjarファイルをUSBメモリ等で他のオフラインPCに移植すれば、全部オフラインでも起動出来ます。

経験者ならではの体験談ですね。。。

プロキシ


当然ながら社内などプロキシがある環境で実行する場合、プロキシが通っていなければインターネットに接続出来ません。

これは知っている人は当然でしょうが、私は初体験でした。
インターネットオプションのプロキシと、コマンドプロンプトのプロキシは別です。

コマンドプロンプト実行時にプロキシ接続する場合は、例えば以下のようにコマンドラインからプロキシを設定するとか、
システム詳細の環境変数で事前にプロキシ設定を登録するといった対応の必要があります。

set HTTP_PROXY=http://プロキシサーバ:ポート番号/

この辺りはPlayの話というよりネットワークの問題ですので、各環境毎に奮闘願います。
簡単そうで意外に難しかったです。

起動成功

こうして環境の壁を越えて、何とかようやく初回起動出来ました。
「http://localhost:9000/」で以下のような画面が表示出来ます。


私の場合はネットワークの壁があったので大変苦労しましたが、それが無い環境でしたらスルッと簡単に起動まで辿り着けると思います。

やっぱり開発者には快適なインターネット環境は必要不可欠ですね。。。

終わりに


これにてようやく初回起動まで辿り着きました。
引き続き勉強を継続していきます。

0 件のコメント:

コメントを投稿