iOSエンジニアがAndroidアプリ開発を勉強するためにやっていること

Android開発の勉強を始めてから2ヶ月ほどが経過した。 これまでにやったことを備忘のために残しておく。

実機を購入

なにはともあれ実機があった方がよい。シミュレータでも開発はできるが、起動に時間がかかり効率が良くない。また普段使いの端末がないとAndroidアプリのあるべき姿、手触り感も分からない。最初にまとまった金額を払うことで、途中で投げ出せないようにする効果も多少はあったように思う。同僚のAndroidエンジニアの意見を参考にしつつHuaweiのP10 Liteを購入した。

自分は格安simのmineoを通話なし3GBで契約していて、ランニングコストは月々1,000円弱。

Android Developers

分からないことがあれば公式ドキュメントを読み進めて調べることになる。勉強を初めて間もない頃にハマるような問題はここに正解が書いてある。

developer.android.com

Udemyのコースを受講

UdemyのThe Complete Android Kotlin Developer Courseというコースを受講した。Udemyは頻繁にセールを実施しているのでそのタイミングで購入するのが良い。最初に動画で勉強をするのは、費用面でも時間面でもコスパが良いと感じている。順を追ってコードを書きながら説明してくれるので、一人で本を読むより学習しやすい。コードを書きながら受講すれば、本を読んでいるだけではスルーしていた、自分が理解していない部分に気づけたりもする。

ただしこのコースは、講師の英語が自分にとっては聞きづらく、字幕も自動生成なのでけっこう厳しかった。そこは無料で見られる講義をちゃんと確認して、自分に合ったコースを購入するのが良さそう。

The Complete Android Kotlin Developer Course | Udemy

書籍

以下の書籍を読みながら写経した。Android SDKについて学びたかったので、Kotlin/Javaの言語の差異は現時点では気にせずに書籍を選んだ。というかKotlinで書かれた入門書は現時点では存在しないっぽい。来年以降はKotlinを前提とした書籍が出版されるはず。

またAndroidエンジニアの現場感を知りたくて、以下のような書籍も読んだ。一通りのキーワードをさらっておくことで、断片的だった知識が整理できたように思う。

黒帯エンジニアが教えるプロの技術 Android開発の教科書

黒帯エンジニアが教えるプロの技術 Android開発の教科書

Androidアプリ開発の極意 ~プロ品質を実現するための現場の知恵とテクニック

Androidアプリ開発の極意 ~プロ品質を実現するための現場の知恵とテクニック

コードリーディング、写経

最近はGoogleが公開しているサンプルリポジトリのコードリーディングと写経をしている。Udemyや入門書のコードから、いかにプロダクションレベルのコードを書けるレベルになれるかという課題感を持っているので、非常に参考になる。

github.com

github.com

これから

まだまだ読みたい本があるし、普通にプロダクションのコードも書いていきたい。来年はDroidKaigiに参加するので、今から面白い話が聞けるんではないかと、非常に楽しみ。

tatsu-zine.com

DroidKaigi 2018

iOSDC 2017に参加した

9/14〜16の3日間、iOSDC 2017に参加してきました。 来年は何か発表できると良いかな。

よかったセッション

参加したセッションは面白いものばかりだったのですが、個人的に特に印象に残っているのは以下のセッションです。 アプリアーキテクチャや具体的な実装についての説明があったセッションと、今課題感を感じているアナリティクスやデータ分析に関するセッション、アニメーションに関するセッションが特に興味深かったです。

Build high performance and maintainable UI library

Building High Performance and Testable UI component // Speaker Deck

RxSwiftのObservableとは何か

RxSwift の Observable とは何か - Qiita

ディープリンクの設計と実装

ディープリンクの 設計と実装 - iOSDC2017 // Speaker Deck

多次元宇宙と画面遷移

多次元宇宙と画面遷移 // Speaker Deck

触り心地の良いInteractive Transitionをマスターしよう

触り心地の良い Interactive Transitionをマスターしよう - iOSDC 2017 // Speaker Deck

コード生成による静的なDependency Injection

Static Dependency Injection by Code Generation // Speaker Deck

FirebaseとBigQueryによるアプリのKPI分析(CMの効果検証編)

FirebaseとBigQueryによるアプリのKPI分析(CMの効果検証編) // Speaker Deck

サポート効率を上げるログ収集環境の構築

サポート効率を上げるためのロギング環境構築 // Speaker Deck

最後に

参加者のことを細やかに配慮しているのがわかる運営で、3日間大変快適に過ごせました。 スタッフの皆さんありがとうございました!

builderscon tokyo 2017に参加した

8月4, 5日と builderscon に参加してきました。

聞いたセッション

聞いたセッションの中で特に面白かったのは以下の2つでした。

builderscon.io

builderscon.io

複雑なJavaScriptアプリケーションに立ち向かうためのアーキテクチャ

speakerdeck.com

僕は仕事でここ3年くらいiOSアプリを書いています。このセッションはJavaScriptと銘打ってはいるのですが、iOSの設計にもばっちり適用できるアプリアーキテクチャがテーマでした。実例を交えつつ丁寧に説明してくださって非常に参考になりました。

関連して、以下の発表も大変参考になりました。真似しよう。

#yapc8oji 得票数4位トーク「あの日見たM V WhateverのModelを僕たちはまだ知らない」実況中継 - Re.Ra.Ku tech blog

DeepLearningによるアイドル顔認識を支える技術

speakerdeck.com

データセットを作成するyak shavingの中でRails, React, Dockerなど未経験の技術をキャッチアップされていて、目的を達成するために新しい技術を少しずつ学んでいくのはとても良いと思いました。

所感

buildersconは「知らなかった、を聞く」というテーマで、今回これはだいぶ達成できました。 個人的には自分の活動がインプットに偏っているのを常々感じているので、また勉強会で発表したり、このブログもぼちぼち書いていきたいなと大変刺激を受けました。

最後に

builderscon はセッションが面白かったのはもちろん、無限コーヒーや朝食が大変ありがたく、2日間大変快適に過ごせました。運営の皆さん、ありがとうございました!

RxSwiftのチュートリアルをやった

プレーンなSwiftで書かれたアプリをRxSwiftで書き換えるチュートリアルがあったのでやってみた。

www.raywenderlich.com

以下の点がとても良いと思った。

  • ソースコードをダウンロードして、すぐに手元で動かすことができる。(Xcode 8.2.1)
  • 分量が丁度良い。文章を読みながら進めて3h程度で終えることができた。
  • RxSwiftで書くとどういう風にコードが書き換わるのか、RxSwift, RxCocoaで何ができるのか、何が嬉しいのかが体感できる。

英語が得意ではない人でも、それほど苦労せず進められると思う。最後のバリデーションを実装する箇所は端末の言語設定が日本語だとうまく動かないので、英語にするとよい。

10月に読んだ本

 今月は5冊読みました。

間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価 (Software Design plus)

間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価 (Software Design plus)

 

 

 個人で書いたRailsアプリをHerokuで動かしたりしていて、Herokuに関する基礎知識が日本語でひとまとまりになっているのはとても有難いです。巻末の付録にあるTwelve-Factor Appについても自分は読んだことがなかったので勉強になりました。Twelve-Factorのプロセスはステートレスかつシェアドナッシングであるべきというのを読んで、HerokuだけではDBの永続化や画像ファイル等の保存ができないことの理屈が分かりました。あと設定は環境変数に格納するとか、常識なのかもしれませんが新たな知見でした。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

 

 

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

 

 

How Google Works (ハウ・グーグル・ワークス)  ―私たちの働き方とマネジメント

How Google Works (ハウ・グーグル・ワークス) ―私たちの働き方とマネジメント

 

 

あと9月にやっていたアンダースタンディング コンピュテーションの写経が途中だったりとかあるので、完走したい。。

8月に読んだ本

 

モチベーション3.0 持続する「やる気!」をいかに引き出すか

モチベーション3.0 持続する「やる気!」をいかに引き出すか

 

 

アジャイルな時間管理術 ポモドーロテクニック入門

アジャイルな時間管理術 ポモドーロテクニック入門

 

 

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

 

 

ドラッカーさんに教わったIT技術者が変わる50の習慣

ドラッカーさんに教わったIT技術者が変わる50の習慣

 

 

メタプログラミングRuby

メタプログラミングRuby

 

 今月は5冊読みました。

Ruby勉強し始めて半年くらい経ったのですが、はじめてのRuby → パーフェクトRuby  メタプログラミングRubyっていうのは、Rubyの入門としては理解を深めやすいステップの踏み方だと感じました。途中プロジェクトオイラーRubyで解いてみたり、Rubyのデザパタ本読んだり、Railsチュートリアルやってみたりとかもしたけど。パーフェクトRubyは著者が日本人だから読みやすいし、コーディングのスタイルがお手本になると感じたので、けっこう写経しました。

モチベーション3.0はエモなかんじで自分はとても好きでした。(小並感)

ポモドーロテクニックは今仕事中やってみてます。余裕がある時はいいけど、忙しくなってくるとけっこうリズムが崩れてくるので、その辺徹底すると能率が上がってきそう。

ドラッカーさんは買った時は立ち読みして良いなって思ったんだけど、今改めて読むとわりと当たり前のことしか書いてなくて、刺激が足りなかったです。

 

7月に読んだ本

 

継続的インテグレーション入門

継続的インテグレーション入門

 

さすがに5年前の本なので紹介されているツールは古くなっていますが、原則的な部分でのCIに関する知見が身についた気がします。これの発展的内容で継続的デリバリーにつながるかんじかと。

「納品」をなくせばうまくいく ソフトウェア業界の“常識

「納品」をなくせばうまくいく ソフトウェア業界の“常識"を変えるビジネスモデル

 

 とても良かった。自分の仕事は価値を生み出せているか?自問自答を続ける日々です。

 

嫌われる勇気

嫌われる勇気

 

 

 

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

 

実践したい。冪等性。インフラ as code.

環境をコードに落とし込んで即座に再現可能にするということ。