visible true

技術的なメモを書く

チームコラボレーションサービス「Miro」いいなぁという話

Ubie Advent Calendar 2019の9日目です。 チームコラボレーションツールっていっぱいありますよね。 UbieではSlackやメール、Notion、Google Hangouts、Jira、Figma、Github、HERP、Salesforceなどのほかに「Miro」というチームコラボレーションサービスを使…

ノンアルコールビールめっちゃ増えてる

adventar.org 昨年のノンアルコールビールで晩酌すると風呂上がりにさっぱりプログラミングできて助かる - visible trueに引き続き、今年も書きます。まるで酔っ払っているかのように雑です。 自我を失ったノンアルコールビールたち さて個人的にノンアルコ…

Ktor用のSpannerのスキーマバージョン管理ライブラリ「spanner-kase」を作った話

Ubie Advent Calendar 2019の2日目です。 最近チームで新しいサービスが必要になったのでKtorでやろうか!ってことでKtorでサービスを書き始めています。 データベースはGoogle Cloud Spannerを使おうということになりました。 Java/KotlinのWebアプリケーシ…

Android Studio 4.0とJetpack Compose関連の見るとよいところなどのメモ

Youtube Android Dev Summit '19のセッション! www.youtube.com Android Studio 4.0 とJetpack Composeのセットアップ Jetnewsというサンプルアプリを試したり、新規プロジェクトでJetpack Composeで始めたり、 既存のプロジェクトにJetpack Composeど導入…

Kotlin Fest 2019で「Kotlinコルーチンを理解しよう 2019」を話してきました

Kotlin Fest 2019楽しかったです。 今回は「Kotlinコルーチンを理解しよう 2019」を話してきました。 資料作りの様子、各セクションを作る時になに考えてたか、反省点などまとめます。 前回と今回でロゴの形がちょっと変わってる 資料 コルーチンとはなにか…

FlowのchannelFlowを使ってRxBindingを置き換える

FlowのflowViaChannelを使ってRxBindingを置き換える - visible trueでKotlin Coroutines 1.2.xでFlowというコールドストリームをサポートするクラスや関数群が登場しました。ってことでflowViaChannel関数について書いたら、Kotlin Coroutines 1.3.0-M1でfl…

Flutter for webでWebフォントを使う

使える気がするんだけど何か方法あるのかなーと思って試してみたら普通に使えばよいことがわかった。 index.htmlでWebフォントを読み込む 好きなフォントを書く <html lang="en"> <head> <link href="https://fonts.googleapis.com/css?family=Gentium+Book+Basic&display=swap" rel="stylesheet"> </head> </html> fontFamilyで指定する あとは普通にfontFamilyで名前を指定するだけ。 @override Widget…

KtorでFirestore Local Emulatorにつなぐ

Firestore良さそうですよね。ローカルで動作を試せるLocal Emulatorがあるので気軽に試せてさらによさそうです。JVM環境で接続する例があんまり見当たらなかったのでメモします。 firestore local emulatorの準備をする とりあえずインストールして、 fireba…

Kotlin Fest 2019のセッションに応募しました。

今年もKotlin Festが開かれますね。もうセッションの応募はされたでしょうか? トラック数が増えたので今年はさらにいろんなジャンルが聞けるのではないかとワクワクしています。Kotlin/JSとかKotlin/Native, MPPが特に気になります。 kotlin.connpass.com …

loco-core 1.1.0をリリースしました。

Android向けロギングライブラリ「Loco」をリリースしました。 - visible true で1.0.0をリリースしたのですが速攻いくつか修正を入れて1.1.0をリリースしました。 しれっと1.0.1も出してました。 あとjcenterにも登録できたのでサクッと導入できるようになり…

Android向けロギングライブラリ「Loco」をリリースしました。

AndroidアプリでロギングするといえばPureeかなと思います。 かなり安定しているしいい感じに動く。 ただコードベースがJavaなので、たま〜に不具合でた時などに追っかけるのが結構たいへんだったり、 Gsonに依存しているので、別のJsonライブラリ使ってる場…

FlowのflowViaChannelを使ってRxBindingを置き換える

※こちらは古いので FlowのchannelFlowを使ってRxBindingを置き換える - visible true を参照ください。 Kotlin Coroutine 1.2.xでFlowというコールドストリームをサポートするクラスや関数群が登場しました。 Flow - kotlinx-coroutines-core 次のような感じ…

IntelliJ IDEAからDocker上で動くSprint Bootアプリにdebuggerをつなぐ

IntelliJからdocker上で動いてるSpring Bootアプリにデバッガつなぎたいときってありますよね。 ドチャクソハマったのでメモします。 Dockerで動かすSpring Bootアプリでデバッグ用ソケットを起動する gradleを使っている前提です。 gradleでSpring Bootを起動す…

KotlinTestのBehaviorSpecでGivenの単位でBeforeしたい

KotlinTestいいんですよね。 AndroidじゃなくてSpringBootで使ってるんですが。 Androidでも使えるかな?どうかな?まだ無理っぽい。 beforeSpecはSpec開始時に一度だけしか実行されない KotlinTestのSpec群はbeforeなんとか、afterなんとか系の関数を持って…

Safe Args PluginでParcelable Arrayを使いたい時は型の末尾に[]って書けばいいらしい

Hoge[]とかなら使えないんですかね(Listじゃないですが…) https://t.co/cG6wrQX4Uq— うし (@ushi3_jp) 2019年3月15日 ObjectArrayTypeとputParcelableArray 実装を読んでみるとObjectArrayTypeという型があり、putParcelableArrayとgetParcelableArrayをマ…

リリース前レポート(Firebase Test Lab)で動作しているか判定する

リリース前レポート助かりますよね。Firebase Test Labベースでいろいろ根掘り葉掘りやってくれて最近ではフィードバックもいろいろ充実していて良い感じです リリース前レポートで動いてるのか判定したい リリース前レポートいいんですけどロボットがガチャ…

java.lang.ClassCastException: com.sun.tools.javac.code.Type$1 cannot be cast to javax.lang.model.type.DeclaredTypeが出たらテストで使うコードがエラーになってるぽい

AndroidX対応を進めていたら自分でつくって自分で使っているFragment生成周りが便利になるhttps://github.com/sys1yagi/fragment-creatorが適切にAndroidX対応できてないぽいことがわかり、いろいろと更新してたらテストで次のエラーがでてこけるようになっ…

Kotlin Coroutine 1.1.0-alpha Change log 全部読む

本エントリは Kotlin Advent Calendar 2018 の記事です。 Kotlin Coroutine 1.1.0-alphaがリリースされましたね。「kotlinx.coroutines/CHANGES.md at master · Kotlin/kotlinx.coroutines · GitHub」Change logを読むことの重要さを思い知ったので全部読み…

Androidと非同期処理 とCoroutine1.0.0

Google Play App Dojoで話してきました。Google Play App Dojoは非公開イベントなので全体的な内容は言えないんですが、どの発表もおもしろい & 濃いので、もし参加のチャンスがあったらぜひ行ったほうがいいな〜と思いました。 Androidと非同期処理 とCorou…

Kotlin Coroutine 0.26.0 Structured concurrencyってなんなの

Structured concurrency – Roman Elizarov – Mediumでは、Kotlin coroutine 0.26.0でCoroutineScopeを導入した経緯などが書かれているんですが、タイトルのStructured concurrencyってのが結局なんなのか本文中にはあんまり出てこないんですよね。 んで、Cor…

Roomはどのようにsuspend関数を実現しているのか

Roomに2.1.0-alpha03からsuspend関数(コルーチン)のサポートが入りましたね。ちょっと気になったのでいくらか触ってみました。 Architecture Components Release Notes | Android Developers 何ができるようになるのか DAOでsuspend関数を宣言できるようにな…

Kotlin Coroutine 1.0.0までに夏から変わったところ

日進月歩。夏に話した頃とは大きく変わってしまったKotlinコルーチン。 Kotlin Fest 2018でコルーチンの話をしてきた - visible true ↑はコルーチンの概念と実現の仕組みを中心に置いたので、その辺はまぁ変わってないんで問題ないんですが、後半の実際にコ…

ノンアルコールビールで晩酌すると風呂上がりにさっぱりプログラミングできて助かる

adventar.org タイトルですでに完結していますが。 アルコール飲むと寝る前にプログラミングできない 年齢の所為もあるんでしょうけど、夕飯時にアルコール飲んじゃうと風呂上がって、さ〜てプログラム書こうかってなっても酔っ払っているのでついつい漫画読…

Robolectricで複数のLocaleをテストしたい時はEnclosedで頑張るしかないのか

RobolectricでLocaleを指定するには@Config(qualifiers)を使う テストで特定のLocaleで実行したいときってありますよね。Robolectric*1だと@Config(qualifiers)*2を使うことでテストのLocaleを指定できます。 @RunWith(RobolectricTestRunner::class) @Confi…

mockkとかでモック書く時にalsoと組み合わせると読みやすくなりそうな気がした

mockk便利ですよね。suspend関数のモック*1までサポートしてるしstatic, objectのモックもサポートしているのでいろいろはかどります。 github.com alsoと組み合わせるとよさそう mockitoと大体同じなんですがモック作る時ってだいたいこんな感じになります…

Kotlin Fest 2018でコルーチンの話をしてきた

kotlin.connpass.comでコルーチンに関する話をしてきました。 Kotlin コルーチンを理解しよう スライドはコチラ。音声や動画が無くても大体読めばわかる内容になっていると思います。 流れ 6月末にひつじさんからお手紙がとどく 直前の技術書典4でKotlinのコ…

facebook/Sonarで大体Stethoを置き換える

Stetho便利ですよね〜。 最近Stethoを置き換えるfacebook/Sonarというライブラリが登場しました。 メトリクスツールのSonarとかDAWのCakewalk SONARとかとかぶってて名前紛らわしいっすね〜 facebook/Sonarでできること StethoはAndroid向けのライブラリであ…

Android Studio自体のヒープサイズを変更する

Android Studioでしばらく開発していると、一文字打ったり、行移動するだけで一瞬固まるといった現象に見舞われる。CPUが定期的にスパイクしていて、待てど暮らせど改善しない。再起動すると直るがしばらく触っているとまた遅くなる。 どうもメモリが足りな…

nativechainをKotlinで実装する

nativechainとは nativechainはブロックチェーンの基本的な概念を200行のjavascriptで実装したものです。 https://github.com/lhartikk/naivechain nativechainは次の実装および制約を持っています ノードをコントロールするHttpインタフェース Websocketを…

Kotlin 1.2.0 言語機能の感想

Kotlin 1.2.0出ましたね。 主に新しい言語機能についてざっくり感想を述べます。 via What's New in Kotlin 1.2 言語機能 アノテーション上でArrayリテラルをサポート 今までは次のようにarrayOfって書いていたけど、 @Singleton @Component( modules = arra…