2017年7月から9月 振り返り - aka iOSエンジニアがはじめてWebの開発を仕事でやってみた

はじめに

こんぬづは、ユーリ on Iceの3周目の視聴を終え、ユーリロストに悩まされている田中です。でも10月にはモデルとなった聖地、佐賀県唐津市に行く予定なので楽しみばい!

さて、うちの会社では四半期に一回JD面談という、振り返りや給与交渉、今後どういったことをしていきたいかというのを部長と話し合う面談があります。この時期になるといろいろ振り返ったりまとめたりします。せっかくなので考えの整理を兼ねて近況を個人ブログにもまとめておきます。

f:id:ktanaka117:20171001154844j:plain

目次

  • iOSエンジニアがはじめてWebフロントとサーバーサイドの開発を仕事でやってみた
    • 発端: 口を滑らせたばっかりに...
    • あれ?Webフロント開発やってるの?
    • そしてサーバーサイドの開発をやることに
    • Webをやってみての感想
  • iOSDCに登壇して定まった方向性 - iOSエンジニア戻ります!!!💢💢💢
    • 大きいイベントでしっかり登壇しないと、という目標・プレッシャー
    • iOSエンジニアに戻ろうと思ったきっかけ
    • テストに対する関心の高まり
  • まとめ
  • 2017年7月 - 9月の実績まとめ

iOSエンジニアがはじめてWebの開発を仕事でやってみた

発端: 口を滑らせたばっかりに...

これはたしかStoryboardの設定がうまくいかなかったり、大したことのない間違いでUI実装がうまくいかなかったときの、ダンボー怒りのツイーヨ。UI実装でなんかうまくいかないとかあるよね...。

こんなことを言ったばっかりに、「ダンボー田中、iOSやめたってよ」という話をよくされるようになりました。

iOSだけじゃなくてもっと広い視野でエンジニア業について考える必要があるとずっと思っていたので、ちょうど良い機会だと思い、会社で「サーバーサイドやりたいっす」的なことを言ったら3日後くらいからシュッとやらせてもらえることになりました。ヤッター!

あれ?Webフロント開発もやってるの?

ただ、入っている案件的にWebフロントのほうを優先する必要があって、ちょうどJavaScriptもやり始めた頃だったし、じゃあWebフロントもやろっかってことになりました。今をときめくReactとFlux Utilsを使って。

「おっ、ReactとかFluxとか、iOS的にも最近話に登るワードだし、ついでにやれてラッキー」とか思いました。

でも...、そこにはいろんなつらみがあった...。

f:id:ktanaka117:20170930170124j:plain

  • Webフロントに対する前提知識が足りない...。
  • イベントがどこに飛んでいっているのかわからない...。
  • Flux Utilsが設計として大きすぎる...。
  • 型がないってこういうことか...。
  • これ一体どうやって保守するんだろう...。
  • Typoで3時間。(一番精神的にクる)

などなど。大体は自分の経験不足だと思うのだけれど、Webフロントって修羅の世界っぽいな、もっとうまいやり方は絶対あるはずだけど自分には合っていないかもしれないなと思いました。 同じくエンジニアである父親がなぜJavaScriptに殺されたのかがわかりました。

でもやらなきゃわからないことだったので、今回経験する機会があって良かったです。

そしてサーバーサイドの開発をやることに

f:id:ktanaka117:20171001153854p:plain

Webフロントが自分にはつらすぎたので、チームと相談してみたところ、ちょうどサーバーサイドでのタスクが増え始めていた頃なのもあって、スプリントの切れ目でサーバーサイドチームに混ぜてもらうことになりました。

JavaScriptはつらいと言ったけれど、サーバーサイドに関しては入出力がはっきりしていてAPIのライフサイクルが短いこともあり、Webフロントほどつらみを感じませんでした。

サーバーサイドエンジニアとしてやったことは二つで、モバイル向けのAPIの開発と定期バッチの開発でした。特に楽しいと感じたのがバッチの開発で、様々な役割の登場するサーバーサイドのタスクフローをまとめるDigdag、データの流し込みを行うEmbulk、それらの成功失敗をSlackに通知する仕組みに触れたりしました。

サーバーサイドは賢いツールや頭の良い考え方が多く、参考になることが多かったです。

Webをやってみての感想

f:id:ktanaka117:20171001153928j:plain

今回Webをやって得た一番良かったことは、チームメンバーの「やったことはないけど、まあ勉強してやってみるよ」というスタンスに触れられたことでした。

これまで慣れたiOS開発をしているときは 「あー、いつも使っているライブラリを使えばいつも通り実装できるな。」 みたいな完全にエンジニアとしてヤバい考えになっていて、それを打ち砕くような環境で仕事ができたことはめちゃくちゃ良かったです。もっといろんなツールやライブラリを使って、開発手法の改善とかもやっていきたい気持ちになりました。

もともと僕はiOS開発しかやってきていなくて、 「もっと広い視野・技術を持つことで自分のiOS開発をもっと良くできるではないか」 という目論見がありました。Webフロント、API、データベース、その他各種AWSのサービスやツールを使ってみる、開発の一通りの経験を経てそれが叶えられそうな気がしています。がんばるぞい。

はい、Webの話終わり。

iOSDCに登壇して定まった方向性 - iOSエンジニア戻ります!!!💢💢💢

大きいイベントでしっかり登壇しないと、という目標・プレッシャー

f:id:ktanaka117:20171001154122j:plain

慣れないWebに翻弄されながらも、iOSエンジニアとして築いてきた周りからの認知は保ちたい気持ちがありました。東京に来てからもう1年半も過ぎる頃ですが、ありがたいことに大きなイベントで発表させていただける機会もいくつかあり、 一定期間内に大きなイベントでちゃんとしたネタを発表して、ブチ上げる(盛り上げる)必要があるというプレッシャーが勝手に生まれました。 これは定期的に印象に残る発表をしていかないと、界隈に忘れられて「昔、ダンボー田中というヤツが居てな...」なんて思い出の存在にされる気がしているからです。

プレッシャーの要因となった過去の発表は具体的には以下二つなど。

そんな中、発表したのが以下。iOSDCではありがたいことに二年連続で続投させていただいています。

結果として、自分の中でなんとかうまく発表できたなと思ったのと、ありがたいことにベストスピーカー賞をいただくことができましt。良かった、 プレッシャーに打ち勝って目標達成です!

iOSエンジニアに戻ろうと思ったきっかけ

f:id:ktanaka117:20171001153636j:plain

前述のベストスピーカー賞をいただいた記事でも様々な想いを書いているのですが、プラスαをもう少し書きます。

発表のあとの Q&A や Ask the Speaker で発表に対して話を聞きに来てくれる人が何名かいらっしゃいました。 それがとにかく嬉しかった。

  • 「うちではこういう解釈で設計を組んでいるんだけど、📦(田中)氏はどういう解釈をしていますか?」
  • 「もうちょっと具体的なコードを見せてください!」
  • 「そもそも設計についてわからないんだけど、なにから始めたらいいですか?」
  • 「設計に関する前提知識がメンバーごとにばらばらな中、どうやって共通認識を持つようにしていますか?」

などなど、僕としても一緒に考えて勉強になるお声がけをいただけて楽しいです。またありがたいことに、その後も資料を読んでこの話題について意見を交わしに来てくれる方もいる状態です。嬉しい。

話した内容にちょうど困っている人が居て、ヒットする話をできた。誰かのためになる発表ができた。それがとにかく感無量でした。ここの需要に応えることに価値があると感じたのでこれからはまた

iOSエンジニア戻ります!!!💢💢💢

テストに対する関心の高まり

f:id:ktanaka117:20171001153732j:plain

関心の高まりの理由は二つあります。

ひとつは設計に対する理解をより強固にするためです。ここ一年くらいは設計について考える機会が多くて、その結果テストと関連することが多いということに気づきました。なぜ責務分けをするのかという問いに対する答えの一つに「テストしやすさを上げるため」という理由があります。テストを書くことで、書いているコードに対する信頼性が高まります。メンテナンスのしやすさが上がり、より安全で効率的にプログラムを書くことができると考えています。

そのためには 実装するユニットテストが妥当かどうかを判断するスキルと、ユニットテストを書くためのスキルが必要になります。 今後はそこの理解を深めていく予定です。

ふたつめには@t_wadaさんのTDDBCを短い期間の間に二回受講してTDD熱が高まっているからです。

TDDは、 これから実装するもののゴールを明確にしてから開発し始める特徴がある と思いました。ぼんやりと実装をすすめていると、作ろうとしていたものと別のものが出来上がるときがたまーにあります。あるいは手癖でコードを書いて時間を使ってしまうとか。ゴールを先に決定して、それをグリーン(テストが通る状態)にするTDDの進め方をするとそれが矯正されるように感じました。

ちょろちょろ小さいアプリで実践してみているけれど、気づくと実装を先にやってしまったりするので、慣れが必要なことだと感じています。がんばるぞい。

まとめ

Webをやる機会をいただけたことについて、会社とチームメンバーには感謝の極みです。一回iOSから離れてみて、また見えることが増えるようになりました。

この三ヶ月は慣れないこととかいろんなことがありすぎて(東京にきてからずっとだけど)、時間が過ぎるのがとてつもなく早かったように感じています。自分の人生なんて一瞬で終わるなあ、寂しいなあと感じるようになっていて、今後どう生きていくかを考えることが増えてきました。

どうしようかなぁー。


ついでに、以下に仕事のこととか実績などまとめとくばい。

2017年7月 - 9月の実績まとめ

ブログ(Developers.IO)

イベント

お仕事