Takuji->find;

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

株式会社はてなを退職します

2024/3/31をもって8年間在籍した株式会社はてなを退職することになりました。本日2024/2/14が最終出社日でした。 はてなでやってきたこと カクヨムアプリ Android版 カクヨム Web はてなブックマーク ジャンプルーキー!アプリ カクヨムViewer React Native…

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

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記 出遅れた。気がつけば7年。

100人を超えるコミュニティーを1年半くらい運営して得たDiscordサーバー運営術

2022年10月に約1年半運営してきたウマ娘のサークルを解散した。 サークルを解散するまでの1年半で学んだことを2022年も終わるのでここに供養したいと思う。 いわゆるオンゲーのギルドも会社組織みたいなもんだと思うので、仕事にも役立つかもしれない。 考え…

ウマ娘のサークルグループDiscord Botを開発・運用している話

ウマ娘にはオンゲによくあるギルドみたいな「サークル」という機能があって、サークルごとに1ヶ月で育成したウマ娘のファン数合計で競うランキング機能があったり、キャラ強化用のアイテムをサークルメンバーに寄付してショップでアイテム交換できるポイント…

シンボリックリンクを含むディレクトリを再帰的にコピーしたい場合はcp -Rを使うとよい

CUIでよく使うコマンドに cp があるが、ディレクトリーごとコピーしたい場合は cp -r src dest みたいな感じで -r をよく使っている。 しかしこれだとシンボリックリンクをはっていた時に実体がコピーされてしまってリンクが切れる。 そこで -r の代わりに -…

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

株式会社はてなに入社しました 今日はエイプリルフールです。 *1 株式会社はてなに入社しました - hitode909の日記 *1:入社から5年と3ヶ月経ちました。

既存パラダイムとKotlin Coroutinesの共存

この記事は DroidKaigi 2020, day 1 17:00-17:40で発表される予定だった内容を書き起こしたものです。 droidkaigi.jp 他にも発表予定だった資料のAGENDAを1項目ごとに記事にして公開する予定です。 既存パラダイムとの共存 (この記事) ライブラリーと組み合…

なんとなく理解する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が便利

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

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

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