おでーぶでおでーぶ

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

v1 scheme 互換の v2 scheme 署名 apk を手動で作成する

source.android.com モチベーション 今更なんでそんなことを手動で・・・と思うかもしれませんが、AndroidStudio 3.5 かつ minSdkVersion 24 以上の場合、署名 scheme が自動で判定されるようになりました。 v2 scheme は Android N、つまり API 24 から動作…

Kotlin Fest 2019 で Deep Dive into Kotlin DSL という発表をした

Kotlin Fest 2019 - connpass 「Kotlinを愛でる」をビジョンに、Kotlinに関する知見の共有と、Kotlinファンの交流の場を提供する技術カンファレンスです。 というカンファレンスで、45分枠「Deep Dive into Kotlin DSL」を英語でやりました。 speakerdeck.co…

新しいベッドマットレスを買ったら快眠マンになったので買った方がいいよという話

今の家に引っ越して約4年。そのときに買ったニ○リのベッドマットレスを使ってきた。 購入当初はしっかりした作りで超快眠だったけれど、さすがにへたってきたのか、最近はマットレスの中央(ケツの部分)が沈みやすくなってしまった。 そのまま仰向けで寝ると…

internal app sharing と DeployGate の機能差早見表

この記事は DeployGate 社員としてではなく、アプリ開発者の見解として書いています(おわりに、を除く)。また Beta などの他のサービスとの比較は入っていないので、internal app sharing または DeployGate の2択として記述しています。 TL;DR 完全無料がい…

CircleCI (Workflow) の tags filter でドキュメントを誤読してハマった

CircleCI (Workflow) の tags filter で document を読み違えてハマったのでメモ。 Configuring CircleCI - CircleCI CircleCI では filters 機構を用いて、tag/branch ごとに job の実行を制御することが可能。*1 例えば master branch のみで実行したい場…

KotlinFest 2019 CfP に応募した

Deep Dive into Kotlin DSL DSL の話から Kotlin DSL (Gradle Kotlin DSL じゃないよ)について触れ、自分たちでも DSL を構築する方法を知る・構築できるようになることを目的とした発表です。 日本語で出したんですが、英語発表でもいいよと書いておきまし…

GitHubなどで Issue/PR ごとに情報を読み書きする

GitHub などを使っていると PR Review だのなんだのを自動化したくなりますよね。 ただ GitHub Issue などには Issue ごとの metadata attachment みたいなものがなく、何かしらの方法で情報を保存する必要があります。 CI のキャッシュを用いて、キーを PR …

フィルターコマンドと組み合わせると幸せになれるコマンド集 その1

fzy, fzf, peco などなど様々なフィルターコマンドがこの世にはあるけれど、結局それで何をすれば DX があがるのか・・・と言われたので、よく使うやつを羅列しました。とりあえずその1ということで。 GitHub - jhawthorn/fzy: A better fuzzy finder GitHub…

git git status がつらいと聞いて

最近某社の人と、「そういうコマンドあったんだ」みたいな話ってあんまり外に出てこないし、無駄なことしてる可能性あるよね(意訳)みたいな話をした。 ということでそういうコマンドをどんどん書いていきたい。 1個目は git git 問題。 git まで打って、少し…

コマンドのマニュアル・サンプルで使う記法について

よくコマンドの実行例で以下のような記法を見ることがあると思う。 $ git add <file>... これは man で使ってる記法を元にしてることが多い。ただ「コマンドのサンプル(マニュアル)はこう書け」という厳密な構文が存在するわけではなく、MicrosoftやIBM始め、ある</file>…

Kotlin DSL を考慮した Gradle Plugin を記述するために必要だったこと

とある Gradle Plugin を 2.0.0 に移行する際、v1 から Kotlin DSL を使っていた人の環境でちょっと問題が発生したというツイートを見たので、Kotlin DSL がどうやって DSL Marker なしに lambda で書けるようにしてるのかちょっと調べてみた。ここで記述し…

DroidKaigi 2019 スタッフ業

今年もスタッフでした。昨年の致命傷はこちら。 jmatsu.hatenablog.com 今回は 採択後のスピーカーとの各種やり取り タイムテーブル周り アプリなどで使うAPIの作成 公式アプリのメンテナー(特にCI) 前日設営配送周り Day1 のホール周りの下拵え(圧倒的 keim…

buildSrc や Gradle Plugin の開発のために Debugger を当てる

buildSrc 内のソースや Gradle Plugin の開発中でも Debugger を当てたいときはあると思う。 ./gradlew <any task> -Dorg.gradle.debug=true --no-daemon 非デーモンのデバッグモードで Gradle を立ち上げると、Debugger Attach 待機状態になる。デフォルトのポートは </any>…

pre-Lolipop でも TextView に icon tint を書けたい

MaterialComponent 対応をしていて、menu iconなども全部 theme baseのカラーリングにリファクタリングしている。 その中に pre-Lolipop でも TextView のicondrawable にtintが効かないというものがあったので、以下の方法で対応した。 import android.cont…

2018 年の振り返り

自分用のメモも兼ねて 人生 月 内容 1月末 Quipper を退職 2月頭 DroidKaigi 2月~ スノボいきまくる 2月~ 業務委託を2件持ってみて、忙殺される 4月頭 DeployGate に入社 5月 会社のお金で I/O 8月 KotlinFest のお手伝い 8月 我が家納骨所になる*1 10月頭 …

2019年を振り返って

セブンからの帰り道、しほちゃんちの鍵を自分の家のオートロックに差し込もうとして刺さらなくて困惑しながら2019年を迎えた。 上の階の人がハッピーニューイヤー!おやすみ!って叫んでた。 完

むしろ食われろ、餃子に

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人の中で唯一のアホ毛キャラです。ちなみにこのアホ毛は重力に逆らうことのできるタイプ…