おでーぶでおでーぶ

いろいろ書く。いろいろ。

むしろ食われろ、餃子に

http://www.anime-line.com/animes/156/stories/2982 今年もやってまいりました、SHIROBAKO Advent Calendar 2018 4日目です。 adventar.org さて、SHIROBAKO 第12話、「えくそだす・クリスマス」の回を覚えているでしょうか? 作中で制作されているアニメ「…

2018年に開拓したオススメのビアバー or 醸造所

完全に忘れてた Beer Advent Calendar 2018 2日目です。 adventar.org もちろんこの日もビールを飲んだんですが、一枚も写真を撮ってなかったので、今年新しくいった国内外のビアバーや醸造所 *1 の中でもオススメをペタペタ貼っていきます。*2 ベルギー Bre…

静的解析(Lint等)に頼らず、ViewModelに載ってる LiveData を ViewModel 外で更新させないようにすることを考える

これはまだプロダクションで動かしてないので気をつけてください AAC ViewModel に生えた LiveData を外に出すとき、フィールドの重複宣言は面倒だし、だからといって直接 expose はしたくないし、それに MutableLiveData や MediatorLiveData を返してしま…

Kotlinの拡張関数を使って、Cursor#use すると ClassCastException で落ちる

現象 Fatal Exception: java.lang.ClassCastException: android.content.ContentResolver$CursorWrapperInner cannot be cast to java.io.Closeable 原因 Cursor が Closeable を継承するのは API 16 から。ContentResolver の返す Cursor が custom cursor …

Android app の versioning と naming

弊社ァでは今までリリースごとに1つずつバージョンを上げていたけれど、以下の問題点が存在した。 meaninglessなバージョンなので「それはアプリのx.y.zバージョンだとどれなのか」が分かりづらい。 e.g. SDK とのやり取り Internal Trackテスト版ではログが…

エミュレーターでプリインアプリを再現する

Google APIの入っていないAVDを作成しておく 今回は API 27 でお試し。 AVD name を確認しておく ls ~/.android/avd/ cd $ANDROID_SDK_HOME/tools export PATH=$PWD:$PATH # tools 以下にいないと以下のコマンドは失敗する # -writable-system で起動しない…

CircleCI の特定ブランチの特定jobのアーティファクトをダウンロードする

はい #!/usr/bin/env bash set -o pipefail set -eu export PRODUCTION_BRANCH="release" export JOB_NAME="build" latest_artifacts() { local -r build_num=$(curl -u "$CIRCLECI_TOKEN:" "https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_…

GithubのLatest Releaseからassetをダウンロードするスクリプト

はい #!/usr/bin/env bash set -o pipefail set -eu GITHUB_USERNAME="..." GITHUB_REPONAME="..." GITHUB_API_TOKEN_USERNAME="... : "${GITHUB_API_TOKEN:=$DANGER_GITHUB_API_TOKEN}" latest_gh_release() { curl -#L -H "Authorization: token $GITHUB_A…

Let's Improve Your and Co-workers' DX ~ CI Improvement Tips ~

そもそもの背景として、「自分や同僚のDX (Developer Experience) を上げる」というテーマで LT をしようとしていました。 そこで CI を設定、保守・運用するにあたって便利な Git、GitHub 周りの Tips と 具体的な CI として CircleCI の Tips を取り上げた…

OSS の公開と保守再開的な何か

最近いくつか OSS を公開したり、保守を再開しました。最近は Ruby 4割弱、BashScript 2割、Kotlin 2割、Golang 1割、YAML 1割、残りJava みたいな生き方をしています。 danger-apkstats Assertion system である danger/danger の Android apk 解析用 plugi…

java.lang.RuntimeException: Failed to parse data binding compiler options. Params: だけ出てビルドできない

multiple module構成のprojectで、とあるmoduleに汎用BindingAdapterを寄せていたら発生した。 なんのoptionがパースできないんだ・・・と思ったら android { ... dataBinding { enabled = true } ... } が抜けていただけだった。エラーメッセージ・・・とい…

Retrofit2でmultipart × multiple images をuploadする

久しぶりにやったらドチャクソハマったのでメモ interface Service { @Multipart @POST("upload") Call<Response> upload( @Part(/* images[] */) MultipartBody.Part[] images, @Part("message") RequestBody message); } Service service = getService(); List<MultipartBody.Part> parts</multipartbody.part></response>…

DroidKaigi2018を致命傷で終えて

DroidKaigi2018を終えて スタッフとしては今年で3回目の参加です。 2015年の初回は一般参加 2016年は東工大で開催だったので地の利(当時在学中)を活かして当日スタッフ 2017年は発表者兼通年スタッフ 2018年は通年スタッフ という感じ。 今回はセッション公…

みーちゃんの葛藤 #musani

SHIROBAKO Advent Calendar 4日目 (https://adventar.org/calendars/2092) です。 3Dクリエイターのみーちゃんこと藤堂美沙(とうどう みさ)を取り上げます。 主人公人5人の中で唯一のアホ毛キャラです。ちなみにこのアホ毛は重力に逆らうことのできるタイプ…

Apple IDの確認コード on macOS が👎という話

複数デバイス間で Apple ID を共有していると、以下の手順を利用してログインする必要がある。 Apple id とパスワードを入力 他デバイスで承認、確認コードを表示 確認コードを入力 例えば webログインを行なうと、手順3で新たに確認コード入力画面が表示さ…

Android Architecture Components の Lifecycle モジュールの APT を追う

Google I/O 2017 で Android Architecture Components が公開されました。 developer.android.com 簡単に Lifecycle の Observer を作成できます。どうやって実現しているのでしょうか? 試しに簡単な LifecycleObserver を作ってみましょう。 class MyActiv…

台タイプのスタンディングデスクを買った

雑記。結論から言うと以下のスタンディングデスクを買って、なかなか良いスタンディングワークライフを送っている。 ↓ こんな感じでモニターアームつけて、キーボード台は設置しないで使っている。 なんでスタンディングデスクなの? 人間は座りっぱなし・立…

特定のファイルの git addとかがめんどうくさいのでなんとかする

ある程度編集したときに「あー、このファイルだけコミットしておきたい」みたいな状況ってあると思うんですよ。 他にも「このファイルだけHEADの状態に戻したい」とか「unstageしたい」みたいな。 でも例えばJavaだとpackage名が一緒なファイルがずらーっと…

Homebrewで特定バージョンのFormulaをインストールする

mongodb を 3.4.1 から 3.2.11 にしたかったのでやってみた。 homebrew-versionsはdeprecatedだし、あんまり使いたくないなーと思ってたので使わずに。 Env brew -v # Homebrew 1.1.8-64-gc507222 # Homebrew/homebrew-core (git revision 35fb7; last commi…

3つの正規表現を知らないとハマるヨ

古来の正規表現 = 標準正規表現、basic regular expression、BRE モダンな正規表現 = 拡張正規表現、extended regular expression、ERE 独自にさらに拡張された拡張正規表現 = 長いので、超拡張正規表現とします (ちなみにもう正規言語の域を超えた) の3種類…

VectorDrawableをプレビューするChrome Extensionを作った

弊社では弱いネットワークや容量の小さい端末が普及しているような国にアプリを配布していることもあり、リソースを出来る限りVectorDrawableに置き換えています。 元SVGファイルを自動でVectorDrawableに変換し、取り込んで利用しているのですが、今までxml…

adbがUSB接続端末を認識しないとき、複数起動していたadbプロセスを適当に1個killしたらadbが復活した・・・という備忘録

OpenSTFのために adb tcpip 7xxx とか色々をガンガン叩いたあと、USBデバッグをしようとしたら端末を認識しない。 adb kill-server をしても駄目。 まあこのエラーメッセージの感じ、adbプロセスがusbを向いていないんだろう・・・と推測。 適当にgrepをかけ…

ベルギーで食べたCarbonnades flamandes à la Chimayを再現する

今年の11月頭にベルギー旅行へ行き、以下のお店へ行ってきた。 www.tripadvisor.jp B級グルメっぽい感じで、最高に美味しかった。ちなみにカードは使えず、メインが15~20ユーロ、酒ガブガブ飲んで一人辺り50ユーロとかだった。 滞在中に2夜連続突撃し、自分…

Hoegaarden White

Beer Advent Calendar 2016 - Adventar 23日目 今日の晩酌はベルギービールの中でも(色々あったことも)有名なHoegaarden White。 先日ベルギー旅行に行ったときにも飲んだんですが、聞いていた通りヒューガルデンというよりフーハールデンみたいな発音でした…

変な話ィ

SHIROBAKO Advent Calendar 2016 - Adventar 21日目。 「変な話ィ」という接頭辞でイライラさせてくれる茶沢信輔さん。 さらには勝手な発言で周りを巻き込み、責任転嫁、武蔵野アニメーション陣を「三下」よばわりする正真正銘のドクズです。 うん、この角度…

12kg

12kgは1歳男児、2歳女児の平均と同じくらいだそうです。 この3ヶ月ちょっとで12kg落とすことに成功したので、つまり僕は1歳男児 or 2歳女児を産んだということになります。 すごい。 大学入ってからの体重推移が激しすぎて、いつか身体を壊すのでは・・・? …

新卒から見た、宮森あおいに見る責任感とマネジメント

この記事は SHIROBAKO Advent Calendar 2016 4日目です。 ハードルがどんどん上がってきているので、一回休み的な形で見ていただけるとありがたいです。 僕は武蔵野アニメーションの制作進行を務めるおいちゃんこと宮森あおいについて書きたいと思います。 ※…

3rd party libraryとしてやってはいけないログ出力

問題 : 何も成功していないのに成功したといってしまう I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.common.api.Status> E/FirebaseApp: Firebase API initialization failure. java.lang.reflect.InvocationTargetException at java.lang.reflect.Me</com.google.android.gms.common.api.status>…

`Error:Build-in class shrinker and multidex are not supported yet.`

色々と開発を進めていたところ、64K問題に引っかかってしまったので Multidexを有効にしたら以下のエラーに遭遇してしまった。 Error:Build-in class shrinker and multidex are not supported yet. 文字通り build-in class shrinker と multidex は同時使…

Support LibraryのPreferenceFragmentCompatでPreferenceScreenによる遷移を有効にする

TL;DR AppCompatActivityはもちろん、PreferenceActivityに載せても動かない 自前でハンドリングする必要があり、以下のいずれかの手法を取る必要がある。 ActivityにOnPreferenceStartScreenCallback や OnPreferenceStartFragmentCallback を実装させる (A…