Takuji->find;

株式会社はてなでアプリケーションエンジニアやってます、技術的な記事を書いているつもり

なんとなく理解するAndroidでKotlin Coroutinesを使う方法

この記事は社内のエンジニアが集まるScrapboxへ書いたページの転記です。 なんとなくKotlin Coroutinesについて理解が深まると幸いです。 参考URL Coroutineを使うにあたって重要な要素 Suspending Function CoroutineDispatcher CoroutineContext Coroutine…

Kotlin Coroutinesをテストする

これは はてなエンジニア Advent Calendar 2019 13日目の記事です。 Kotlin Coroutinesのコルーチンをテストする時に必要なテクニックを紹介します。 コルーチンを同期的に実行したい CoroutineDispatcherを置き換える Dispatchers.Main Dispatchers.Default…

KotlinのprovideDelegate operatorについて

こんばんは、Kotlin大好きAndroidアプリエンジニアの id:takuji31 です。 ※これは はてなエンジニア Advent Calendar 2018 21日目の記事です。 provideDelegate operatorについて 使い方 最後に provideDelegate operatorについて provideDelegate operator…

Architecture Components ViewModelをAutoDisposeに対応させる。

※ これはtakuji31 Advent Calendar 2018、1日目(相当)の記事です。 adventar.org ViewModel AutoDispose ViewModelをAutoDisposeに対応させる 最後に ViewModel ViewModelは我々Androidアプリエンジニアの生活になくてはならないコンポーネントの一つである…

ThreeTen BackportのInstant.plus(long, TemporalUnit)は年を足せない

Androiderならきっとみんな大好きなはずのThreeTen Backportに関しての雑メモ。 今から100年後のInstantが欲しくなって Instant.now().plus(100, ChronoUnit.YEARS) ってやってみたけど UnsupportedTemporalTypeException で死んだ。 コードを読んでみると C…

RecyclerView.ItemDecorationでgetItemOffsetsの値を変えた時、レイアウトはどう動くか

雑なメモ RecyclerView.ItemDecoration を使ってitemのoffset(bottom)を調整する機会があった。 ある位置を基準にしつつ、offsetを調整+スクロールして基準位置にあったitemが同じ位置に見えている必要があったのだが、なぜかズレる。 よく見てみたら見えて…

lateinitの行儀の良い使い方

以前勉強会で「KotlinのlateinitとDelegates.notNull()の使い分けがよく分からない」というお話をいただいた時に"基本的にはDelegates.notNull()を使うべきではないか?" と答えたしそれより前から最近もずっと思っていたのだが、(DroidKaigiの発表を聞くな…

KotlinのSealed Classを使いこなす

こんにちは、三度の飯よりKotlinが好きな id:takuji31 です。 ※ これは、はてなエンジニア Advent Calendar 2017 7日目の記事です。6日目は id:hayajo_77 さんの「Webオペレーションエンジニアとし研修して1ヶ月経ちました」でした。 hayajo.hatenablog.jp …

Androidアプリの非同期なテストを書く時の悩みをEspresso Idling Resourceで解決する #関モバ

こんにちは、最近TDDに回帰している id:takuji31 です。 最近 Espresso Idling Resource を使い始めたので紹介します。 なお、この記事の一部は本日開催の関西モバイルアプリ研究会#24で発表された内容です。 UIテストを書く時の悩み 雑な解決方法 ちょっと…

KotlinでJavaの予約語をメソッド名に使うとstubでメソッドが生成されない

ここで言うstubとは、Kotlinのstub生成機能で、Pluggable Annotation ProcessingでKotlinのクラスを処理するために必要になってくるもの。コンパイル時にJavaのコンパイル前にKotlinのファイルからJavaのソースコードを生成してstubとして利用する。 当たり…

JSR330のQualifierを付与したAnnotation classを作る場合はちゃんとTargetを指定した方がよい

Kotlin+Dagger2で起きた問題、おそらくJavaではほとんど起こらないだろう問題ではあるが全く起きないわけではなさそう。 前提 何が起こっているか 回避策 根本的な解決 最後に 前提 Dagger2(に限らずJSR330に準拠したDIコンテナー)で目的の違う同じ型のイン…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

ExifInterface Support Libraryについて調べてみた #関モバ

こんにちは、最近カメラにハマっているid:takuji31です。 なお、この記事の一部は本日開催の関西モバイルアプリ研究会#21で発表された内容です。 Exifについて Exif Support Library 対応フォーマット 使ってみる まとめ Exifについて ExifはExchangeable im…

Atomの自動補完プラグイン「autocomplete-plus」のPerl用Providerを書いている話

これは はてなエンジニアアドベントカレンダー2016 23日目の記事です。 qiita.com developer.hatenastaff.com 昨日は id:takuya-a さんの文字列アルゴリズムの学びかたでした。 こんにちは、はてなでアプリケーションエンジニアとしてWebサービスやAndroidア…

git merge --abort

gitでmergeした時にconflictして、やっぱやめたってなる時に今までは git reset --hard HEAD ってしてたんだけど、ふとmanを眺めたら --abort オプションがあるのを発見した。 rebase とか cherry-pick にあるのになんでないのって思ってたけど、どうも勘違…

TODOコメントにGitのbranch名を入れたい続編

以前TODOコメントにGitのbranch名を入れるためにSnippet書いたという記事を書いた。 blog.takuji31.jp この記事以降もチームは変わってないし使っているのだが、branch名そのままだとそのbranchのmergeまでに終わらせないといけないTODOに思えるという指摘が…

Kotlinの演算子オーバーロードについて

これは Kotlin Advent Calendar 2016 9日目の記事です。 qiita.com 今日はKotlinの演算子オーバーロードについて紹介します。 演算子オーバーロードとは Kotlinの演算子オーバーロードの仕組み ボウリングで学ぶ演算子オーバーロード クラスを定義 スコア + …

転職に対して思っていること色々

これは 転職(その2) Advent Calendar 2016 2日目の記事です。 こんにちは、株式会社はてなでアプリケーションエンジニアをやっているid:takuji31です。 最初はそろそろ転職して1年になるのでその辺の話を書こうかと思ったんですが、ちょっと思うところがあ…

RecyclerView.ItemDecorationについて #関モバ

こんばんは、最近Androidエンジニアを名乗っていいのか悩ましいid:takuji31です。 今日はRecyclerViewのItemDecorationについて簡単な使い方をまとめてみました。 なお、この記事の一部は本日開催の関西モバイルアプリ研究会#20で発表された内容です。 Recyc…

Kotlin1.1の新機能についてざっと眺めてみた(M1-M3対応) #kansaikt

こんにちは、Kotlinエバンジェリストになりたいid:takuji31です。 先日EAPでM3が公開されたKotlin1.1の新機能について、あまりちゃんと把握していなかったのでM1から見直してみました。 なお、この内容の一部は Kansai.kt #2で発表されました。 各タイトルは…

LTの資料を作るときにまずブログ記事から書いている

メンターのシニアエンジニアと話していたら、それいいじゃんって感じになったのでブログにまとめてみる。 関西モバイルアプリ研究会でほぼ毎月(といいつつ最近発表回数減ってるけど)Androidネタで発表しているが、最近はそれと同時にブログ記事も公開してい…

一気に書いた新規ファイルを一部git addしたい時にはgit add -Nが便利

新機能作ったりする時、コード書くのに集中しすぎるとコミットする前にめっちゃ色々混ざったファイルができてしまったりして、最悪な感じになることが多い。 自分は割と細かい単位でコミットするようにしている(あとで戻せるように)ので、こうなってしまった…

エンジニア立ち居振舞い : 常に問題意識を持つ

お題「エンジニア立ち居振舞い」 エンジニアに限ったことではなさそう。 サービスとかアプリが運用フェーズに入るとつい思考停止して日々のタスクをこなして生きるだけの機械になりそうになるが、現状が例え良さそうに見えても常に問題はあると考えるように…

MySQLの文字列型

雑なメモ 8月からWebのお仕事やってて、5千年ぶりくらいにまともにMySQL触ることが最近増えてきた。 MySQLのテーブルへのカラム追加のレビューをしていたときにわかったことを書いておく。 .*TEXTな型は TINYTEXT TEXT MEDIUMTEXT LONGTEXT があるが、 最大…

Support Library 25.0.0 で追加されたBottomNavigationViewを使ってみる #関モバ

こんばんは、 id:takuji31 です。 今日はSupport Library 25.0.0 で追加されたBottomNavigationViewを使ってみたので紹介します。 ※これは本日開催の関西モバイルアプリ研究会 #19 で発表した内容です。

TODOコメントにGitのbranch名を入れたい

めっちゃ雑なメモ。 今いるチームではTODOは"必ずやらなければならないこと"にだけ付けるというルールがあって、だいたいshibayuさんのブログの通りに運用してる。 最近コード中のTODOコメントの書き方を工夫している - $shibayu36->blog; 自分の場合割とGit…

Support Library 24.2.0で追加されたDiffUtilを試してみた

こんばんは、最近はAndroid JavaではなくPerlとTypeScriptを書いているid:takuji31です。 この記事は本日開催の関西モバイルアプリ研究会 #17の発表を元に作成しています。 今日はSupport Library 24.2.0でrecyclerview-v7に追加された DiffUtil を試してみ…

Kansai.kt #1 開催のお知らせ #kansaikt

こんにちは、id:takuji31です。 以前告知していた関西Kotlin勉強会 #3改め、Kansai.kt #1を7/9(土)に開催します! ↓↓↓↓↓↓申し込みはこちら↓↓↓↓↓↓ kansai-kt.connpass.com トーク枠とLT枠もまだ若干空きがありますので、お気軽にご応募ください! 参加おまち…

関西Kotlin勉強会 #3やるぞ!

おはようございます、id:takuji31です。 4月2日(土)にはてな京都オフィスで開催された「Kotlin 1.0リリース記念勉強会 in 京都」でも告知しましたが、関西Kotlin勉強会 #3を開催します!

VectorDrawable support libraryを使うにはAppCompat widgetを使わないといけない

こんにちは、takuji31です。 昨日リリースされたSupport Library 23.2.0で早速ハマりました。