2014年を振り返る

2014年の年越しは新潟県の赤倉温泉という場所で過ごしました。 2泊3日で12/30から1/1まで滞在していました。主にスキーをして過ごしていました。1/1は猛吹雪でほとんど滑れませんでしたが。。。

年も越したなので、2014年を振り返ってみました。ちょっと長いですが、お付き合いください。

仕事面

2014年は仕事ではリードエンジニアという立場で主に2つのプロジェクトに関わることができました。2013年は一開発メンバーとして任されたタスクを期限内に完成させれば十分でしたが、今年はチームのスケジュールやプロダクトの品質に責任を持ち、メンバーを気遣う立場であったので、私にとって良い経験となりました。

1つ目のプロジェクトは画像チャットアプリのiOSアプリ開発を後輩エンジニアと2人で行っていました。開発の中で、AVFoundationを使ったカメラ実装、CoreDataを使ったデータ管理、通信が失敗した時のリトライ処理、画像アップロードの通信中でも画面をブロックしないように非同期で行われる通信の管理に苦戦しながらも、アプリ申請まで3ヶ月ほどの期間で実装することが出来ました。しかしながら、AppStore審査は順調ではありませんでした。UGC系のアプリであること、写真撮影のハードルを低くするためにシャッター音を消したこともあり、何度もアプリRejectがありました。Rejectがあるたびに、レビュー担当者を説得するために頑張って英語を書いてましたw
リリース後は、プロジェクトにアジャイル開発が導入されて、その中でスクラムマスターという役割で朝会、スプリント計画、振り返りを私が中心となって行っていきました。これまで社会人のくせにファシリテーションをあまりやったことがなく、MTGでいかに結論を導き出すか、いかに時間内にMTGを収めるか、などで苦労しました。
他にも、ストアランキング向上のためのASO施策、施策の検討、朝会でのKPIの数値報告によりメンバーへの数値に対する意識付けをするなど、できることは手広くやっていました。 しかしながら、新規アプリを広めることは難しく、今はもうアプリはクローズされてしまいました。この失敗から学んだことを今年は活かしたい。

次に、2つ目のプロジェクトは今も開発中のアプリで、サーバサイドの開発全般をメインで担当しました。サーバサイドのAPIはNode.jsで開発していて、この頃からNode.jsを業務で本格的に使い始めました。 まずシステム構成の設計、半年後のリクエスト数からキャパシティプランニングを行いました。WebAPIの設計、開発、テストの工程を担当し、DBに関してもスキーマ設計、DBのパフォーマンスチューニングを行い、インデックスやクエリ最適化のことについて学びました。月例会で部門で最も活躍した一人として表彰されたことは社会人人生で最も嬉しかったことの1つです。
またこのとき、チーム開発の難しさも実感しました。思うようにパフォーマンスを発揮できないメンバーにどの仕事を任せればいいか、何を任せれば楽しんでくれるか、いかに会話しやすい雰囲気を作るか。そういったことを考えながら仕事していました。どういうタイプの人間かで接し方も変えるべきで、こうすれば確実に良くなるという方法はまだないのですが、こういった経験から自分自身も成長できたかなと思います。

プライベート

プライベートなところでは、Earth for SEKAI NO OWARIというチャットアプリのiOSアプリとサーバサイドの開発を手伝っていました。
iOSアプリはParseというmBaaSをベースに開発し、基本的なデータや全体プッシュはParse上で管理していました。ただ、Parseだけでチャットごとのプッシュ通知をすれば、費用が発生してくるので、そこは独自のサーバを立ててプッシュ通知を実装していました。
サーバサイドではNode.jsでExpressを使ってAPIサーバを立てました。また、開発環境はDockerを使って構築していて、仮想化技術のいい勉強になりました。
リリース後のサーバ監視にはNew Relicを使っていて、「これはめちゃくちゃ便利!」だと思いました。ソースコードに1行加えてだけで、難しい設定はほとんどなしで、APIサーバの死活監視、レスポンスタイムの監視、データベースのクエリ実行時間などが可視化出来ました。
このプロジェクトを通じて学んだことはいくつかQiitaに書いて、アウトプットできたかなと思います。

また、Node.jsに関しては業務で本格的に使い始めたことも合って、プライベートでも勉強しています。ExpressでAPIサーバを立てたり、Streamという概念がNode.jsにとって重要な概念であることを学んだり、Node学園祭に参加したりしていました。
業務ではサーバサイドJSをメインで扱っていますが、JavaScriptという言語そのものにも興味が広がっていて、クライアントJSに関してもちょこちょこ勉強したりしていました。業務のちょっとした社内WebツールのフロントエンドをAngular.jsを使って書き始めたり、クライアントとサーバサイドでJSコードを共有するIsomorphicなフレームワークであるLoopbackについても勉強していて、アドベントカレンダーでその紹介記事を書きました。

Loopbackフレームワーク入門 | Now or Never

その他の細かいことは以下のとおりです。

  • 5月からDayOneというアプリで日記をつけているけど、ほぼ毎日続いています。気軽に投稿できると続きますね。iPhoneとMacから使ってます。
  • 8月に台湾旅行しました。台北、九份、高雄を回りました。飯が安くて旨かったです。また行きたい。
  • コーヒーにハマる。タリーズのコーヒースクールにいったり、コーヒセット一式を購入して、豆からコーヒーをいれている。

これから

仕事面では、スマホ向けアプリの新規開発に主に関わってきました。これからはより大きな規模のプロジェクトの開発を担当し、そこで結果を出していきたいと思います。それと同時にやったことないことにも引き続きチャレンジし、事業を成長させるスキルセットを身につけたいと思います。

プライベート面では、社内外での情報発信を増やすことを目指していますが、Node学園祭の記事を書いたり、Node.jsアドベントカレンダーに参加できたので、2013年よりはガンバレたかなと思います。もちろんまだまだ頑張りたい。

また、2015年フォーカスして習得したい技術領域としては、アプリケーション層よりも低レイヤーの領域。Webにドラスティックな変化をもたらすには、アプリケーションのレベルではなく、プロトコル,OS,ハードウェア、データ構造の分野だと思う。特にこの中で、プロトコルにフォーカスして、TCP,UDPといった既存のプロトコルについて理解を深めつつ、HTTP2, WebRTCといった新たなプロトコルについても知識を吸収していきたいと考えています。

そして、毎年1つの新しいプログラミング言語を覚えることを目指しているので、2015年はgolangを習得したいです(ちなみに2014年はNode.js, 2013年はObjective-C)。本番環境で使えたらいいな。

長くなりましたが、今年もよろしくお願いします。

参考

Leave a Reply

Your email address will not be published. Required fields are marked *