どくぴーの備忘録

真面目なことを書こうとするクソメガネのブログ。いつ投げ捨てられるのかは不明

ButterKnifeがアップデートされたよって話

Androiderみんな大好きJakeWharton神のプラグインButterKnifeがv7.0にアップデート(現時点ではv7.0.1)されたら割と色々変わったらしい.

Changelogを見てみる

github.com

すごい要約するとこんな感じ

  • @InjectView@InjectViewsの代わりに@Bindを使うことになったよ!
  • ButterKnife.injectButterKnife.resetがそれぞれButterKnife.bindButterKnife.unbindに変わったよ!
  • @Optionalアノテーションがなくなってsupport-annotationsとかにある@Nullableを使うようになったよ!
  • @BindxxxでResource Bindingができるようになったよ!

ちなみに@Optionalは「そのレイアウト上に存在しないかもしれない」Viewを定義するときのアノテーション

んで,何が変わったのさ

上2点は,そのまま置換しましょうねーって内容.新しく書くときは複数のViewをinject/bindするときに複数形にしなくても@BindでOKになったよって変更くらい…かな?

FragmentのonDestroyViewでのButterKnife.reset -> ButterKnife.unbindに関しては下の記事にも書いてあるように記述することをよく忘れがちなので忘れないようにしよう.じゃないと正しくViewが破棄されずにつらいことに

qiita.com

@Optionalアノテーションの廃棄からの@Nullableの件に関してはsupport-annotationsの@Nullableでも他のライブラリ等で使われている同名のアノテーションでも大丈夫らしい.

んで,Resource Binding.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin" >

    <TextView
        android:id="@+id/text_hoge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

こんなかんじにViewを定義して

<string name="hello_world">Hello world!</string>

XMLにリソース書いて

public class MainFragment extends Fragment {
    private static final String TAG = MainFragment.class.getSimpleName();
    private final MainFragment self = this;

    @Bind(R.id.text_hoge)
    TextView mHogeText;

    @BindString(R.string.hello_world) //String Resource Binding
    String mHelloWorld;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        ButterKnife.bind(this,rootView);
        mHogeText.setText(mHelloWorld);
        return rootView;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        ButterKnife.unbind(this);
    }
}

Fragmentを書いてあげると

f:id:e10dokup:20150702005102p:plain

こんな感じに,getString(R.string.hoge)とかしてあげなくても,ちゃんとStringにXMLで指定したリソースがbindされる.便利っぽい.当たり前っちゃ当たり前だけど@BindStringStringに,@BindBoolBooleanにと,ちゃんと型を合わせないとビルド時に落ちるので注意.(書いてる人は@BindStringTextViewに当てたらそのままsetTextされるのかと勘違いして見事に死にました)

まとめ

ライブラリとかの最新の動きはちゃんと追いかけないとダメだなーって思いました.急ぎで雑な記事ですいませんでした(土下座)

【Illustrator CC 2015】なんかパスの描画が妙な雰囲気を放っている時の対策

※ CC 2015のアップデートの目玉機能を殺すその場しのぎの対策です!

Illustrator CC 2015が(ちょっと前に)リリースされた.リリースノートを見る限り

  • オートセーブ搭載
  • ズーム最大倍率64000%まで追加(!?)
  • ヌルヌルズーム搭載
  • ツールとの連携機能大強化

などなど.色々変わった感じ.喜び勇んでアップデートするも…,

f:id:e10dokup:20150624002856p:plain

※ パスは全部線幅一緒の直線です

▂▅▇█▓▒░('ω')░▒▓█▇▅▂

どうもまともな直線が見えない結果に.しかも一部消えてて何が何だかって感じ.

どうしたものかと思ってると,ロケットっぽい新ボタンが見える

f:id:e10dokup:20150624003617p:plain

どうやら新機能で追加されたGPU支援用の項目らしい.とりあえずおもむろに解除してみる

f:id:e10dokup:20150624003759p:plain

すると,以前のようなちゃんとした直線が見えるようになりました.やったぜ.

ただしGPU支援でアニメーションズームを行っているので,その機能は無事にお亡くなりになりました.

何が言いたいかというと

Adobeバグフィックスアップデート早くお願いします

LGV32 isai vividを買って三週間ほど使い続けてみた

f:id:e10dokup:20150619112445j:plain

isai vividを発売直後に買ってレビュー記事書こう書こうって言ってたら三週間ほど使い倒していた

なんで買ったの

auから「新しいisai vividを使いませんか」的な感じで10000円割引DMが降ってきたので,勢い.

スペック

Content Value
SoC MSM8992 Snapdragon 808
RAM 3GB
ストレージ 32GB + MicroSDXC ~128GB
カメラ 16MP F1.8(レーザーAF,光学式手ぶれ補正)
ディスプレイ 5.5インチAH-IPS WQHD(2560*1440)
OS Android 5.1
バッテリ容量 3000mAh
その他 防塵,防水,フルセグ対応

SoCが810ではなく808なのが同時期モデルとの大きな違い,810搭載機は軒並み死亡している感じがあるので,808搭載機はもしかしたら当たりなのかもしれない.

歴代isaiと比較すると

  • 電源,ボリュームボタンがローカライズ元のLG Gシリーズと同様に背面に配置
  • バッテリの取り外しが可能に
  • 前面からisaiロゴが消えた

くらいの見た目の相違.バッテリ交換可能になったのはなかなか嬉しい

実際使ってみて

これまで使ってたのが初代isai(LGL22)なのもあって,非常にサクサク快適だった.具体的に良い点,気になる点をまとめてみると

良い点

  • バッテリの持ち時間がだいぶ長くなってあまり残量が気にならなくなった(M updateが来たらもっと良くなるのかな)
  • ヘキサコア + 3GB RAMは最上位構成ではないにしろ超強力.
  • WQHDディスプレイはオーバースペックかと思うほど綺麗.「この鮮やかさに,あなたは驚く」なんてコピー打ってるだけはあると思った
  • カメラめっちゃ綺麗だと思った(こなみ)
  • OS側がLollipopまで進化したのもあって,安定性も快適性も向上した気がする

気になった点

  • (充電中に)熱くなるとパフォーマンスが露骨に低下する.スクロールがめちゃくちゃ反応悪くなったり
  • Wi-Fiテザリングの立ち上げがめちゃくちゃ安定しない.ONにしたら何故か3秒くらいで落ちる
  • USBデバッグがカメラ(PTP)接続でないと起動しない.初代isaiは充電接続でできたのに…
  • でかい(しょうがない)

ちなみにホーム画面については,購入直後にGoogle nowランチャーをぶっこんだのでわかりません(・ω<)☆

端末の発熱も普通に使ってるだけじゃほとんど起きないし,元の端末がだいぶ古いのも相まって,全体的に高評価な感じ.

テザリングの件は不具合なのだろうか,アップデートでの対応を…

まとめ

最新機種買えたので嬉しいです

おまけ

  • 初回起動時にいきなり初期不良引き当てて店の奥にその店最初のisai vividがドナドナされていった.初期不良怖い
  • mamorino 3を2台契約したら端末代が更に40000円引かれて無料通話1000円分降ってきた.電話決行するしこの変更で込み込み支払い月10円増しなので割と得っぽい
  • キャリアショップのお姉さんが説明がわかりやすくて助かった(めっちゃタブレット勧められたけど丁重にお断りした)
  • 買って二日目に地面に落とした.悲しい

大阪ITインターン逆求人に参加してきました

先週はいろいろとイベント漬けで色々書きたいことがあったりなかったりするのですが,とりあえずこの話題から.

きっかけ-前日くらいまで

でなりくんの関係もあって昨年度在籍していた明石高専に遊びに…,もとい,逆求人フェスティバルの紹介に来てくださった逆求人のしおみさん(@NaitoShiomi)から,4月の半ばくらいに「インターン逆求人参加しない?」とのお誘いを受けて,そしたらしおみさんから今度は大学生を担当している(でいいのかな?)あゆみさん(@gyakukyujinayu)を紹介していただき,自分のPRやらスライドやらを指導して頂いてました.

しおみさんが初めて会った時の僕のLTのお陰で最も優先度の高い呼び方が「クソメガネ」と化したので,なんとかそれも含めようスライドを作ってみたところ,こんなシロモノが出来上がりました.

www.slideshare.net

前日-当日の深夜くらい

逆求人のメールボックスを覗いてみると,何社からか「PR見たよ!面白そうだし是非お話させて欲しいです!」みたいなニュアンスのメールを何通かいただき,楽しみと期待と妙な不安が入り混じりながら塾講師のバイトをしていました.

そして,家に帰ってからはメールを返信したり,「なんか動くものほしいなwww」とか言い出してKonashiと去年のTechCrunch Osakaハッカソンで頂いたStuduinoを引っ張りだして夜な夜なラジコンもどきを作っていました.

当日朝

珍しく目覚ましより早く起きて準備をして,未だに日本橋コスモスクエア以外への行き方が全くわからない大阪市営地下鉄を乗り換え案内を頼りに移動.この時点で夜なべして作ったラジコンもどきに対し「くっそ邪魔だなこいつ」とか思ってました.

実際会場について,ビルの20階で受付して,いざ荷物準備だーって使えそうなものをばらまくと…

明らかに周りより荷物が多い

他の参加者の机をチラリと見ると

  • パソコン
  • (持ってる人は)iPad
  • 名刺ケース

とかがほとんどなのに,僕の机だけ

  • パソコン
  • 名刺ケース
  • モバイルディスプレイ
  • スマートフォン
  • メモ用のボード
  • 例のラジコンもどき

とやけに窮屈.

名刺交換

名刺交換経験のある猛者のお手本名刺交換の後,企業の方との名刺交換会がありました.プロフィールでいい印象を頂いたのか,なんか色々机の上にありすぎて興味を持っていただいたのか,結構いろいろな方と名刺交換させていただきました.お願いです前者であってください(?)

お昼休憩

コロプラさんがOculus Rift DK2で遊ぶ白猫プロジェクト」(!?!?!?)を持ってきてくださっていたため,「全く白猫プロジェクトをプレイしたこと無いのに」ちょっと遊ばせていただきました.ちゃんと首振ったら景色動くしすげぇなこれって感じでした.Oculus Riftがポータブルで動く環境用意しようと思ったら3 [kg]は軽く超えるようなゲーミングノート持ち運ばないと大変なのに…,お疲れ様です(?)

ちなみに白猫プロジェクトならぬタダ飯プロジェクト(?)は失敗しました.せっかくなのでぽはるくんとラーメン食べに行きました.美味しかったです(遠い目)

面談

今回のITインターン逆求人では30分1タームの全部で8タームあって,お昼休憩が終わったらどのタームにどの企業さんと面談するのか,っていうスケジュール表が渡されるのですが…,半分くらい埋まればいいかなと思っていましたが,7社 + 面談枠に入れなかった企業4社の計11社から面談希望を頂きました.ありがとうございます(土下座)

実際何話していたかというと…

  • プログラミングの勉強の仕方
  • プログラミングは「趣味」
  • お金のお話
  • キャリアプラン,進学とか就職とか…
  • いろいろな会社の中の話
  • インターンのお話

とまぁこんな感じ.インターンのお話ももちろんしていたのですが,それ以外の話でもすごく盛り上がっていました.

打ち上げ

通称「第9ターム」.女子力の高そうなテーブルに放り込まれて(?),タガが外れたように唐揚げを食べていました.美味しかったです.

あと文系 & 社会人ってすごいな,こわいなって思いました.

感想

逆求人自体の存在はだいぶ前から知っていて,今回,ついに参加させていただいたのですが,非常に楽しく,また勉強になりました.僕自体はインターン以外の話でかなり森ががっていたけど,今回はインターン逆求人だったのもあって雰囲気がちょっと違ったのかな?

「コネもアテもないけど学校の外でインターンシップを探したい!」とか「今の自分の実力・実績を見てもらいたい!」とか「企業の人と人生相談したい!(?)」と考えている人には特におすすめです.G-Valueという評価チャートで後々自分がどのような評価をされていたのか分かりますし,自分がどんな位置にいたのかわかりますし,「今の自分で企業の方にどんなふうに評価されるんだろう?」と思っている人にもいいかなー,と.ちなみに僕はほぼ平均ライン上で,プレゼンだけちょっぴり平均以上でした.自己アピール能力を磨かないとなぁ,と思いました.

Code for KOSEN勉強会 #3に行ってきた(と同時にAndroidのテストについて調べてきた)

codeforkosen.doorkeeper.jp

に行って発表してきました.卒業した学校に約一ヶ月強で舞い戻りました.

発表したこと

Androidのテストを書いたことないのにnoobAndroidのテスト入門について発表してきました

www.slideshare.net

やろうと思ったきっかけは次の通り.

  • この間開催されていたDroidKaigiのハッシュタグを追いかけていたらよくテストの話が出てきた.
  • テスト書けよと様々な方面から煽られた
  • これからちゃんとAndroidアプリを書かなければならない状況になるので「ちゃんと書くならテスト勉強しないとな」ってなった

とりあえず資料だ資料

まず,少し古い本ですが日本Androidの会 テスト部の「Androidアプリテスト技法」を購入しました.

www.amazon.co.jp

斜め読みで読みきって「ふむふむ」ってなったところで最新の参考資料をQiita先生なりgoogle先生なりに問い合わせてみて,

qiita.com

qiita.com

kirimin.hatenablog.com

この辺りの記事に辿り着き

  • ライブラリはいろいろあるけどGoogle様はUIテストにはEspresso 2.0を使えとお告げなさっていること
  • Junit4で結構綺麗にテスト書けるやん的感想

を得た感じ.

おわりに

ライオンに怒られないようにこれからテスト頑張ります(´へωへ`*)

クソメガネの自己流Mac環境構築

※ 2015/4/28現在での話です!閲覧時期によっては別の方法が良かったりします

現在使っているMacBook Air(mid 2013)をMavericksで運用していたのですが,Yosemiteにアップデート,というよりクリーンインストールしました.

事の始まり

qiita.com

rootpipeなる「root奪えてsetuidもできてしまうやりたい放題な激ヤバ脆弱性」が発見されたそうです.その脆弱性を受けたAppleは「10.10 Yosemiteはアップデートで修正するが10.9 Mavericks以下は修正しない」という予定を発表.Mavericksが気に入って使ってた(というよりYosemiteにアップデートする機会がなかった)のですが,そんな脆弱性が残ったバージョンではさすがにまずいと思って,アップデートしようとしたものの

  • TeX( + Homebrew?)を導入していると延々とアップデートが続くらしい
  • 前回頑張って掃除したストレージがまた空きが減ってきてキリがなくなってきた

等々の理由により,「いっその事クリーンインストールしてしまおう!」となった次第

とりあえずバックアップ

当たり前ですがすべてのデータは吹っ飛ぶので,コードはgithubにちゃんとプッシュしておくなり,メディアはUSBメモリに一時避難させるなり,Google DriveDropbox,Copyといったクラウドストレージにぽいぽいするなり,Time Machineでバックアップをとるなりしておく.

いざクリーンインストール

覚悟を決めたらクリーンインストール.やり方が分からなくても「Mac クリーンインストール」とかでググればだいたい出てくる

環境構築

ここが本題.

とかにあるように,Macの環境構築というとHomebrew + brew-cask + Brewfileで brew bundle を実行して導入を自動化すると幸せになれたらしい

が,

などにも書いてあるようにBrewfileは上記二記事に書いてあるような方法を使うと怒られるようになってしまい,Brewfileをシェルスクリプト化したりしないと動かないようになってしまった.

ということはもうBrewfileはこんなことしないと使えないのか,…ということはなく,

のようにPythonで書かれた構成管理ツールAnsibleでHomebrew自体を管理したり

のようにBundleを引き継ぐようなリポジトリも存在している.

そこで,今回はBrew-fileを使ってMacの環境構築を行うことにした.

github.com

インストール自体は

$ brew install rcmdnk/file/brew-file

でOK.続いて,dotfiles等にすでにBrewfileを作成済み(筆者はこのパターン)な場合はそのBrewfileを持ってくる.持ってないなら

$ brew file dump

で空のBrewfileを作成できる.

ちなみに筆者のBrewfileは以下の通り.App Storeで管理しているものもいくつかあるのでそれは後で手動で入れる感じ.

# Homebrew update
update
# reload Formula
formula
# add repository
tap homebrew/binary
tap phinze/homebrew-cask

# packages for development
install git
install vim
install imagemagick
install wget
install heroku-toolbelt
install rbenv
install ruby-build
install tmux

# brew-cask
install brew-cask

# applications from cask
cask install android-studio
cask install arduino
cask install bettertouchtool
cask install caffeine
cask install dropbox
cask install iterm2
cask install kobito
cask install macvim
cask install virtualbox
cask install google-chrome
cask install google-drive
cask install sublime-text
cask install atom
cask install alfred
cask install dash
cask install java
cask install rubymine
cask install intellij-idea
cask install slack
cask install sourcetree
cask install flux
cask install skitch
cask install macvim
cask install google-japanese-ime

# delete unnecessary files
cleanup

筆者はAlfredを使用しているのだが,少し前だとbrew caskを用いて導入した.appはそのままではalfredから呼び出せないので, alfredにcaskでインストールする.appのディレクトリを検索パスに与えるために

brew cask alfred
brew cask alfred link

を実行しないと行けなかったのだが,いまこれをやろうとすると

==> Great news!
==> As of v2.6, Alfred now has first-class support for Casks out of the box!
==> So there's no more need for `brew cask alfred`. Go upgrade your Alfred! :)

なんて言われる.どうやら,Alfredがデフォルトでcaskでのデフォルトのインストール先のパスも検索してくれるようになったので,何も考えずに導入するならAlfredに関しては心配が要らなくなったみたい.

ちなみに,じゃあデフォルトのインストール先はどこなんだというと,「/opt/homebrew-cask/Caskroom」になり、「~/Applications」にシンボリックリンクを貼るらしい。 これを変えたい場合は、「HOMEBREW_CASK_OPTS」という環境変数に指定すれば変更できる。なので,homebrew同様に「/usr/local」下に配置したり,シンボリックリンクを「\Application」に貼るようにもできる.具体的には

export HOMEBREW_CASK_OPTS="--appdir=/Applications --caskroom=/usr/local/Caskroom"

を実行するとOK(appdirとcaskroomのパスは各自で決めてね).ただし,caskroomのパスを変えると今度はAlfredが.appを検索できなくなるので,変更したらAlfredのPreferencesのFeaturesタブのSearch Scopeにcaskroomのパスを追加することを忘れないように.

ここまでやったら,あとはbrew file installを実行する,…のだが,デフォルト設定では,「/usr/local/Library/Brewfile」にあるBrewfileを読み込もうとするので,

export HOMEBREW_BREWFILE="(自分のBrewfileの置き場)"

に設定してあげたり,-f <FILE>で実行時に指定してあげたり,「/usr/local/Library/Brewfile」にシンボリックリンクを貼ってあげたりしてから実行する.するとあとは自動でインストールをゴリゴリしてくれる.楽ちん.

あとはdotfiles適用したり,自分好みの環境に戻しましょうねって感じで完了です.

終わりに

僕のMBAが外装以外は新品同様に生まれ変わりました.空き容量は現在80GB強です.
Brew-fileなりで環境構築をやりやすいようにしておくとバックアップさえきちんと取っておけばクリーンインストールが手軽にできるので便利だなって思いました.

神戸大学へ編入を果たしました

心機一転でございます.どくぴーです.

5年間どっぷりハマる…もとい,ガッツリ慣れ親しんだ明石工業高等専門学校をついに卒業し,無事に編入学試験に合格した神戸大学に編入学を行いました.

編入学して

  • 編入学は高専生ばっかりするのかなと思ってたものの,いざ入ってみたら2:4で大学編入生のほうが多かった
  • もう一人の元高専生は id:pt_okn の元同級生で知り合いの知り合い.世界は狭い.
  • 明石高専の某氏の話題を出したところ,普通に通じたりした.この界隈は狭い.
  • バスに乗れない.というかバスが混みすぎて一台来ても5人くらいしか乗れないし登山したほうが普通に速い
  • 単位認定という「前の学校でとった単位を認めてあげるよ」的制度で認めてもらえる単位数がみんな固定だった
  • 「明石高専の編入生です〜」と先生に名乗ったら高専1年生の時のプログラミングを担当していた先生の話になった.
  • 「パソコンを買ったらまずWindowsを消します」
  • 演習室がみんなMac miniHHKBでブルジョワジー
  • 図書館になんか本がいっぱいある
  • ラーメン232円

大学生活とは特に関係のない目標

  • マテリアルデザインを使ったTwitterクライアントアプリを考え中.勉強も兼ねて形にできたらいいなぁ
  • Ruby on Railsをまた勉強しだしました.インフラ周りの知識も合わせて勉強していきたいです
  • で,でざいん(白目)

いろいろと高専とのギャップを感じていますが,授業も興味のあるものも多いし,忙しいなりに楽しくやっていけそうです.これからも頑張ります.

次回予告

現在Marvericksを導入している手持ちのMacBook Airさん,しかし「ものすごい簡単にrootを奪える脆弱性」がOS Xに発覚.
AppleはまさかのYosemite未満の全OSの脆弱性放置を発表.これではアップデートせざるを得ない…. しかしどうせアップデートするくらいならクリーンインストールで一度綺麗にしたいもの.
悩めるクソメガネはいろんな記事を読みだしてMacの環境構築を考える…
次回「クソメガネの自己流Mac環境構築」,二週間以内には更新できたらいいなぁ.