Infinito Nirone 7

白羽の矢を刺すスタイル

val age = 0x20

やったね僕も二十歳(16進数)になりました! 去年の自分はなにか目標でも立ててたのかと思って振り返ったら何もありませんでした。代わりに DroidKaigi がコロナ禍の始まりとかちあって中止となったことで、それまでのいろいろな準備をせめて何らかの形でア…

ViewBinding を用いた View の操作をユニットテストする

ViewBinding を使うと View のアクセスを簡略化 & @NonNull を標準として堅牢にロジックを作れるようになります。 ここでこの ViewBinding を用いて次のような View の操作をメソッドとして定義したクラスを作ったとして、そのクラスにあるメソッドをユニッ…

2020振り返り

なんやかんややってたら2020年も終わってしまうので振り返っておきます。来年になにか活かせるかどうかは分からない。 技術者視点で DX (Developer Experience) を上げていく活動 ここの DX はデジタルトランスフォーメーションではなく、デベロッパーエクス…

軽井沢ワーケーションをしてきた

12/13~12/16にかけて星野リゾート BEB5軽井沢でワーケーションをしてきました。 BEB5軽井沢 初日の日曜日は移動日で、車を借りて軽井沢まで行きました。シーズンとしては雪が降ってもおかしくないところを走るため、レンタカーもスタッドレスタイヤのオプシ…

劇場版 SHIROBAKO のエンディング

この記事は SHIROBAKO ADVENT CALENDAR 2020 10 日目の記事です。 とにかく劇場版 SHIROBAKO のエンディングが素敵なのだ。多分にネタバレを含むので、まだ劇場版を見ていない方はいますぐ U-NEXT にサインアップして見てほしい。何ならテレビ放送の分まで配…

自宅に STF (Smartphone Test Farm) を立てて検証端末を管理する

コロナ禍のなかで検証用の Android 端末をどう調達・管理するのかという話題を DroidKaigi.fm #4 でしてきました。その会話の中で、自分の場合は検証端末を全部自宅に持っていて、STF を使ってつないでいるという話をしたのでそのあたりを少し掘り下げてみよ…

kotest 4.3.0 で Robolectric Extension が安定版になった

以前に kotest を使ったテストに Robolectric をあわせるときの注意点を書きましたが、このときはまだ Experimental な状態だった Robolectric Extension が 4.3.0 から安定版となりました。 blog.keithyokoma.dev マイグレーション作業 安定版となったこと…

Navigation Component で Build Variant ごとに Deep Link を定義する

Build Variant ごとに Deep Link (App Links) の host を変えたいとき、Navigation Component の navigation graph の定義をどうするかを示します。 <deepLink> では String Resources が使えない navigation graph も XML で記述したリソースだと考えると、次のような</deeplink>…

Android アプリのモジュールで kotest を使いユニットテストを記述する

以前は Kotlintest と呼ばれたテストフレームワークが Kotest と名前を変えて開発が進められています。 github.com このテストフレームワークは非常に多様なテストの記述方法をサポートしており、テストケースのスタイルからアサーションメソッド、パラメト…

チームで育てる Android アプリ設計プロジェクト、始まります

Peaks さんで「チームで育てる Android アプリ設計」と題した執筆プロジェクトに @kgmyshinさんと取り組むことになりました。この記事はこのプロジェクトが発足するまでの経緯や、執筆する本に込めた思いを伝えられればと言うことで書いています。 チームと…

Podcast を Apple Podcast や Google Podcast に登録する

Podcast を配信するにあたって、Apple Podcast や Google Podcast に登録しておくと、iPhone や Android のアプリから気軽に Podcast を聴けるようになります。各プラットフォーム向けに配信の設定をしておくと、アプリで Podcast の未読管理や前回からの視…

在宅勤務で手元にない端末でのアプリのデバッグをするために準備しておくこと

コロナ禍で在宅勤務が一気に広まり、自宅でアプリの開発やリリースをすることが多くなりました。この状況のなかで、アプリの挙動に問題があるなどで動作確認をしようと思うとき、その問題に対処するためのデータを集めたり、問題が発生したときの状況を確認…

SnapCamera で使える、背景を合成するレンズ3分クッキング

SnapCamera で使えるエフェクト(レンズ)は Lens Studio - Lens Studio by Snap Inc. というツールで自作できます。 カメラの映像から人だけをくり抜いて背景をはめるレンズから、3D モデルを配置したり、簡単な物理演算を組み合わせて 3D モデルを動かした…

我が家のリモートワーク環境

昨今の情勢を受けてリモートワークが始まり1ヶ月ほど経ちました。 キャンプチェアとローテーブルでの作業環境 以前は自宅にもクルーズアンドアトラスを置いて会社と同じデスク環境を持っていましたが、引っ越しを期に手放してしまったために今はHelinox のキ…

持続的なアプリ開発のための DX を支える技術 #DroidKaigi 2020

この記事は、DroidKaigi 2020 で発表予定だったセッション「持続的なアプリ開発のための DX を支える技術」を解説するための記事です。 セッション概要 Android の歴史はすでに 10 年を超え、数多のアプリケーションがストアで公開されています。これらのア…

DroidKaigi 2020 のスタッフを支える(はずだった)技術 - 運営スタッフ向けアプリ

DroidKaigi 2020 を支えるはずだった技術シリーズの、DroidKaigi 当日にスタッフを支えるはずだった技術の話として、運営スタッフ向けアプリを作った話をします。 運営スタッフ向けアプリを作り始めたきっかけ DroidKaigi も過去 5 開催をしてきていて、2020…

DroidKaigi 2020 を支える(はずだった)技術シリーズ、はじめます

DroidKaigi 運営スタッフの @keithyokoma です。 記事タイトルにあるとおり、DroidKaigi 2020 を支える(はずだった)技術シリーズと題して DroidKaigi 運営スタッフによる一連のブログ投稿をはじめます。 企画の意図 DroidKaigi はこれまで、2015 年から数…

DroidKaigi 2020 撮影機材

カンファレンス撮影に関する詳しい話は @e10dokup さんが https://ameblo.jp/e10dokup/entry-12575646342.html でしてくれてるので、自分は DroidKaigi 2020 で使う予定だった撮影機材について、昨年からのアップデートを書いておこうと思います。 ボディ Ca…

RxJava で delay など時間に関するオペレータを使ったときのテスト

例えば、次のコードのような 5秒後に "foo" という String を emit する Observable をかえす関数があるとします。 fun observeFoo(): Observable<String> = Observable.just("foo").delay(5, TimeUnit.SECONDS) この関数をユニットテストすることを考えます。 RxJav</string>…

Kotlin 1.4 の開発版を試す

やっていますか? 昨年の KotlinConf 2019 で Kotlin 1.4 についてのアナウンスがあり、今春のリリースを目指して開発が進んでいるそうです。 Releases · JetBrains/kotlin · GitHub を見ると、すでに現時点でも 1.4 向けの変更にタグが打たれているので、1.…

kotlinx.serialization でオブジェクトをシリアライズする #potatotips 67

potatotips #67 で kotlinx.serialization を使ったオブジェクトのシリアライズの手順について話してきたのでまとめておきます。いくつか発表のときにはできなかった部分を掘り下げています。 イベントリンク potatotips #67 (iOS/Android開発Tips共有会) - …

OAuth 2.0 の Redirect URI で戻ってくる画面に Navigation Architecture Component の DeepLink を設定すると直面する問題と回避策

みなさん、やっていますか?私はやっています。 Slack API を使いたくて、Slack の OAuth の仕様通り Redirect URI を設定してアプリに auth code と state を戻すために Navigation Architecture Component を使った DeepLink の実装をしたところ、盛大にハ…

つよいレンズをもっていろいろ写真を撮ってきた

つい先日、Canon EF 24-70mm f/2.8L II USM というつよいレンズを購入しました。 やぁ…… pic.twitter.com/fDgLGrpGZT— Don't Keep Activities (@KeithYokoma) September 5, 2019 目的はカンファレンス会場内でバッチリ撮影できるレンズをもつことなわけです…

Kotlin の enum class とシリアライズで気をつけること

Kotlin の enum クラスは、ほぼ Java の enum と同じように扱うことができます。 次の Kotlin コードは FOO と BAR という Hoge 型の定数を定義しています。 enum class Hoge { FOO, BAR } enum クラスで定義した定数は String への変換 (nameメソッド) と、…

カンファレンスとハイエースと筋肉

カンファレンスとハイエース カンファレンスを運営するにあたって、当日使用する物資の運搬は非常に重要です。登壇者の後ろに配置するバックパネルや会場案内図、立て看板など、重量があったり、縦横の大きさがそこそこあるものなどの運搬について、一般的な…

いただきもののアンクルウェイトをつけてV字腹筋しようとした

片足2kgずつのウェイトを足首にくくりつけてV字腹筋する修行です。 不可能ではないのですが、今の自分には圧倒的筋力不足なので数回でもたなくなりました。 強くなりたい。強さを取り戻したい、が正しいかもしれないが。

急に誕生日が来たので

はれて1E歳になりました。 あれ、まだ10代じゃん?よっしゃいけるやろ。 いろいろ書こうと思ってたこともあったりなかったりするけどもう面倒くさくなってしまったので、現場からは以上です。 http://amzn.asia/5148iaa

DroidKaigi の撮影で Canon EF 70-200mm f/2.8L IS USM III をレンタルしてみた

カンファレンスカメラマンの悩みのタネとして、登壇者が遠いので望遠レンズがほしい、でもそうするとどうしても暗くなってしまう(=ブレまくるしいい絵にならない)ので明るい望遠レンズがほしい(=スーパー高くなる)という葛藤があると思います。 かく言う…

git merge の 3 つの動き

いまや Git なしでは生きていけないくらい Git に支えられている生活を送っていますが、Git のブランチをマージする手段にはいろいろあって、実際 GitHub でもプルリクエストをマージするときには 3 種類の方法から選ぶよう促されます。 git merge ブランチ…

自転車で遠出をするときに気をつけていること

自転車の楽しみ方は人それぞれで、近場をちょっと走って散歩代わりに楽しむ人もいれば、ひたすら山を登り続ける人もいるし、いろいろなところにでかけてグルメを楽しむ人もいます。自分の場合はトレーニングも若干考えつつも、いろんな景色を見るために100km…