iOSアプリエンジニアになってからの1年4ヶ月を振り返る
今の会社に入社してiOSアプリエンジニアとなってから1年4ヶ月くらいたちました。 今の会社に入社したときや一年たったときなどにも何も書いていないことにふと気がつきました。あと、最近勉強会などによく参加していますがブログもあまり書いていなくて僕が何者なのか伝えられていない気がして、自己紹介もかねて書いてみました。
今の会社に入るまで
ずっとWindowsのプログラムをC++でWin32 APIを叩いて開発するような仕事をやってきた。 OSSのありものを使うと言うよりは、自前で何でも作っていくような環境だったので、いろいろ設計したり実装する力がついた。 既存の大規模プログラムを読み解いて機能を足すこともやったし、自分で基礎部分から設計して作り込むこともやった。
最後の1年くらいはC#とWPF使ってタブレット向けのアプリを開発していて、新しい技術に触れたり、いままでにないアプリを企画者やデザイナーと一緒に練り上げる経験もできた。C#のTaskやasync/awaitに感動した。WPF触ってからiOSにやってきたので他の人とはiOSのAPIに対する感想は違うのかもしれない。
今の会社でやっていること
とあるWebサービスのiOSアプリ開発を一人でやっている。元々別の人が開発していたアプリを引き継いで機能開発などをしている。Bitriseを契約してCI環境を構築したり、一部のコードのSwift化など、開発効率向上のための働きも継続的に行っている。 通常のApp Store以外の配信のために、ADEP(Apple Developer Enterprise Program)やVPP(Volume Purchase Program) B2Bでの配信なども扱っている。
前職まではWindowsに詳しいエンジニアが社内にたくさんおり助けてもらう場面も多々あったが、現職ではそんな感じのことはあまり望めず、自力で解決していくスタイル。
今の会社に入ってからのおよそ一年半を、半年ぐらいずつに区切って振り返ってみます。
最初の半年
なにもわからないところからのスタートだったので、毎日のように強いプレッシャーと戦っていた。ひたすら必死で下記のようなことを覚えた。
- プロビジョニングプロファイルや証明書。App Storeでのリリース方法
- Xcode
- Objective-C
- iOS SDK
- ADEP (Apple Developer Enterprise Program) での配信
- CocoaPodsやfastlane
言語やフレームワークは、C#やWPFをやっていたおかげかそんなに抵抗なく受け入れられたと思う。でも、手になじんでいないから、何をするにもそれでよいのか調べながら書かなければならないじれったさはあった。
この頃はまだ勉強会などに参加することはなく、書籍や公式サイト、ブログなどから情報収集しながら頑張っていた。とくに下記のような情報に助けられたのが印象的。 会社のアプリはStoryboardなどを使っておらずコードでレイアウトしていたので初心者向けの情報が手に入りにくかったのがつらかった。
印象深いブログ
- 2015年に向けての行儀の良いObjective-Cの書き方 - Qiita
- どんなObjective-Cがよいのかこの記事から学んだ。この記事以外にも今城さんの記事は参考にしている。
- MICSS | iOSアプリの署名とDeveloper Programの関係
- ADEPでの配信など、この記事だけでなくADEPやVPP全般について大石さんから学んだ。とにかくこのあたりは情報が少ないので仕入れるのに苦労する
印象深い書籍
- 詳解 Objective-C 2.0 第3版
- Objective-Cについてはほとんどこれで覚えました
- プロの力を身につける iPhone/iPadアプリケーション開発の教科書
- 詳解 iOS SDK 第4版
- 体系的に学ぶ 安全なWebアプリケーションの作り方
次の半年
勉強会にデビューしたり、Swiftデビューしたり、業務以外のプログラムにもデビューした。どんどん楽しくなってきた。
身につけた知識は下記のような感じ。
- Swift
- Storyboardやxibを使ったUIの作り方
- Realmの使い方
- RxSwiftの概要と、どういう場面で役に立ちそうか
- Carthageからのパッケージ取り込み
- Himotokiによるデコード
前職の同僚が登壇する勉強会に誘われて、初めて勉強会というものにいきました。 それをきっかけにtry! Swift 2017 Tokyoというカンファレンスを見つけ参加しました。そのあたりから、iOSアプリの開発がどんどん楽しくなってきた業務で使っていないこともいろいろ試すようになってきました。
とくに印象深い参加イベント
- Sansan tech meetup #1 モバイルアプリ編 - connpass
- 他のモバイルエンジニアの発表を聞いたり、懇親会でお話ができることにただただ感動
- fastlane勉強会 vol1 - connpass
- fastlaneの便利さを知った。Ruby覚えると良さそうとか、中のコードを見ると良さそうとか知った。よい刺激が多すぎて、fastlane勉強会には何度も参加した
- try! Swift Tokyo 2017
印象深い書籍
- Swift実践入門
- Swiftとはどのように書くものなのかを知った。この本で得たことが、今のSwiftコーディングの基礎になっていると思う。
- 軽量・高速モバイルデータベースRealm入門
- ハッカソンで使ってみたRealmをもっとしっかり知りたくて購入。とても読みやすかった。たとえば、自社プロダクトのDB載せ替えをする場合のなんとなくのイメージもできた
- すごいHaskellたのしく学ぼう!
- いままで「関数型プログラム」というものに触れたことがなく、そういう考え方に触れるために会社の人のおすすめで購入。まだ読破できていないが、今までになかった発想が得られて、その後のプログラムの書き方に影響を受けた。これは今後もしっかり読んで理解を深めたい。
- モバイルアプリ開発エキスパート養成読本
- この本でRxSwiftに入門した。いままでdelegateやコールバック、NotificationCenterで書いていたことがすっきり書けることに感動。
直近半年
勉強会で登壇してみたり、OSSへのContributeデビューもした。会社でBitriseを導入したりfastlaneの活用範囲を広げることもやった。 いままでに得た知識を仕事でもどんどん実践して、iOSアプリ開発が手になじんできた気がする。 iOSDC Tokyo 2017というイベントにも参加して、さらにiOSアプリ開発が楽しくなってきた。
身につけた知識は下記のような感じ。
- MVPで小さなアプリをテストを作りながら作ってみた
- 手動レイアウトとAuto Layout(IBとコード両方)の実践を積んだ(Safe Layoutと仲良くなる過程で)
- fastlaneとBitriseの活用について。(自社アプリのリリースを楽にするための手法)
- VPP Custom B2Bによるアプリ配信
OSSへのContribute
- Fix typo by rikusouda · Pull Request #9353 · fastlane/fastlane · GitHub
- Pull Requests · apparition47/BreadCrumbControl · GitHub
- 仕事で使うためにOSSにPRを出して改良していった。レビューをしてもらえるのでとてもうれしい。
勉強会での登壇
- fastlaneはともだち こわくないよ // Speaker Deck
- 以前の自分が困っていたことに対する今の自分の答えを発表した。勉強会で発表するために、「自分の理解が正しそうか」などいろいろ調べることもあり、いままでの勉強とは違った感じの勉強になった。もしこの発表が自分と同じように悩んでいる人の助けになるとうれしい。
印象深い書籍
- よくわかるAuto Layout
- まだ読んでいる最中だけど、Auto Layoutだけという感じではなくViewの作り方全般について体系立てて説明されていてわかりやすい。
今度どうしたいか
- 勉強会やカンファレンスで仕入れたもので未実践のものを実践する
- 関数型関連の本を読み進めて、よりきれいなコードを書けるようにする
- iOS SDKで使ったことのないFrameworkを使ってみる
- コンパイラやCPUの気持ちをより理解しながらSwiftを書くためにSwiftの中身を知る
- 勉強会駆動勉強(登壇)をもっとする
- 技術系の記事をもっと書く。書くことを意識して情報を仕入れる
- (すぐの話ではないが)Androidアプリ開発にも手を染めてみたい
- (すぐの話ではないが)RDBやAWSなどサーバーサイドの知識も仕入れたい
- (すぐの話ではないが)個人でアプリを作ってApp Storeに出してみたい
感想
iOSアプリ開発始めた頃は何もわからなくて大変だったけど、アプリの開発がどんどん楽しくなってきている。 もっといろいろ知りたいしやりたい。自社アプリももっとメンテしやすくしたりユーザビリティを向上させたい。 思い切って前職を退職して、iOSアプリ開発者になってよかった。