読者です 読者をやめる 読者になる 読者になる

カマカマの雑草ブログ

個人の日記です

ごーるでんうぃーく6日目

ぼちぼち折り返しですね。

進捗

書いた

swyvern.hateblo.jp

GWでUnity方面に振り気味なのでもうちょいサーバサイド方面にも振ってきたい。

カービィ

とりあえずボスは倒しました。STG成分多めだし、ロボ乗ってる時の爽快感あって良かったですね。
あとはICキューブ集めやります。ステッカーは気力なさそう。

その他

ジム行ってきたのにこんな時間まで起きてて完全に超回復を阻害している。
あと服買ったり囲碁クエストでbotいじめてたりしました。神の一手は遥か彼方です。

uGUIで特定の子要素のサイズに応じて親のサイズを変化させるやつ

uGUIの練習で、こういうのを組んでみた。

f:id:s-wyvern:20160504210931g:plain

やりたいこと

固定サイズのアイコンイメージが左側、右上には固定サイズの名前ラベル、名前ラベルの下には動的サイズのメッセージボックス、という組み合わせで構成されたレイアウトに対応して、このレイアウトのバックグラウンドのイメージのサイズを変化させたい。

ひえらるきー

f:id:s-wyvern:20160504203932p:plain

Cellがバックグラウンドのイメージで、Imageがアイコン画像、TextSet以下のNameが名前ラベルでTextが動的に色々入るメッセージボックス。

やり方

  • CellにHorizontalLayoutGroup, ContentSizeFitterをアタッチ
    • HorizontalLayoutGroupのPaddingとSpacingで背景画像と中身に対してのPaddingとアイコンとテキストの間の間隔を設定する
    • 縦方向に変化させたいのでContentSizeFitterのWidthをUnconstrained, HeightをPreferred Sizeに
  • CellのAnchorはCenterTopにする
    • 上辺を基準に下へ伸びる形になる
  • ImageにLayoutElementをアタッチ
    • MinWidth, PreferredWidth, PreferredHeightを設定
  • TextSetにVerticalLayoutGroupとLayoutElementをアタッチ
    • VerticalLayoutGroupのSpacingで名前ラベルとメッセージボックスの間隔を決める
  • NameとTextはそのまま
  • LayoutGroup系のChildForceExtendは全てチェックを外す

やろうとしてつまずいたところ

  • メッセージの行数が増えるとアイコンも縦に伸びる
  • メッセージの1行の文字数が増えるとアイコンが横に潰れる
    • HorizontalLayoutGroupのChildForceExtendがチェックされていると子要素が引き伸ばされる
    • 今回はWidthもHeightも不要だった

参考

逆引き、UnityのuGUIのレイアウトトレーニング(uGUI RectTransform入門その2) - テラシュールブログ

UnityのuGUIのレイアウト調整機能について解説してみる(RectTransform入門) - テラシュールブログ

よこ

ContentSizeFitterをWidth:Preferred Size, Height:Unconstrainedで横に伸びるバージョンにもなる。

https://i.gyazo.com/d16e026c9ad7aa35209f8eaf9de9f21e.gif

ごーるでんうぃーく5日目

はやおきして実家へ戻り、午前に祖父母の家で🍣と🍶を貪り、午後には川崎で友人とエビチリだったりエビチリだったり北京ダックだったり紹興酒だったりを貪りました。
食欲に忠実な一日だったと思います。進捗は全くありません。

あ、実家への行きがけでカービィが2面クリアしたところで3DSの充電が切れました。 かなしみ。

ごーるでんうぃーく4日目

昨日はなにもしませんでした。

ぎなう

せっかく有給が頂けたので何か美味しいものを食べようとお昼にうなぎを食べに行きました。

tabelog.com

そう、うなぎがとても好きなのです。
ひつまぶし目当てで両方の指で数え切れないくらい名古屋に行ったのですが、そういえば関西風ばかりで関東風を食べる機会があまりなかったと思い今回のお店に。
ふっくら上品な蒸し焼きでうなぎの旨味が伝ってきながらも、全くしつこくなく美味しく頂けてとても良かったと思います。食評が下手ですいません。

Jenkins & Dockerのアレ

GW当初やってたReusable ListViewはお休みで、Androidビルドをこの辺使ってやろうというのをアレコレしてました。

Jenkins 2.0+DockerをMacに入れてAndroid Buildに使う - カマカマの雑草ブログ

現状、趣味の開発と実務が噛み合っていないので、その辺り少し擦り寄ろうと努力した結果です(仕事はAndroid
趣味でAndroidの何かを本格的にやるならこの辺りでCDを実現させたいとは思いつつ、そもそもジョブ単位にコンテナを立てて使い捨てるのは他のジョブとの兼ね合いや将来を見通した際の運用保守の懸念を軽減させるためのものなので、個人開発でここまでやる意義があるのかというと正直微妙な気はします。
あくまで仕事の方で何か役に立ったら程度で。

ほか

カービィ買いました。まだステージ2ですが1ボスが64リスペクトだったりロボに乗った時のエフェクト超カッコよかったりロボのコピーがSDXのコピーっぽくてカッコよかったりと良い感じです。
ちまちまやってます。

星のカービィ ロボボプラネット

星のカービィ ロボボプラネット

これで前に買ったfactorioがすすまなくなる……

Jenkins 2.0+DockerをMacに入れてAndroid Buildに使う

目的

  • JenkinsでAndroid開発の継続的デリバリーを実現したい
  • Jenkinsの環境が膨れ上がるのを防ぐためDockerでジョブ毎に環境を構築したい
  • 今後iOSのビルドにも使えるようにMac上で環境を作りたい
    • iOSビルドについてはDockerコンテナ上でなくMac上でジョブを実行する

やること

  • Jenkins2.0入れる
  • Docker Toolbox入れる
  • Dockerfileで以下の環境を作る
    • JDKインストール
    • Android SDKインストール
    • SDKマネージャによるアップデート
    • Gradleのインストール <- Android SDKで入ってたら無視
  • Android Projectをcloneする
  • Dockerコンテナ上にcloneしたプロジェクトをマウントしビルドを実行する

Jenkins2.0入れる

Docker Toolbox入れる

どちらもインストーラ落としてきてインストールした。
JenkinsはHomebrewで入れようとしてもまだ1.x系らしい。tapするとか別のやり方するとイケるかもしれない。

Docker Toolboxはdocker run通らなくてCannot connect to the Docker daemon.言われたけどeval忘れてただけだった。
Cannot connect to the Docker daemon. Is 'docker -d' running on this host? · Issue #1010 · docker/kitematic · GitHub

Dockerfileつくる

良さ気な設定があるので、これをベースにする。JDK 1.8まで視野に入れた設定になっている。

https://hub.docker.com/r/gfx2015/android/

こうなる
AndroidTodo/Dockerfile at master · MKomiya/AndroidTodo · GitHub

Android Projectをcloneする

Dockerコンテナ上にプロジェクトをマウントしビルドを実行する

jenkins jobで「ソースコード管理」>「Git」からRepositoryとか諸々設定する。
その後「シェルの実行」で「シェルスクリプト」に以下を設定

docker-machine ls

docker-machine rm -f dev
docker-machine create -d virtualbox dev
eval "$(docker-machine env dev)"

docker build -t android-todo .
docker run -i android-todo ./gradlew --stacktrace test build

docker-machine stop dev
docker-machine rm -f dev

ホントはbuild.shファイルとかにしておくべきだと思う。

これでビルドまでは問題なく通る。

この後は適宜apkを保存するなりHockeyAppやDeployGateへアップロードすれば良いと思う。
ファイルは/project/path/to/build/outputs/apk/以下とかに入ってるはず。

ハマったところ

docker: command not found

JenkinsのPATHに/usr/local/binを通す。 「Jenkinsの管理」>「システムの設定」
f:id:s-wyvern:20160502210938p:plain

Host does not exist: "default"

デフォルトではdocker-machineが立ち上がってないのでcreateする必要がある。

cannot enable tty mode on non tty input

最初はdocker run -it ってやってたけどttyオプションは不要だった。

参考

Jenkins

Docker Toolbox | Docker

Dockerを用いたJenkinsの運用をしてみた話 – NET BIZ DIV. TECH BLOG

AndroidのCIはDockerでビルドするのが楽 - Qiita

ごーるでんうぃーく2日目

昨日のやつでLINQ使える部分を使ってみたりTextのサイズに応じてParentであるCellのサイズを変えようとしてContentSizeFitterやLayoutGroup系と格闘したりしてた。
既存の実装だとTableViewControllerが各Cellに対応するデータを見てHeightを決定する必要があるので、それよりはContentSizeFitterの仕組みで吸収できると良さ気だと思うけど、再利用の際に上手くデータに対応するHeightを生成できるかは中の実装読みつつ考える必要がありそう。思ったより大変。

後はなんか地元の友人と酒飲んでずっと映画見てた。

セッションとバタフライエフェクト最高だった。スクールオブロックはどうでもいい。