【縛りプレイ中】Codenvy(Eclipse Che)でGradleのプロジェクトをまともに使えるようにしたい(その1)
まだまだ諦めておりませんよ?むしろコード書くより楽しくなってきています。
Codenvy(Eclipse Che)でGradleプロジェクトを扱う場合の問題点
そもそもGradleは公式で対応していないから修羅の道な訳です。大きくは以下2点。
- Stackも公式から出てない(dockerhubから引っ張ることは可能なので、ビルドはできる)
- インテリセンスがmaven基準(jarファイル単位でしか追加できない)
つまり、ビルドと実行コマンドを作ることはできて、その中ではパスは通ってますし、クラスパスもちゃんとgradleから見えているんですが、インテリセンスで見ているクラスパスにGradleが使えない状況です。一つ一つjarファイルをクラスパスに追加する絵しか思い浮かばなくて軽く絶望しかけました。
コード書く目的ではなくて、Githubから軽くコードを引っ張ってきて実行環境込みで動かしてみるにはいいんですが、コードを書く目的となるとエディタでコンパイルが通らないからとにかく不便です。
Github Issuesから漁ってみる
とか
とかで同じことを考えている人たちがいたんですね、やっぱり。
で、読んでみると、今後対応するつもりはあるようですが、今のところはアシスタンス機能はmavenでサポート可能なプロジェクトでのみ動く、ということのようです。対処法として示されているのは、
- 依存関係を書いた
pom.xml
を用意する - jarファイルを一つ一つクラスパスに追加する
のどちらか。
いや、後者SpringBootとか辛すぎるでしょう。。。後者のIssueだと16のサブモジュールと13のソースディレクトリを持つGradleプロジェクトとか言ってるんですよ、一つずつjarを追加しろとか何でしょうか、その刺身タンポポ *1 。
Gradleからpom.xml出力すればいけるのでは?
前者をどうにか楽にできないものかと思って少し調べて見ました。mavenプラグインというのがあるんですね。
mavenプラグインで設定なしだとデフォルトローカルリポジトリに保存される模様。スタックのローカルリポジトリは /home/user/.m2/repository
になるようです。Gradleのサンプルプロジェクトを使って gradle install
してみたところ、メインのソースディレクトリのビルド結果についてはリポジトリにインストールされていますし、build/poms
に pom.xml
は作成されています。ただ、テストに依存するライブラリはローカルリポジトリにインストールされないんですね。やりたいことに近づきはしましたが、まだまだです。
まとめ
やってやれないことはない気がしてきました。プラグインで大まかに事足りそうなのでいいですね。
テストのライブラリをローカルリポジトリに持っていければ基本的にやりたいことは全てできそうなので、次はこの辺りを調べてみようと思います。
追記
とりあえず、 gradle install
タスクでできた pom.xml
をプロジェクトルートにコピーするビルドコマンドを書いて、プロジェクト自体はmavenで読み込ませたところ、外部ライブラリにも追加されました。シングルソースディレクトリのプロジェクトであればこれでおそらく問題ないかと。
*1:ダイアログでのjarの選択がマルチでできない
【縛りプレイ中】Eclipse CheをDockerで使えるかどうか検証してみて挫折した
縛りプレイの一環です。
Eclipse Cheとは?
Eclipseが作っているクラウドIDEとワークスペース管理を統合した環境です。コードエディターはOrionを使っている模様。
CodenvyがEclipse Cheを利用するサービスを提供しています。
Dockerイメージが公開されている
DockerHubを見るとイメージが公開されているんですね。
https://hub.docker.com/r/codenvy/che/
早速イメージを引っ張ってみます。
docker pull codenvy/che
abeshinsukenoMacBook-Pro:~ mao$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE codenvy/che latest 9a261cf4b6b3 8 weeks ago 22.14 MB
いや、イメージ小さすぎないですかね?
使い方
docker for macは設定が必要らしいです。ハイパーバイザーでホストを立ち上げているので、そのIPアドレスを取得しておく必要がある模様。ちなみに、一回作っておくとIPアドレスは再起動しても変わりませんでした。推奨は .bash_profile
に入れておけ、なんですが、ターミナル立ち上げるたびにパスワード訊かれるようになります。ちょっと行けてないです。
ランチャーCLI
公式に書かれているCLI使ったインストール方法はちょっと問題がありました。シェルに書かれているいくつかのイメージのタグ指定がnightlyになってて、そもそもユーザ周りがおかしくて動かないです。環境変数を指定すれば問題ないですが。。。
とりあえずは立ち上がる
docker run
を使って起動しました。
適当にmavenのワークスペースとプロジェクトを作ってみましたが、おそらくプロジェクトごとの開発・実行環境をdockerで内部に作っているような動きをしています。作成ご、ワークスペースがdockerで立ち上がってるのが確認できます(ホスト管理下のコンテナとして立ち上がるのは筋が悪い気がする)。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d5b1013c3a17 eclipse-che/workspacefkvue7fyxxjv8ubi_machine6xhzk3ramv4gz0oa_che_default "/bin/sh -c 'sudo /us" 33 minutes ago Up 33 minutes 0.0.0.0:32774->22/tcp, 0.0.0.0:32773->4401/tcp, 0.0.0.0:32772->4403/tcp, 0.0.0.0:32771->4411/tcp, 0.0.0.0:32770->8000/tcp, 0.0.0.0:32769->8080/tcp, 0.0.0.0:32768->9876/tcp workspacefkvue7fyxxjv8ubi_machine6xhzk3ramv4gz0oa_che_default c3f1967a84b6 codenvy/che-server:latest "/home/user/che/bin/c" 37 minutes ago Up 37 minutes 8000/tcp, 0.0.0.0:8080->8080/tcp che-server
ちなみに、デフォルトではgradleのワークスペースがありません。しかし、代替案はあるようです。ドキュメント自体はありました。
ちなみに、コードエディターのインテリセンスはctrl + fn + space。これがわからなくてちょっと焦った。。。
イメージを再起動すると。。。
ワークスペース消える。。。まあ、ボリュームをマウントしてなかったので、そうかもなあ、とは思ったんですが、ホストにも残っていないようです。
それ以前に、マシン再起動したりログオフしたりするとマウントエラーが出ます。 まずなんで最初に立ち上がったんだよ、というレベル。。。
これは、lib-copyとstorageが指定されていないからみたいなのですが、docker run時に-v指定してもマウントできませんでした。とりあえずKitematicで、とも思ったんですが、これをするとsockが使えなくて、ワークスペースが作れないという悪循環。
まとめ
というわけで、いざという時にローカルで立ち上げるようにしておいて、素直にCodenvy使います。今のご時世で、ネットに繋がらない状態でコードを書くというのが考えづらいのと、Codenvyから試して最終的にAWSとかに持っていった方がいいのでは?と思ったので。
【縛りプレイ中】ローカルにインストールしない開発環境構築
何を言ってるんだかわかりませんか?私もわかりません。
永らくMacBook Pro 2011 Earlyモデルで頑張ってきたわけですが、そろそろ辛くなってきたので、MacBook Proを新調しました。バタフライキーボードに少々慣れが必要ですが、薄さも大きさもちょうどいいですね。ほぼMacBook Airレベルで使えます。
ところで、以前のモデルから5年ほど経っていますので、開発環境や動作環境など、テクノロジーのトレンドも少し変わってきています。いい機会なので、旧環境からの移行をせずにまったく新規にコンセプトを立てて環境構築をしてみることにしました。まだ始まったばかりですが、既に縛りプレイです。
コンセプト
「ローカルにアプリ/ツールをインストールしない」縛り。
まったくゼロとはいかないと思うので、まあ極力というやつです。
構想
開発向けにインストールするツール
- git
- docker
dockerとdocker-composeを使い倒して、開発用に使うアプリケーション構成もgithubに押し込んでしまおうという構想です。こうしておくと、Macではない環境に移行した時もこの二つのツールがあれば基本的に同じ環境を作って開発ができるはず。それに、dockerを中心に構築しておけば、AWSなどにコンパイルを投げる、などもできるようになるはず。
1PasswordやChromeなど、開発以外の用途でインストールするものはありますが、一応開発向けにはこの二つに縛りを入れます。
ルール
X11を使って動かすものはなるべく使わないようにします。なるべくWebアプリケーションとして動く環境を構築するルールで。上記二つのツールとブラウザがあれば開発環境が作れてしまう、というのが理想です。
それのルールでJavaをメインに使う場合に何を選択すべきか、というのがまだ調査中です。DockerHubを見てみると、Cloud9のJavaカスタマイズのイメージもありますが、公式として出していて使いやすそうなのはEclipse Cheになるかな、と。
他にもRStudioやJIRAなんかもイメージ作っている人がいるので、この辺りを活用しようかな、と。
耐えられるか?
まだ始まったばかりなので、よくわかりませんが、コンセプトとしてはそこまで間違った方向に行ってないと思うので、ちょっとの不便は目をつぶって、どこまでいけるか試してみようと思います。とりあえず、Eclipse Cheをdockerで動かすところから。
JIRAの評価が終わったのでデータベースを外部化
公式の対応プラットフォームは見よう、本当に。
JIRA アプリケーションを PostgreSQL に接続する - アトラシアン製品ドキュメント
このあたりを参考に、データベースの移行をしていました。
できればjiraもdockerで動かしたいけど、とりあえずデータベースのみdockerでやってみようと思って、以下の様にデータベース立ち上げてデータベースの移行をやってみました。
docker run --name jira-postgres -t -i -v /root/jira-data/:/var/lib/postgresql/data/ -p 5432:5432 -e POSTGRES_PASSWORD=**** postgres
で、 <jira-install-directory>/bin/config.sh
で接続情報を変えてみたら、接続テストは通るけどJIRAが起動しない、何かNullPointerExceptionで落ちてる。表示されるエラー画面がそもそもJIRAのエラー画面ですらなくてTomcatのエラー画面っぽかったので、ちょっとどうしていいかわからず。とりあえずWebのウィザード使ってみようと思って /var/atlassian/application-data/jira/dbconfig.xml
を削除、JIRAを再起動してアクセスしてみました。で、やっぱりうまくいかないんですね。インポートでエラーになります。
java.lang.RuntimeException: Could not get unique fields for table 'AO_21D670_WHITELIST_RULES
どうも、あるテーブルのユニークフィールドが取得できてない模様。Atlassianのサポートに連絡して、色々と情報を集めたりしながらやりとりをしていましたが、なかなか解決せずげんなりしていたところで、ふと気づきました。
サポートバージョンじゃなくね?
PostgreSQLのイメージはlatest使っちゃダメ、という話でした。
Supported platforms - Atlassian Documentation
latestで引っ張ってくるとPostgreSQL 9.6系です。以下の様に9.4系最新を指定してデータベースを立ち上げ直したらインポートできました。
docker run --name jira-postgres -t -i -v /root/jira-data/:/var/lib/postgresql/data/ -p 5432:5432 -e POSTGRES_PASSWORD=**** postgres:9.4
こういう時にカジュアルに環境を切り替えられるので、dockerは便利ですね。
2016年10月の読書メモ
ペルソナ5をやりたいんだが、ハードの調達は相変わらずめどが立ちません。おかげさまで読書は捗っております。
今月の読書量
試してみたいことがあって、少しコードを書く時間をとったりもしていたのでここ数ヶ月の中では少なめですね。10冊です。漫画もそれなりに入っているので、多い方とは言えないと思います。
あなたの人生の物語
- 作者: テッド・チャン,浅倉久志・他
- 出版社/メーカー: 早川書房
- 発売日: 2003/09/30
- メディア: 文庫
- 購入: 40人 クリック: 509回
- この商品を含むブログ (389件) を見る
エイリアンとのファーストコンタクトと、交流を通じて伝えられるメッセージを描いた表題作品他、科学と世界の解釈をテーマとした作品が納められた短編集。表題作品は映画化予定。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
プログラマ的な発想するな、と思ったらコンピューターサイエンス専攻してた。時制が独特なんだけど、映画化できるのこれ?収録作品のなかでは「理解」が好き。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
ハーレムの闘う本屋
- 作者: ヴォーンダ・ミショー・ネルソン,R・グレゴリー・クリスティ,原田勝
- 出版社/メーカー: あすなろ書房
- 発売日: 2015/02/25
- メディア: 単行本
- この商品を含むブログ (6件) を見る
19世紀末から20世紀、差別を覆すには知識を得るしかないと「ニグロは本を読まないから無理だ」とバカにされながら黒人により書かれた黒人の歴史の本を取り扱う本屋を始めたルイス・ミショーの物語。記録のない部分があるので、多少のフィクションは入っている。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
口は悪いし、前半生はかなりいい加減というか乱暴に生きているし、意見に偏りはあるんだけど、願っている世界とそれに対するアプローチは誠実なんだと思う。天命を見つけて、こういう戦い方ができる人は尊敬する。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
ビビビ・ビバップ
- 作者: 奥泉光
- 出版社/メーカー: 講談社
- 発売日: 2016/06/23
- メディア: 単行本
- この商品を含むブログ (4件) を見る
とあるジャズピアニストが「葬式でピアノを弾いてもらいたい」と依頼を受けることから始まる、VRとリアルをまたぐ騒動を描いたエンタメSF。近未来なんだけど、登場人物が昭和マニアで、近未来臭がしないのも特徴。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
文章がとにかく軽快。「である」調にたまに「ですます」調が入ってくる、イレギュラーな感じなんだけど、語り部がああだから仕方ないよね、という気にもなってくる。
— あべさん (@mao_instantlife) 2016年10月30日
「理屈じゃねーんだよ」とでも言いたげな発想の飛躍はこの文章だと気持ちいい。 #読書メモ_感想
3月のライオン 1巻
- 作者: 羽海野チカ
- 出版社/メーカー: 白泉社
- 発売日: 2008/02/22
- メディア: コミック
- 購入: 16人 クリック: 1,016回
- この商品を含むブログ (988件) を見る
両親を亡くし、東京で一人暮らしをしている高校生プロ棋士、桐山零を主人公として将棋界で闘う人と彼を取り巻く人を描く。
— あべさん (@mao_instantlife) 2016年10月30日
1巻は彼を取り巻く世界と人の紹介が中心。 #読書メモ_サマリ
やっぱり二階堂くんみたいなやつは好きだよ。自分の病気を見せないところとか、負けず嫌いなところとか。そんなこと関係なしにただ強くなりたいだけだから。
— あべさん (@mao_instantlife) 2016年10月30日
ギャグパートと叙情性の高いシーンの密度の違いがどことなくサイバラっぽいなあ、とも思ったり。 #読書メモ_感想
AIの遺電子 3巻
- 作者: 山田胡瓜
- 出版社/メーカー: 秋田書店
- 発売日: 2016/10/07
- メディア: Kindle版
- この商品を含むブログを見る
AI専門の医師、須藤と悩めるAIが織りなす、人とテクノロジーの間にまつわる様々な物語。また少し須藤の過去が明らかになり、彼の物語も前に進み始めている。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
今回は介護ロボットの話が特によかった。この人は話が完全に着地するよりも少し前で終わらせてくれるので、こちらが思いうるいい結末を思い描くことができる余韻があって好き。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
汝、コンピュータの夢
- 作者: ジョン・ヴァーリイ
- 出版社/メーカー: 東京創元社
- 発売日: 2015/10/13
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
人類が地球から追い出され、月や太陽系の各惑星周辺で生活せざるを得なくなった時代の人々の生活を描く連作短編集。時間に連続性があるものもあり、ないものもあり。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
特に地球を取り戻す話でもないし、新しいテクノロジーとそれに伴う倫理観の刷新、それでも持ちうるフロンティアスピリットなどを生活者視点で丁寧に設定して描いている感じがする。これはこれでいいな。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
クジラの子らは砂上に歌う 8巻
- 作者: 梅田阿比
- 出版社/メーカー: 秋田書店
- 発売日: 2016/10/14
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
チャクロは泥クジラの過去に触れ、オウニの過去に触れる。割り切れない思いを抱えつつ、着実にアモンロギアに近づく泥クジラ。一方オルカは自分の野望のため、泥クジラを手に入れることを諦めてはなかった。 #読書メモ _サマリ
— あべさん (@mao_instantlife) 2016年10月30日
自警団長の過去は胸に詰まるものがあった。この作者さんは泥クジラの住民を徹底的に追い詰めるところがあるので、これから先も彼らは受難続きなんだろうなあ、と思うと胸が痛くなるけど、先が楽しみ。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
コンパイルL
- 作者: 岸大武郎
- 出版社/メーカー: 岸大武郎
- 発売日: 2013/07/19
- メディア: Kindle版
- この商品を含むブログを見る
長野で家電修理屋を営む主人公は、過去、人工知能に人格を与えた男だった。彼と人工知能とそれを利用したい人間を取り巻くエゴの物語。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
ちょっと、主人公の設定が唐突すぎるというか、あっさりしてて感情移入の手がかりがあまり掴めない。ここまで触れないんだったら、初期ブラックジャックのように「当然のチート設定」で押し切っても良かったんじゃ? #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
MM9
- 作者: 山本弘
- 出版社/メーカー: 東京創元社
- 発売日: 2010/06/24
- メディア: 文庫
- 購入: 5人 クリック: 99回
- この商品を含むブログ (62件) を見る
怪獣がいる世界。それは気象災害と同様に扱われ、気象庁に対策部門が存在する。彼らの活躍を描く連作短編。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
ちょっとどういう扱いにしていいかよくわからない。詳しく描写して欲しいところはそこじゃない、とも思うし、会話のテンポが中途半端にアニメ狙いな感じがして調子悪い。Cthulhuさんは直島諸島にいるらしいですよ。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
バーナード嬢曰く。 3巻
- 作者: 施川ユウキ
- 出版社/メーカー: 一迅社
- 発売日: 2016/10/27
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
相変わらず本を読まずに読んだ気になって語りたいさわ子と、彼女と本をめぐる本好きのためのギャグ漫画。初出の媒体が色々と枠を超えていて面白い。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
表紙ずるいわー。世の中には知らない本がまだまだあって、読むかもしれないし読まないかもしれないけど、まだまだ退屈だけはしなさそうなことだけはよくわかる。読みたい本だけは延々と増えていく不思議。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
カンバンによるアジャイルプロジェクトマネジメント
今すぐ実践! カンバンによるアジャイルプロジェクトマネジメント
- 作者: Eric Brechner,長沢智治,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2016/06/03
- メディア: 単行本
- この商品を含むブログ (1件) を見る
カンバンの基礎から、実際の現場における導入、導入後の発展のさせ方など、ケースに応じたカンバンの利用について書かれている。各章の最後にはFAQがあり、疑問点などにも丁寧。 #読書メモ_サマリ
— あべさん (@mao_instantlife) 2016年10月30日
短いし、実践的だし、すごく取り扱いがしやすい。実際に今採用しているプロセスはスクラムバンみたいになってはいるけど、この段階での発展のさせ方なんかも書いてあって、手元に欲しくなる本(貸してもらった)。 #読書メモ_感想
— あべさん (@mao_instantlife) 2016年10月30日
今月のベスト本
2冊を除けばどれも良かったので迷うところですが、「ハーレムの闘う本屋」をあげたいと思います。自分のやるべきことを見つけた人というのは強いですね。