gradleの自分メモ その1
自分メモなので、第三者的に見たらイミフだと思われますが。eclipseでgradleプロジェクトがサポートされているらしく、コレでやってみるのが手っ取り早いっぽかったのでやってみました。
gradleの主だった機能
この辺り。
gradleのeclipseプラグインいいですね〜。これつかってればgradle側のeclipseプラグインを意識することなさそうな気が…。
とりあえず、helloworld的なことをしてみた感想つらつら。
- 基本的なノリはmavenっぽい。ディレクトリ構成などは基本、gradleが定めるCoCに従っている限り何もしなくていい。junitのテストレポートとかも出してくれるし。カスタマイズする時は各タスクの詳細を見る必要があるが、とりあえずデフォルトで行けなくなったら気にすれば良さそう。
- いまいち各タスクの詳細がよくわからない・・・EARとか見てたんだけど、deploymentDescriptorのカスタムプロパティとか、サンプルに載ってるのはAPI上どこに書いてあるのん??とか…。
- gradleエディタがほしい…。
マルチプロジェクトでなんとなくEARプロジェクト作るところまでは、なんとなく見えてきたかな〜という気がするので、今度簡単なの作ってやってみる。あ、マルチプロジェクトはこの情報が非常に良かったです。
あとEARプラグインは、gradle初心者的にはsrc/main/applicationにapplication.xmlを置くのがわかりやすくて良さそう。
やりたいことがちょっと見えてきたので整理。
環境はcloudbeesを想定。(cloudbees上でglassfish4動くぽいし)
http://kikutaro777.hatenablog.com/entry/2014/03/21/113426
今更antゴリゴリもないし、かといってmavenはよーわからんと思っていたけどgradleはパッと見良い感じぽい。とりあえずこのあたり見つつ。
- http://t.co/FaQTVjpK8F
- http://gradle.monochromeroad.com/docs/index.html
- https://www.ntts.co.jp/column/tec/java_03/index2.html
- http://qiita.com/vvakame/items/83366fbfa47562fafbf4
cloudbeesでglassfishはこの辺りか。
JerseyMVC。Strutsの代替はJavaEE系で行くならこちらですかね…。それかSpringでしょうけど。
- http://qiita.com/opengl-8080/items/f4c25ad671e8a6dac743
- https://jersey.java.net/documentation/latest/mvc.html
うむ。あとはモチベーション次第か…。
頭でっかちなアセットアロケーション検討メモ
ドーモー。
3月辺りに、ふと「そうだ、投資をしよう。」と思い立ち、色々あーでもないこーでもないと情報集めて悩んでましたが、とりあえず、一度考えをまとめて書き下したほうが、考えの整理ができるのではないか!と思い立ち、プチ腱鞘炎という言い訳をあっちに押しやって、この記事を書き始めた次第。
ちなみに元々は、あんまり細かいこと考えないで世界経済インデックスファンドに丸投げようかと考えてましたが、色々調べている内にちょっと考え方がかわり、アセットアロケーションをとりあえず組んでから考えたほうが良さそうだ!という考えに至りました。投資実戦経験がほぼゼロ(大昔株をちょっとだけ買って放置して溶けた記憶しかないw)なので超頭でっかちになってると思いますが、考えてみたアセットアロケーションを張ってみるよ。
考えてみたアセットアロケーションだよ。
ファンドの海によると、リスク12.34%、リターン4.29%。
- 株式対債券は1対1 これは世界経済インデックスファンドなどを踏襲。
- 株式比率は基本世界経済インデックスファンドに習ったが、新興国が多いからちょっと減らした
- 債券は、新興国債券をやめた
- 計算上リスクがたかったので、日本債券の割合を高めた
運用は、とりあえず信託報酬が低いものを重視する方針として
- 日本株式 ニッセイTOPIXインデックスファンド 0.3132%
- 先進国株式 ニッセイ外国株式インデックスファンド 0.4212%
- 新興国株式 野村インデックスファンド・新興国株式 0.648%
- ニッセイ国内債券インデックスファンド 0.3348%
- ニッセイ外国債券インデックスファンド 0.4104%
とすると、平均して信託報酬の割合が0.42174%、となる。
世界経済インデックスファンド1本積みするか、上記で自分でアセットアロケーション組むかの二択になるが、どうしようかな…。ということで、世界経済インデックスファンドと、自分作成アセットアロケーション運用を比較してみた結果をだらだら書くよ。
手数料観点
手数料観点では、世界経済インデックスファンドは信託報酬0.54%なので、まぁ訳0.1%程度。であれば、自動運用してくれる世界経済インデックスファンドの手間賃と考えれば納得がいく。1000万入れて、年間1万プラスくらいなら、まぁ…という気がしないでもない。ただどこかのブログでみた感じでは、世界経済インデックスファンドの実質コストは0.7%ともみた気がする。となるとちょっとどうなのよ?という気がしないでもない。
運用自由度
これは圧倒的に個別運用したほうが良い。リバランスの手間はかかるが、自分の場合は余裕資金が結構あるので、リバランス分は追加投資で賄えば暫くは楽かも。…と書いていて、世界経済インデックスファンドみたいにマザーファンド形式の場合、リバランス時に税金って取られるの?と疑問にもってしまった。税金取られないなら、それは実質コスト高分を補いうるメリットだよな…。
投資アセット
これは正直良くわからんが、まずおおまかに。投資に手を出そうと思っている理由は、日本長期的に駄目じゃない?とおもっているので、少しでも資金を海外に逃したいなーと思っているため。なので、基本的に組み入れアセットに国内資産は余り組み入れたくない。
次に、債券と株式の組入割合。よーわからんが相反する動きをするらしいし、だいたいどのバランスファンド見ても割合半々だし、個人的にそれは(・∀・)イイ!!と直感的に思うので(根拠なしw)、半々にする。
海外債権は、長い目で見ると運用効率は国内債券と同じで為替リスク分あぶねーからやめとけっていう情報が多いのはみた。でも私はそもそも海外に投資したいと思っているし、株式と債券はある程度分割したい。となると自ずと外債は組み入れざるをえない。ということで組み入れる。ゼロクーポン債買うよりは恐くないはず…w
新興国はぜひ投資しておきたい。世界経済インデックスファンドの投資割合でもいいかなーと思う反面、世間一般(ブロガー)を見るとそこまで突っ込んでる人は多くないように見えた。ひとまず10%程度に抑えて様子見。
世界経済インデックスファンドにしようか超迷っている理由
ここで私の性格を話すと、超ズボラ。部屋片付けるのも苦手だし、熱しやすくさめやすいのでインデックス投資始めたとしても、3年程度で飽き始めるはずw そう考えると、世界経済インデックスファンドに丸投げるのが、私の性格的には適していると思う。んでも、以下の点が納得行かない。
・新興国債券怖い。
これはなんとなく。超なんとなくですが新興国買うなら債券より株式かなとおもう。世界経済インデックスファンドの新興国債券17.5%は怖い。
・新興国割合多くね?
どこぞのサイトで見たり、自分でリスク計算した範囲だけど、世界経済インデックスファンドって結構リスク高いよね。私のアセットアロケーションもリスクは12.1%あるのだけど、世界経済インデックスファンドは、私が計算したサイトだと14.1%。これはちょっと怖いかな…。
・撤退戦略がとりずらい
バランスファンドを採用すべきでない理由として、一番納得できた理由。バランスファンドの場合取り崩し戦略どうするの?って問題がつきまとうというお話。個別インデックス投信に投資しておけば、適宜アセットアロケーションを変更する形で順次撤退が可能となる。まぁ…アセットアロケーションの組み換えには、税金が結構取られるが…。
その他雑感
なんとなく、アセットアロケーション的にはセゾン・バンガード・グローバルバランスファンドがかなり自分のに近いので、それでもいいかなーと思わなくもないが、手数料0.7%もあるのはやっぱり気になる…。あと、当初はSMTインデックス・バランス・オープンをなんとなく考えてたけど、REITって市場規模ちっちゃいから分散投資対象としてどうなの?というブログを読んで超納得したので、これもとりあえずは、やらなくても良いかなーと考えた次第。
さて、実際にこれでいくとした場合、次は資金投入方法を考えなければですねー。
マルチプロジェクトをやってみる
レガシー現場に1年半ほど潜っていました。で、なんか近々似非アーキテクトの仕事をしなくちゃいけなそうなので、ちょっとずつ感覚を作らないとまずいかなと思ったので、暇な時に日記再開してみる。
まずはビルド周りからはじめてみようかなぁと。
今のプロジェクトはコピペによるクラス数超増大化にも関わらずWARもEARも1個なので、ビルドにもデプロイにも時間がかかりまくってる。CIもなくて、UTも腐っていて、ひどいひどい。。。
なので、サブプロジェクト化するための手立てを知っておかないと的な。これ終わったらJenkinsでCI化もしよう。世間的には超今更的な話題なので、完全自分備忘録にすぎませんが。Mavenかivy(最近はsbtとか言うのも流行ってるの?)かな〜とちょっと考え、Mavenは昔ちょっと試して心が折れた記憶があるのと、以前のプロジェクトで枠組みが構築済みだったとはいえivyに触れていたこともあったのでivyにしてみた。
■サンプルはこのへんにアップしてみている。
https://github.com/minokuba/ivy-multiproject/tree/master/ivy-multiproject
■参考記事はこの辺り。
http://ant.apache.org/ivy/
http://d.hatena.ne.jp/ryoasai/20110101/1293904479
http://www.glamenv-septzen.net/view/1099
■感想
夜中にふとおもいたち、あんまりマニュアルとかみないで適当に、ivyに添付されている「multi-project」を適当にいじる感じでやってみたがそんなに難しくなかった。所詮はantなので。
というのさえ覚えておけばいいだけだし。「multi-project」のサンプルは、common.xmlをインクルードすることでプロジェクト毎に固有のantを書かなくてもいい場合のサンプルになっていて大変わかりやすい。おすすめ。もうちょっとまとめたら、サンプルをWARにしてみようと思います。
■思うこと
業務アプリ開発で、サブプロジェクト分割ってどんな感じでやってます?という疑問。今までいた業務はどれもレガシーだったので、アプリ規模にかかわらず1EAR=1WARでやっていてアホかと思うわけですが、じゃあサブプロジェクトが乱立してもそれはそれで面倒くさい。依存性解決の問題もあるし、そもそも管理対象が増えるとややこしくなるというのはあるわけで。
あとサブプロジェクトを分けた場合は、サブプロジェクトごとに別WARにしたくなりますが、HttpSessionがWAR毎に作られてしまうというのがまた面倒なわけで。。既存のフレームワークとかをコピペして開発する場合(なんかそうなりそうな気配)、それやって大丈夫なのかとか調査できるのかどうかとか心配なわけで。。
EclipseでGitを使う
1年ぶりにGITHUBにコミットしようと思って環境作ろうと思ったら、前の記事のリンク先がデッドリンクになっていた。なので、使えたリンク先を貼ってみます。それだけです(特に情報発信はない)
http://gomafuace.seesaa.net/article/301556194.html
eGitプラグインでGithubにとりあえずコミットする手順
前に作っていたBOTアプリを久々にいじっていたらモノの弾みでプロジェクトを破棄してしまいました…。自宅でお遊びする時でもコミットはしましょうと反省。で、どうせやるならなんか流行ってるっぽいGithubを使ってみようと思いました。ぶっちゃけ今更ですが、まぁ自分にとっては初めてなので、自分向けに作業手順を残しておきます。
1)Github環境作成+Gitインストール
- https://github.com/ でアカウント作成
- http://help.github.com/win-set-up-git/ をとりあえず実施。
eGit前提の場合ってGitクライアント入れる必要あるのかな?と思いつつもとりあえず実施。
2)eGitインストール
3)ローカルリポジトリの作成
- プロジェクト選択→右クリック→team→share project。
- Gitを選択
- 以下のような画面が出るので、「Use or Create repository in parent folder of project」にチェック入れてcreate repository。
- Finishだったかな?たぶん。
最初は「Use or Create repository in parent folder of project」にチェック入れないでいじっていたら、ワークスペース自体がリポジトリのフォルダそのものになってよくわからない挙動*1したので、ひとまずプロジェクト直下の.gitディレクトリをローカルリポジトリにするやり方にしてます。
4).gitignore
- クラスファイルとかコミットされると面倒なので、ローカルリポジトリへのコミットをするまえに、予め.gitignoreを作ってプロジェクトフォルダの直下に置いておく。役割的にはsvn:ignoreと同じですね。以下はplay向けの設定
http://tobysoft.net/wiki/index.php?git%2F%CC%B5%BB%EB%A4%B9%A4%EB%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%BB%D8%C4%EA%A4%B9%A4%EB%CA%FD%CB%A1%28.gitignore%A4%CB%A4%C4%A4%A4%A4%C6%29が参考になりました!
*.class
tmp/
5)ローカルリポジトリへのコミット
- プロジェクト選択→右クリック→commit
6)リモートリポジトリの設定
- エラー画面っぽくなるので、addをおして…
7)リモートリポジトリへのpush
- プロジェクト選択→右クリック→team→remote→pushを選択。
- なんか画面が出るのでnextおす。
- source refにrefs/heads/master選択しAdd Spec。
Finishを押すとpushされます。
これでpushするまでの手順ができました。…はいはい今更今更ですね…。
*1:ちゃんとGitのこと勉強しないでやってるから悪いんですね…。何やってるのか半分くらいわかってない。