visible true

技術的なメモを書く

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…

Kotlin in Action はとてもいいのでとりあえずAndroidエンジニアは全員読むのがいいと思います

献本頂きました。ありがとうございます。 Kotlin in Actionとは Kotlin in ActionはJetBrains社でKotlinの開発に参加しているDmitry Jemerov氏とSvetlana Isakova氏がJava開発者向けに書いたKotlin1.0の解説書です。 Kotlinが生まれた経緯、Kotlinの言語機能…

Android Architecture ComponentsのViewModelとDialogFragment

Android Architecture ComponentsのViewModelとHolderFragmentとActivity-Fragment間通信と。 - visible trueを書いたあと、 ああ、ViewModelでActivity-Fragment間通信するやつ、FragmentDialogでやるとよかったのか— 八木 (@sys1yagi) August 23, 2017 と…

Android Architecture ComponentsのViewModelとHolderFragmentとActivity-Fragment間通信と。

Android Architecture ComponentsのViewModel周りの実装を読んでいくとふーんってなったのでActivity-Fragment間通信やれそうだしやってみたらいけたなーそりゃそうだねみたいな話 Android Architecture ComponentsのViewModelとViewModelProviders Android …

Androidのアーキテクチャ本をクラウドファンディングで執筆します - 共著者3人の紹介 #peaks_cc

peaks.cc Android アプリ設計パターン入門 ある日 こんなこと書きます 個人的な思想としてアーキテクチャはチームのためにあると思っています。なのでそういう感じの章を書きます。章の紹介文を引用しておきます。 アーキテクチャはチームのために存在してい…

Clean Architectureを理解するための補助的なコンポーネント図のようなもの

Clean Architectureを雰囲気でしか理解していなかったんだけど、なんでだろうな〜って考えるとあの図とか説明文がややこしいからだな〜と思った。 抽象的なやつはええねん、具体をくれ具体を〜、と思ったので、Android-CleanArchitectureのサンプルコードを…

もうAndroidの非同期処理はasync/awaitでいいんじゃないかなぁと思った

Rx Ja Night Vol.2 - connpassで「 Androidの非同期処理をKotlinコルーチンで行う」という話をしてきました。 スライドで使っているコードは次のリポジトリに置いています。 github.com 今回取り扱った非同期処理の範囲 スライドやリポジトリのREADME.mdに大…

KotlinでViewDataBindingをシュッとinflateするやつ

RecyclerViewなどでViewDataBindingを使う時に次のように書くのめんどくさくて。 class ViewHolder(val binding:ListItemCommentBinding) : RecyclerView.ViewHolder(binding.root) override fun onCreateViewHolder(parent: ViewGroup, type: Int) = ViewHo…

DataBindingが原因のビルドエラー時にエラーを抽出するスクリプト

AndroidでDataBinding周りミスるとめっちゃエラー出て辛いですね。辛いのでDataBindingのエラーを抽出するスクリプトを書きました。スクリプトはかなり雑なので適宜いい感じにしてください。 extract_data_binding_error.rb #! /bin/sh exec ruby -S -x "$0"…

mastodon4j v0.0.6 をリリースしました

mastodon4jをリリースしました - visible true では0.0.3でしたが、0.0.6まで出ました。 差分はReleases · sys1yagi/mastodon4j · GitHubに書いてますがここでも軽く書きます。 v0.0.4 Release v0.0.4 · sys1yagi/mastodon4j · GitHub mastodon4j 各メソッド…

mastodon4jをリリースしました

mastodon4jをリリースしました。Kotlinで書かれていて、Javaからでも使えるように今後チューニングしていきます。現在の最新は0.0.3です。 最初はDroiDonの副産物としてmastodon4jを実装していて、まぁだれか出すだろうと思っていたけど1週間経っても出てこ…

React NativeでFirebase Storageに画像を上げるときにputStringが上手くいかないのでbase-64を入れてatob関数を補完する

React Nativeを、ペーパープロトタイピングとprottなどを使ったモックアッププロトタイピングの次のフェーズとして動くプロトタイピングツールに使えないかなぁと思ってちょこちょこ触ってます。 うまくいくと両ユーザ向けに同時に動くプロトタイプを提供で…

Kotlin 1.1で追加された標準ライブラリの関数をざっくり見る

Kotlin 1.1でいくつか標準ライブラリに追加された関数があるのでちら見しながら感想を述べます。 Kotlin 1.1: What’s coming in the standard library | Kotlin Blog T.also() let(), apply(), with(), run()に新たな仲間が。 @kotlin.internal.InlineOnly @…

DroidKaigi 2017で「解剖Kotlin ~バイトコードを読み解く~」を発表してきました

DroidKaigi 2017 3/9 15:10~ Room4で発表しました。 発表の内容 KotlinはJavaという話です。 感想 それなりに練習したけどわりと噛んだりつっかえたりしたのでもっと練習が必要だな〜と感じた。内容については前日までかなり色々迷って紆余曲折あったけど結…

Androidアプリケーションのビルド体験を改善するリモートビルドサービス Cyborg-Build を作りました

はじめに これはAndroid Advent Calendar 2016の20日目のエントリです。 本エントリではAndroidアプリケーションのビルド体験を改善するリモートビルドサービス Cyborg Build を紹介します。 背景 以前AndroidアプリケーションをGoogle Compute Engineのイン…

Kotlin 1.1 async/awaitの仕組みと使い方の概要 for Android

これはKotlin Advent Calendar2016の19日目のエントリです。 本エントリではKotlinの次期バージョン(1.1)で導入されるコルーチンと、その実装のひとつであるasync/awaitについて解説します。 今回書いているコードはGitHub - sys1yagi/kotlin-async-await-sa…

Vue.jsでvue-routerを使ってルーティングする時にGoogle AnalyticsでPage Viewを取る

ググってもパッとでてこなかったので。 前提条件 index.htmlなどにGoogle Analyticsを初期化するコードが埋め込まれていて、グローバルにga関数にアクセスできる vue-routerを使っている コード main.jsとする。VueRouterのafterEachにコールバックをセット…