iOSアプリエンジニアになってからの1年4ヶ月を振り返る

今の会社に入社してiOSアプリエンジニアとなってから1年4ヶ月くらいたちました。 今の会社に入社したときや一年たったときなどにも何も書いていないことにふと気がつきました。あと、最近勉強会などによく参加していますがブログもあまり書いていなくて僕が何者なのか伝えられていない気がして、自己紹介もかねて書いてみました。

今の会社に入るまで

ずっとWindowsのプログラムをC++でWin32 APIを叩いて開発するような仕事をやってきた。 OSSのありものを使うと言うよりは、自前で何でも作っていくような環境だったので、いろいろ設計したり実装する力がついた。 既存の大規模プログラムを読み解いて機能を足すこともやったし、自分で基礎部分から設計して作り込むこともやった。

最後の1年くらいはC#WPF使ってタブレット向けのアプリを開発していて、新しい技術に触れたり、いままでにないアプリを企画者やデザイナーと一緒に練り上げる経験もできた。C#のTaskやasync/awaitに感動した。WPF触ってからiOSにやってきたので他の人とはiOSAPIに対する感想は違うのかもしれない。

今の会社でやっていること

とある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などを使っておらずコードでレイアウトしていたので初心者向けの情報が手に入りにくかったのがつらかった。

印象深いブログ

印象深い書籍

次の半年

勉強会にデビューしたり、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を使い始めた。最終日のハッカソンではすごいエンジニアたちと同じチームになることができて受賞できた。すごい人たちのやり方を間近でみて自分の中で何かが目覚めて、業務以外のことでもいろいろ勉強したくなった。ハッカソンでは今まで触ったこともなかった「Realm」を使ってみて、その手軽さに感動した。

印象深い書籍

  • 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

勉強会での登壇

  • fastlaneはともだち こわくないよ // Speaker Deck
    • 以前の自分が困っていたことに対する今の自分の答えを発表した。勉強会で発表するために、「自分の理解が正しそうか」などいろいろ調べることもあり、いままでの勉強とは違った感じの勉強になった。もしこの発表が自分と同じように悩んでいる人の助けになるとうれしい。

印象深い書籍

  • よくわかるAuto Layout
    • まだ読んでいる最中だけど、Auto Layoutだけという感じではなくViewの作り方全般について体系立てて説明されていてわかりやすい。

今度どうしたいか

  • 勉強会やカンファレンスで仕入れたもので未実践のものを実践する
  • 関数型関連の本を読み進めて、よりきれいなコードを書けるようにする
  • iOS SDKで使ったことのないFrameworkを使ってみる
  • コンパイラやCPUの気持ちをより理解しながらSwiftを書くためにSwiftの中身を知る
  • 勉強会駆動勉強(登壇)をもっとする
  • 技術系の記事をもっと書く。書くことを意識して情報を仕入れ
  • (すぐの話ではないが)Androidアプリ開発にも手を染めてみたい
  • (すぐの話ではないが)RDBAWSなどサーバーサイドの知識も仕入れたい
  • (すぐの話ではないが)個人でアプリを作ってApp Storeに出してみたい

感想

iOSアプリ開発始めた頃は何もわからなくて大変だったけど、アプリの開発がどんどん楽しくなってきている。 もっといろいろ知りたいしやりたい。自社アプリももっとメンテしやすくしたりユーザビリティを向上させたい。 思い切って前職を退職して、iOSアプリ開発者になってよかった。