endless pulse

どっくんどっくんふるえる毎日を過ごしています

一からPlay2 frameworkを使えるようになるまで環境を整える

旦那のMacOS X 10.9...)でちょっと開発したいなーと思ったら、環境構築までにとっても時間がかかったのでおぼえがきです。。

手順というより、「自分のPCで開発しているPlay2プロジェクトを別の場所でも開発するのに必要なことチェックリスト」という感じです。

チェックリスト

苦労したこと

前準備(JDK, Eclipse, Scala IDEインストール)編

MacOS X 10.9だったこともあるのかもしれないけれど、Javaのバージョンがわけわからなくなっていて苦労しました。
2016/9/27現在では、最新EclipseNeonでした。Javaのバージョンは1.8以上を要求されます。Eclipse Installerでは1.7以上を要求されています。
OSのJavaバージョンは1.6のようだったので、Oracleのサイトから1.8をインストールしました。

結果。ブラウザでは「お使いのJavaは最新です!」と出るのにも関わらず、Eclipse Installerからは1.7 or greaterにしろやというメッセージが出る。JAVA_HOMEやPATHの設定か?と.bash_profileなどを修正してみるも同じメッセージが出る。

Version 1.6.0_65 of the JVM is not suitable for this product. Version 1.7 or greater is required.

ちなみに、ターミナル(iTerm2を使用)ではJavaのバージョンは1.8でした。。

というわけで、iTerm2から

open Eclipse\ Installer.app/

をしてみます。お、、さっきと、表示が、ちが…

The JVM shared library "/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/bin/../jre/lib/server/libjvm.dylib" does not contain the JNI_CreateJavaVM.symbol.

ほほーう。

結局、Java 1.7もインストールして、JAVA_HOMEとPATHを1.7用に書き換えて、iTerm2からEclipse Installerを開いて、どうにか動きました。
Eclipseのダウンロードは時間かかりすぎで、ここで1日が終わりました。


そしてEclipse Neonを開くと…

Version 1.6.0_79 of the JVM is not suitable for this product. Version 1.8 or greater is required.

泣いていいですか。

いろいろ調べていたら、以下のような記事を見つけました。
MacにAptana Studio 3 (3.6.1)をInstallしようとしたら、JNI_CreateJavaVM.symbolがないというAlertが出て立ち上がらない問題の解決策メモ - Qiita
参考にして、"./Eclipse.app/Contents/Eclipse/eclipse.ini"の中の"-vm"以下をJava 1.8に指定しました。
指定するときは、java_homeを利用して、以下のように指定しました。

…その他の設定…
-vm
`/usr/libexec/java_home -v 1.8`
…その他の設定…

参考URL:OSXでJavaのバージョンを切り替える - Qiita

これで無事Eclipseも開いた…!
日本語化はいいです。面倒でいつもしてません…

Scala IDEは言うことないぐらい無事にインストール完了しました。ふーーー

本番(Play2, gitインストール)

そしてPlay2のTypesafe Activatorをインストールしようとしてまたはまりました。
Typesafe Activatorは、zipファイルでかる〜く落とせるんですが、

  • それをMacGUI上からダブルクリックして展開したあと、
  • いそいそと自分の作業用フォルダにコピー
  • iTerm2でそのフォルダに行って、activatorを実行!

以下のエラーが発生しました。

./activator: /usr/bin/env: bad interpreter: Operation not permitted

いろいろ試してみても、どうにも直らない。。

ぐぐってみたら、どうやらzipの展開に問題がありそうだとわかりました。
ダブルクリックで展開すると、どうやら"The Unarchiver" ‎「The Unarchiver」をMac App Storeででzipが展開されていて、その際に改行コードなどが書き換えられていたらしい。。
参考URL:bash - /usr/bin/env bad interpreter - Stack Overflow
上記のstack overflowでは、3rd partyソフトウェアを使っていると…みたいな書き方になっていますが、もしかしたら最新版のThe Unarchiverだったら設定できるかもしれません。このMacのThe Unarchiverは3.1で、そのような設定はないように見えましたが、2016/9/27の最新版は3.11.1でした。(最新版は検証してません)

iTerm2で、unzipコマンドで改めてTypesafe Activatorのzipを展開して、そのactivatorを実行したら…
成功した><。。

ちなみにMySQLとGitはなぜか入っていたMacportsでインストールしました。楽ちん。
Macports自体は、数年前に入れられていたようで、selfupdateもupdate outdatedも鬼のように時間かかったけど、まあそんなもんですよねー。たぶん数年前にインストールしたの私だろうし…

- 2016/10/3 追記 -
Macportsでインストールすると、/opt/local/etc/mysql56/ 内にある macports-default.cnf という設定ファイルに、以下の設定がありました。

[mysqld]
# skip-networking so multple mysql server ports can be loaded
# without each competing for port 3306.
skip-networking

読むとわかるように、MySQLサーバーを複数立ち上げるためにポート番号3306に固定しない…という設定です。このあと、mysqlクライアントから以下のコマンドを行うと、MySQLサーバのポートが指定されていないのがわかります。

mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 0     |
+---------------+-------+
1 row in set (0.00 sec)

今回はそれでは困るので、上記の macports-default.cnf の設定はコメントアウトして、my.cnfにポート番号3306の設定を追加しました。

[mysqld]
port=3306

その後MySQL Serverを再起動すると、MySQLクライアントからのポート番号の確認もできました。

mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306     |
+---------------+-------+
1 row in set (0.00 sec)


- 2016/10/3 追記ここまで -

MySQLはインストール後、サーバーの自動起動設定(参考URL:macportsで入れたMySQL 5.6の自動起動設定をやってみた - babydaemons’ blog)と、必要なユーザーの作成&パスワードの設定、データベースの作成までやった。

そして…(git closeからのactivator eclipse、インポートからの…)

git cloneがそつなくこなされ、
activator eclipseも初回実行のため大量のダウンロードが発生し、時間はかかったものの、無事Success!しました。
そしてEclipseへのプロジェクトのインポートも無事終了。
(プロジェクトのウィンドウで右クリックー>Eclipse Projects ー>git cloneしたフォルダを選択)

そしてactivator runして、ブラウザでlocalhost:9000を確認。
はーーーーよかった。

こういうのって…

自動化したいですね。時代的に。
ちょっとしたコード書くためにEmacsだってほしいし、そうすると.emacsほしいしとか、毎回同じ作業だし…。

調べてみると、Ansible+Homebrewとかが数件ヒットしました。どこまで自動化できるのかな。Eclipseとかの作業はどうしても残ってしまうかなぁ