みんからきりまで

きりみんです。

Android Testing Bootcamp #6でMVPとテストについてLTしてきました

行ってきました。
android-testing-bootcamp.connpass.com

ぼくは「MVPアンチパターンを改善してPresenterにテストを書こう」という内容で10分LTしました。
speakerdeck.com

内容は個人開発や業務でMVP設計とPresenterへのテストに試行錯誤した知見共有という感じです。
MVPでテストを書くという試みは以前にも何度かエントリ書いてるけど、2年以上前から色々試していて、どこかで発表したいネタだったのでやれてよかった。

懇親会ではいつもTLで見かける方など色々な方に話しかけて貰って、設計について話したりしてとても楽しい時間が過ごせた。
LTはいつも申込んだあと緊張で辛くて後悔するんだけど、やり終わるとやってよかったと思うので今後もやっていきたい。

あと、会場のKotlin認知率がすごくて、発表者の方はほぼ全員「Kotlinでやってます」みたいな感じでKotlin本当にキテるんだなぁと勝手に嬉しい気持ちになった。

元不登校のエンジニアが本当の0から独学で英語をTOEIC650レベルにするまでの振り返りと知見

釣りっぽいタイトルを付けてみたかった。

去年の夏頃からわりと英語を勉強していて、先日初めてTOEICを受験したら650点だったので、一つの区切りとして今までの人生の英語歴と学習の知見を書いてみようと思う。

前提と英語歴

ぼくは小学校から不登校通信制高校中退→高卒認定→専門学校→エンジニアという学歴を辿っていて、学校教育としての英語教育はほぼ受けた事がない。
不登校の間も特に塾に通ったり自習をしたりという事はしていなくて、通信制高校の単位はとりあえず写しでもなんでも問題集をやってくれば貰えるという感じだったので、学業として英語を勉強するということはなかった。

なので、18歳くらいまでは一切英語が分からなくて、"This is a pen"が「これはペンです」という事は分かっても、isがどういう意味を持っているのかは全く分からないという感じだった。
ただ、学校でやらされなかったのが逆によかったのか、英語への苦手意識や嫌悪感みたいなのはあんまりなくて、むしろ英語への興味は常にあって、いつかちゃんと英語を勉強してみたいという気持ちはあった。

18歳くらいの時に一度英語を勉強してみようというモチベーションが高まった事があって、その時に高校の総合英語の教科書を読んだりして、一応be動詞のざっくりとした意味や過去形や現在進行系というものがあるという事など英文法の初歩の初歩を少し理解出来るようになった。
ただしこの時は本当に初歩の初歩を覚えるだけで終わってしまった。

その後、専門学校ではプログラミング言語で出てくる予約語やメソッド名などの英単語の意味が全く察せずテストなどでかなり苦労をした記憶がある。
プログラマとして就職して、バリバリコードを書くようになると、メソッド名などに使われるような英単語は自然と覚えるようになり、またJavaDocAPIドキュメントなどを機械翻訳を駆使しながら読んだりしているうちに最低限、短い説明文などであれば読めるくらいにはなった。

それからも時々英語学習モチベーションが高まったりして英語漬けみたいなゲームをやってみたり、NHKの英語講座を見たりして少しずつ英語を覚えていったが、やはり「機械翻訳を駆使すれば何とか読める」というレベルからは脱せずにいた。

それでも英語に苦手意識があり全く英語ドキュメントを読まないタイプの人よりは英語モチベーションが高かったので、QiitaTeamで英語ドキュメントの和訳サマリなどを書いたりしていた。(今考えると全然正しく訳せていなかったので、恥ずかしいが)

そして、去年の夏頃からとうとう本格的に英語を勉強し始めた、という感じ。

続きを読む

第5回Kotlin勉強会でLTしてきました

sansan.connpass.com

Sansanさんで開催された第5回Kotlin勉強会で、たのしいKotlin1.1 10分ツアーという内容のLTをしました。

speakerdeck.com

内容はWhat’s New in Kotlin 1.1の内容を自分なりに噛み砕いてまとめた感じ。
実は僕はまだKotlin1.1をあまり触れていなくて、他の方がコルーチンやタイプエイリアスについて語られるようだったので、どうしようかなと考えた結果こういうサラッとした内容になったんだけど、幸い発表1番手にして頂いて、1.1記念イベントという側面もあったのでまあ結果的には良かったのではないかなと思っている。

スライド作るためのネタだしで書いたQiita記事もあります。

qiita.com

続きを読む

ポモドーロその後とHabiticaのススメ

半年前にKanbanFlowを使ってポモドーロやってるけどいいぞというエントリを書いたが、その後どうなったかというのを書いていきたい。 kirimin.hatenablog.com

KanbanFlowその後

KanbanFlowでのポモドーロは続けているけど、以前書いたような日々のTODOを全てKanbanFlowに入れていくというような事はもうやっていなくて、仕事や趣味でガッツリ実装する時など大きな作業を行う時に、タスクを洗い出して整理したり集中して取り組むために使ってる。
KanbanFlowではそういう使い方では便利だったけど、日々繰り返すようなタスクを管理するのにはあまり向いていない事に気がついた。

Habiticaはいいぞ

仕事など大きな作業のタスク管理はKanbanFlowを使い、それ以外の日常的なTODO管理はHabiticaというサービスに移行した。

habitica.com

Habiticaは面白いサービスで、TODOアプリでありながらブラウザRPGのようにもなっていて、自キャラにHPや装備などがあり、自分で設定したタスクや習慣を達成すれば経験値やゴールドが貰え、逆にサボるとダメージを受けるというゲーミフィケーションの極みのようなシステムになっている。

Habiticaのいいところは色々あるが、まず単純にTODOアプリとして非常に使いやすいというのがある。
タスクはHabits(習慣)、Dailies(日課)、To-Dos(やること)に分かれている。

Habitsにはやった方がいい事、例えばジョギングをするとか趣味コーディングをするとかそういう事を設定する。
これは何度でも実行できて達成すると経験値やゴールドが貰える。
逆に悪い習慣を設定する事もできて、止めたい癖などと設定しておけば自分に罰を与える事もできるというわけ。

Dailiesには毎日必ず達成したい事を設定する。例えば薬を飲むとか筋トレをするとかそういうやつだ。
これは毎日達成できれば経験値やゴールドが貰えるが、達成できないまま一日を終えるとダメージを受けてしまう。

To-Dosはその名の通り一度きりのタスクを設定する場所で、やりたい事を設定し達成すれば経験値やゴールドが貰えるが、ペナルティは特にない。

これらがスッキリとした見やすいUIで並んでいて、簡単に追加したり編集したりできる。
特にTODOと日課が分かれているというところが便利で、僕はDailiesにはとても簡単な毎日のタスク、例えばお風呂に入るとか歯を磨くとか体重を量るとかそういうものを入れていて、こうしていると毎日考えなくても何をまだやっていないのかをすぐに思い出せるし、普通に生活しているだけで達成感を得る事ができる。

To-Dosには近々やりたい事や買い物メモなどをとにかく何でも入れていていつでも参照出来るメモのような使い方をしている。 HabiticaはWebサービスだけどアプリもあっていつでもアクセス出来るのでとても便利だ。

HabiticaにはRPG要素やソーシャル要素もあり、あくまでもTODOアプリなので自分でいくらでも難易度調整はできてしまうが、なかなかよく出来ていて面白い。
あと、Habiticaは課金要素もあるんだけど、TODOアプリとしての基本は全て無料で、課金対象は主にアバターなどのアイテムであるというところがよく出来ているというかステキだなぁと思った。
さらに営利サービスでありながらアプリなど全てOSSとなっているというところも面白い。

HabitRPG · GitHub

「RxJavaリアクティブプログラミング」読んだ。RxJava経験者にもオススメしたい

「RxJavaリアクティブプログラミング」を読んだ。
タイトル通りRxJavaについて解説されている本だ。
結論から言えばこの本はAndroidでRxJava1を使った事がある人こそ読むべき内容なのではと感じた。

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJavaリアクティブプログラミング (CodeZine BOOKS)

どんな内容か

この本には対象読者として「Java初心者」「RxJavaおよびリアクティブプログラミング未経験者」と書かれていたので、自分にはそれほど得られる情報は無いのではないかと思いつつ読み始めた。
しかし、この本ではまず第一章からRxJava2ベースでの仕様についてReactiveStreamの説明も交えながら分かりやすい書かれており、この時点で自分にとってもかなり学びのある内容だった。

第二章はJavaラムダ式などの解説なので自分は読み飛ばしたが、第三章ではRxJavaの仕組みや処理の流れなどが解説されており、とても良い内容だ。

第四章ではRxJavaでの各操作関数がマーブルダイアグラムとサンプルコード付きで解説されていてこれがまた分かりやすい。

感想

普段ネットで情報収集しながらAndroid開発でRxJavaを利用していても、RxJava2での仕様はあまりキャッチアップできていなかったり、単純な非同期通信ライブラリとしては活用していても各Schedulerや操作関数の使い分けまでは実は理解が曖昧だったりする人が多いのではないだろうか。
この本は自分も含めそういう人に対ししっかりしとしたRxJavaの知識を授けてくれる非常に有用な本で、そしてとにかく説明がとても簡潔で分かりやすいという印象を受けた。

一見分厚いがサクッと読める本なので、普段RxJava1を使っているAndroidエンジニアにぜひオススメしたい。