サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
blog.takuji31.jp
2024/3/31をもって8年間在籍した株式会社はてなを退職することになりました。本日2024/2/14が最終出社日でした。 はてなでやってきたこと カクヨムアプリ Android版 カクヨム Web はてなブックマーク ジャンプルーキー!アプリ カクヨムViewer React Native化 コミックDAYS Android版 コミックガルド+ (GigaViewer for Apps) Android版 なんでやめるのか 今後 最後に はてなでやってきたこと カクヨムアプリ Android版 2016/1/1 に入社して最初にやったことはカクヨム(現カクヨムViewer) Android版のリリースです。 play.google.com 当時Android界隈はRxJava全盛期という感じではてなではまずRxJava浸透させるぞ〜って感じで導入していきました。 またLGTM Came
この記事は DroidKaigi 2020, day 1 17:00-17:40で発表される予定だった内容を書き起こしたものです。 droidkaigi.jp 他にも発表予定だった資料のAGENDAを1項目ごとに記事にして公開する予定です。 既存パラダイムとの共存 (この記事) ライブラリーと組み合わせる Activity/Fragmentで利用する ViewModelで利用する LiveDataとの使い分け 例外処理 キャンセル可能な作りにする テスト はじめに 既存パラダイムとの共存 RxJavaとKotlin Coroutines RxJavaをコルーチン内で使う コルーチンを使ってRxJavaのストリームを作る その他 コールバックとKotlin Coroutines イベントリスナーとKotlin Coroutines 最後に はじめに Kotlin Coroutinesが正式リ
こんばんは、Kotlin大好きAndroidアプリエンジニアの id:takuji31 です。 ※これは はてなエンジニア Advent Calendar 2018 21日目の記事です。 provideDelegate operatorについて 使い方 最後に provideDelegate operatorについて provideDelegate operatorはKotlin 1.1からあるオペレーターで、プロパティーの移譲オブジェクトを生成することができます。 Delegated Properties - Kotlin Programming Language このオペレーターを挟むことで、Delegated property生成時にロジックを実行することができ、例えば以下のようなことができます。 プロパティーの親のオブジェクトに何か操作をする プロパティーの生成のパラメーターを検証
以前勉強会で「KotlinのlateinitとDelegates.notNull()の使い分けがよく分からない」というお話をいただいた時に"基本的にはDelegates.notNull()を使うべきではないか?" と答えたしそれより前から最近もずっと思っていたのだが、(DroidKaigiの発表を聞くなどする感じ)どうも違うのではないかと思えてきた。 そのため、ここでlateinitの仕様について整理しつつ、そこから導き出される行儀の良い使い方を考察する。 結論 lateinitとは lateinitの使い方 制約 Delegates.notNull() との違い lazyとの違い 最後に 結論 kaptを利用してJavaのコードからフィールドを操作したい場合はlateinitを使うべき フィールドが露出すると不都合がある場合はDelegates.notNull()を使うべき latein
こんにちは、三度の飯よりKotlinが好きな id:takuji31 です。 ※ これは、はてなエンジニア Advent Calendar 2017 7日目の記事です。6日目は id:hayajo_77 さんの「Webオペレーションエンジニアとし研修して1ヶ月経ちました」でした。 hayajo.hatenablog.jp 今日は私が愛してやまないKotlinのSealed Classの使い方について紹介します。 Sealed Classについて Sealed Classを使う利点 普通の(final or open)クラスと比べて Enumと比べて 使い方 どういう使い方をしている? 決まった文字列(全てが定数ではない)を受け取りたい時 色々な値を受け取って表示するActivityを起動するIntentに渡すパラメーターオブジェクト 最後に Sealed Classについて Sealed
こんにちは、最近TDDに回帰している id:takuji31 です。 最近 Espresso Idling Resource を使い始めたので紹介します。 なお、この記事の一部は本日開催の関西モバイルアプリ研究会#24で発表された内容です。 UIテストを書く時の悩み 雑な解決方法 ちょっと賢い方法 Espresso Idling Resource 使い方 セットアップ IdlingResource fun getName(): String fun isIdleNow(): Boolean fun registerIdleTransitionCallback(callback: IdlingResource.ResourceCallback?) 実装 使う アプリ側 テストコード デフォルトで用意されているIdlingResource CountingIdlingResource Idli
これは はてなエンジニアアドベントカレンダー2016 23日目の記事です。 qiita.com developer.hatenastaff.com 昨日は id:takuya-a さんの文字列アルゴリズムの学びかたでした。 こんにちは、はてなでアプリケーションエンジニアとしてWebサービスやAndroidアプリ(たまにiOSアプリ)を開発しているid:takuji31です。 私は普段VimでPerlを書いているのですが、最近AtomでPerlを書きたくなってAtomの自動補完プラグインである「autocomplete-plus」のPerl用Providerを書いているので、今日はそのことについて話します。 先に謝罪しておきますと、本来はこのエントリーで公開しましたと告知する予定でしたが、まだ実用的なクオリティーには達していないので、開発中とお知らせするだけになります 🙇 github.c
こんばんは、最近Androidエンジニアを名乗っていいのか悩ましいid:takuji31です。 今日はRecyclerViewのItemDecorationについて簡単な使い方をまとめてみました。 なお、この記事の一部は本日開催の関西モバイルアプリ研究会#20で発表された内容です。 RecyclerView.ItemDecoration とは メソッド getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) 使い方
これは 転職(その2) Advent Calendar 2016 2日目の記事です。 こんにちは、株式会社はてなでアプリケーションエンジニアをやっているid:takuji31です。 最初はそろそろ転職して1年になるのでその辺の話を書こうかと思ったんですが、ちょっと思うところがあって内容を変えました、理由は以下の通りです。 転職して給料上がって時間も増えてレベルの高い人達と一緒に仕事できて会社にも不満なくてとにかく最高って話転職Advent Calendarに書こうかと思ったけどただの自慢話になりそう— たくじ31(歳) (@takuji31) 2016年11月30日 はっきりこれといったテーマがない感じなので雑多にメモっぽいこと書きます。 自分の価値観なので、それは違うよってことあるかもしれませんし、行き詰まってる人の参考になるかもしれませんし、他の方の考え方を否定するものではありませんの
メンターのシニアエンジニアと話していたら、それいいじゃんって感じになったのでブログにまとめてみる。 関西モバイルアプリ研究会でほぼ毎月(といいつつ最近発表回数減ってるけど)Androidネタで発表しているが、最近はそれと同時にブログ記事も公開している。 blog.takuji31.jp blog.takuji31.jp これらの記事は資料作成と同時に書いていて、LTの開始のタイミングで公開する。 なぜブログ記事と同時に書くのか 毎月発表していると、資料作成に使える時間は大きなカンファレンスに参加する時より圧倒的に少ない。関西モバイルアプリ研究会はLT形式なので、もちろん資料のボリュームは小さいんだけど、実際に話すネタとして考える内容は20分や50分のトークとさほど変わらないと思う。 人によってはアウトラインをまず書いてから細かく作っていく、という風に作っていくんだろうけど、自分は割とそうい
新機能作ったりする時、コード書くのに集中しすぎるとコミットする前にめっちゃ色々混ざったファイルができてしまったりして、最悪な感じになることが多い。 自分は割と細かい単位でコミットするようにしている(あとで戻せるように)ので、こうなってしまった時今まではチマチマと手動で消してaddして、commitして、undoしてみたいなことをやっていたが、ミスったりすると数時間分の作業が消える。 そういう時にはgit add -N (file path) すると、ファイルの存在だけindexに乗せることができるので、あとはgit add -pでパッチモードにしてがんばる。 そもそもちゃんと細かくコミットしろよって話でもある。
お題「エンジニア立ち居振舞い」 エンジニアに限ったことではなさそう。 サービスとかアプリが運用フェーズに入るとつい思考停止して日々のタスクをこなして生きるだけの機械になりそうになるが、現状が例え良さそうに見えても常に問題はあると考えるようにしている。 そうすることでサービスやアプリの改善に繋がるかもしれないし、業務やチーム、組織の改善につながるきっかけが生まれるのではと思っている。 常に思考し続けている結果、夜にも頭が冴えていることが多くてなかなか寝付けないのが最近の悩み。
こんばんは、 id:takuji31 です。 今日はSupport Library 25.0.0 で追加されたBottomNavigationViewを使ってみたので紹介します。 ※これは本日開催の関西モバイルアプリ研究会 #19 で発表した内容です。 Bottom navigation について Botton navigationは Material Designコンポーネントの一つで、Botton navigation patternを実現するために使います。 Bottom navigation - Components - Material design guidelines 上記のページに Bottom navigation bars make it easy to explore and switch between top-level views in a single tap
こんばんは、最近はAndroid JavaではなくPerlとTypeScriptを書いているid:takuji31です。 この記事は本日開催の関西モバイルアプリ研究会 #17の発表を元に作成しています。 今日はSupport Library 24.2.0でrecyclerview-v7に追加された DiffUtil を試してみたので紹介します。 DiffUtilとは 2つの List の差分を計算するユーティリティー。 List の要素ごとの変化を計算する DiffUtil.Callback を引数に取り、 DiffUtil.DiffResult を受け取る。 デフォルトでは追加と削除と更新のみ受け取れるが、オプション指定することで移動も計算できる。ただし、計算コストが上がる。 DiffUtil.Callback それぞれの要素の変化を DiffUtil に伝えるCallback。5つのメ
新年あけましておめでとうございます、takuji31です。本年もどうぞよろしくお願いします。 2016年1月1日付で株式会社はてなに入社しました、本日が初出社となります。 はてなを選んだきっかけ エンジニアになった時に「自分が使うようなサービスを作りたい」というのがあって、自社サービスをやっていたり、自分が使っている(使っていた)プロダクトを作っている会社で仕事したいとずっと思っていて、これまでの転職も基本的にはそういうスタンスで会社を探していました。 はてなは自分が使っている「はてなブログ」や「はてなブックマーク」を運営していて、それでいてすごいエンジニアが何人もいて、最高だと思っていましたし、思っています。 そう思っていたところ、諸々ありまして、今回入社することになりました。 はてなでのお仕事 アプリケーションエンジニアとして入社しました。 引き続きAndroid/iOSアプリやWeb
こんにちは、takuji31です。 この度一身上の都合により、12月31日付でフェンリル株式会社を退職することとなりました。本日が最終出社日でした。 フェンリルとの出会い 出会いのきっかけは、学生時代に友人から勧められたSleipnirの1系でした。 当時はIEが使い物にならないくらい遅い、FireFoxはサイトの表示崩れまくり、Chrome何それおいしいの?といった中で、Tridentエンジンを採用したIE互換の高速なタブブラウザーということで、大変重宝していました。 あの当時はまさかそのブラウザーを作ってる会社に入ることになるとは思ってもいませんでしたが。 入社することになったきっかけ 社会人生活が3年になろうとしていた頃、とある理由から大阪にUターンすることになりまして、その際にフェンリルが大阪の会社だと知って、エントリーしました。 気が付けばあっさり内定が出てましたね。 フェンリル
こんにちは、3年くらいPerlを書いていないtakuji31です。 これはPerl5 Advent Calendar 2015 14日目の記事です。 qiita.com 13日目はpine613さんの「CentOS 標準搭載の Perl に負けないで強く生きる」でした。 qiita.com 今日は近々Perlを書く機会ができるかもしれないので、リハビリとして環境構築からNoPasteを作るところまでをやってみました。 環境構築 plenvでPerl5.22.0とcpanmを入れます。 今回はCartonとMojoliciousを使うのでcpanmでインストールしましょう。 plenvは更新止まってるみたいですけど、最近は別のツールが使われてるのかな…?Google力不足で発見できませんでした。 curl -L http://is.gd/plenvsetup | bash . $HOME/.
こんにちは、RxJava歴1年くらいのtakuji31です。 これはRxJava Advent Calendar 2015、7日目の記事です。 qiita.com 6日目はk-matsさんの「何となくRxJavaを使ってるけど正直よく分かってない人が読むと良さそうな記事・基礎編」でした。 qiita.com さて、本日はRxJavaの便利なOperator達を紹介したいと思います。 cache cache operatorはemitされた値をキャッシュしておくことができるObservableを生成するoperatorです。 以下のコードは単純なループを回しつつ、標準出力にログを出すだけのObservableです。 Observable<Integer> observable = Observable.<Integer>create(subscriber -> { for (int i =
こんにちは、関西Kotlin勉強会定期開催を目論んでいるtakuji31です。 これはKotlin Advent Calendar 2015、第2日目の記事です。 www.adventar.org 今日はKotlinのDelegationについて紹介します。 Delegationについて 委譲 (delegation) とはオブジェクト指向プログラミングにおいて、あるオブジェクトの操作を一部他のオブジェクトに代替させる手法のこと。 委譲 - Wikipedia 例えばクラスAのオブジェクトある処理を、クラスBに任せるといった仕組みですね。 継承をせずに一部の処理を拡張したい 同じ処理を別クラスに共通して実装したい といった時に使うことが多いようです。 KotlinのDelegation KotlinのDelegationは以下の2種類があります。 Class Delegation Prop
Koreference 1.0.0を昨日jCenterにリリースしました。 今回のバージョンでKotlin1.0.0-betaに対応しています。 簡単にKoreferenceの紹介を。 これはなに? KotlinでAndroidのSharedPreferencesをPropertyとして扱えるライブラリーです。 Kotlin1.0.0-beta対応。 資料はこちら Koreference from Takuji Nishibayashi www.slideshare.net 使い方 READMEを見てね github.com 仕組み KoreferenceProperty ReadWriteProperty(Delegated propertyを使うための基底クラス)の子クラス。 こいつはPreferenceとValueConverterを持つ抽象クラスで、それぞれ実装を持つインターフェー
株式会社モバイルファクトリーが運営するWassrが2012/10/01 12時をもってサービスを終了しました。 ちょうどいい機会なので自分とWassrの関わりについておさらいします。 2009年5月30日、2010年新卒エンジニアとして、株式会社モバイルファクトリーへの内定が決まりました。 その年の夏頃(具体的な日付は忘れた)、人事の方のススメでWassrを始めました。 最初は使い道がいまいちよく分からなかった(当時Twitterはまだやっていなくて、mixiとかブログだけで活動する前時代的な人でした)のですが、 会社の先輩も多数いる(ほとんどエンジニアでしたが)ので、そのうちWassrメインで活動するようになりました。 2010年2月、Androidアプリの開発を始めようと思い、WassrとTwitterのマルチポストクライアント「Wasatter」(先日公開停止)の開発を始めました。
今年のYAPC::Asia用のタイムテーブルビューアーを作りました。 Android2.2以上対応です。 とりあえずはタイムテーブルを見る機能しかついてません。 トークのチェック機能 一定時間前に通知する機能 を前夜祭までに付けられたらいいなぁ…。 ダウンロードは以下のURLからお願いします。 https://play.google.com/store/apps/details?id=com.github.takuji31.yapcasiaviewer ソースはこちら https://github.com/takuji31/YAPCAsiaViewer ビルドには以下のライブラリーも必要です。 https://github.com/takuji31/android-app-base https://github.com/takuji31/android-slide-menu http://
久々に書いてみる 開発中のアプリでTeng使ってみようと考えたので簡単にSchema生成スクリプト書いてみた _atがある前提だったり主キーは必ず1つだったり制約多い書き方だけどまぁ普通に使えるんじゃないかと思ってる #! /usr/bin/env perl use strict; use warnings; use DBIx::Inspector; use lib './lib'; use Wagayatei::DB; use Data::Section::Simple; use Text::Xslate; use Teng::Schema; use Path::Class qw(dir); my $dbi = Wagayatei::DB->get_dbi; my $inspector = DBIx::Inspector->new( dbh => $dbi ); my $tables =
iOSのSafariでiframe内に別ドメインのページを表示して、そのドメインでCookieを使う場合、最初のページでは使用できないという素敵な仕様がある。 対策方法としては、POSTで遷移するとか、パラメーター持ち回って次のページでCookieにセットするとか。 <form id="redirect_form" action="" method="POST"> <input type="hidden" name="hoge_session" value="[% sid %]" /> <button type="submit">げーむをはじめる!的な</button> </form> <script type="text/javascript"> $(document).ready(function (){ $('#redirect_form').attr('action','/');
このページを最初にブックマークしてみませんか?
『blog.takuji31.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く