読者です 読者をやめる 読者になる 読者になる

念願の部署異動を果たしたので、最近の技術的チャレンジについてまとめた

どうもこんばんは。

私事ですが、先日部署異動を果たしました。1年半くらいずっとソロ活動だったのですが、さすがに色々と気が狂いそうになってきたし存在価値を自問自答した結果、かなり無理言って新規事業に異動させてもらうことにしました。

この会社に入って初めてプロジェクト立ち上げ時から居るっていうのを経験してるわけですが、サービスもかなり面白いものになると思うし、既に頭のなかでは色んな技術的な構想とか妄想が絶賛爆発中です。

僕はいつもしれっとした顔で仕事してますが、内心は相当テンション上がってるということを理解いただければ幸いです。というわけで、今日は最近の技術的インプットとか脳内の全然まとまってない構想的なのを、公開できる範囲で書いておく。

AWS/Docker

実は入社して最初のサービスもAWSだったんだけど、当時の部署の謎ローカルルールとか予算制限とかがあって自分が思い描いてた運用はほとんどできなかった。今回はあの頃と比べてAWS自体がかなり進歩してるので楽しめそうな気がしている。

Dockerは開発環境では使ってるけど、今回はproduction投入も模索したいところ。AWSECSが出ててるけど、まだプレビュー版なのでさすがに時期尚早か。であればKubernetesでのクラスタ構成をちょっと模索したい。

Terraform

飛ぶ鳥を落とす勢いのHashicorp社製のオーケストレーションツールでまだ歴史は全然浅い。ChefやAnsibleがサーバの中の構成がスコープならば、Terraformはインフラ構成そのものがスコープとなる。対応してるのはAWSはもちろん、HerokuDigitalOceanにも対応している。

微妙にまだ機能不足な面があったりするんだけど、Management consoleでポチポチやるのは結構ツライし事故るだろうし、インフラ構成自体をプログラマブルに管理できるのはやっぱり良い。Terraformで問題になることがなければ、当面これで突っ走る。

CircleCI

お前CircleCIの回し者だろってくらい推してる。今は色んな技術検証のフェーズなんだけど、CircleCIのおかげで開発初期の段階から高いレベルのオペレーションが可能になってる。Terraformのリポジトリをpushするとterraform plan(Dry runのこと)してテストしたり、インフラ構成を自動で更新できるようにしたりしてる。今後どこまでやっていくのが良いかはちょっと探っていきたい。

最初から素晴らしいCIツールがあることによって、インフラのコード化等による属人性の排除とかがものすごく促進されてる実感がある。たぶん皆そうしたいと思うんだけど、Jenkinsの手間とかがそれを阻害してる面は少なからずあると思ってる。あ、CircleCIについては語りだすと長くなりすぎるのでまた今後にしましょう。

Hubot

ChatOptsなる動きがあるけど、Hubotをちゃんと活用していきたい。目的は作業時間の短縮や、オペレーションの可視化等。hubot-circleciがまだ若干足りないのでPR送り始めた。

これが回り始めると色々と夢が広がる。

iOS/Swift

実は結構昔はネイティブをやってたんですがフロントエンド技術が面白くなり始めた時期に一度完全に捨てた。なのでiOS5の知識で止まってるのでリハビリを始めた。Objective-C自体はすぐ思い出したけど、コンポーネントやインタラクション制御周りはこれからちゃんとキャッチアップしていかないと高いレベルにおいてはまだまだ成立しないレベル。

で、去年Swiftという新言語が出たわけですがScalaエンジニアにとっては構文だったり、超絶なコンパイルの遅さ等親和性がハンパないと感じている。Scalaに慣れてる人であれば、iOS周りの知識をうまく吸収できればキャリアチェンジしやすいと思う。Scalaほど狂気じみて無いし(おい)

Android/RxJava

こちらもAndroid2.3以来ごぶさた。IDEAndroid Studioになってるし、Emulatorは結構進化してるし時の流れをものすごく実感してる。Androidの最近のトレンドいえばMaterial DesignやRxJavaによるReactive Programmingで、こちらも大きくパラダイムシフトしつつある分野。単純なプログラミングによる満足感という面だと、iOSよりAndroidの方が高い気がする。

E2Eテスト

当たり前だけど開発・運用の大半の時間はテストで占められ、良い質のサービス・アプリを目指せば目指すほどテストの量も増していく。プロダクトそのものの技術レベルと、運用レベルは共に比例して向上させていかなければいけないものだという考えがあって、テスト手法だけ遅れをとるようなプロダクトがこの先生きのこれるとは思っていない。

E2Eに力を入れない理由は無いし、CircleCIとか周辺ツールも充実しているので機は十分熟してると思ってる。E2Eテストは今年一番注力するテーマにしようと思ってる。

理想は人が変わっても価値を落とさず運用していけるようなサービスとなって、かつ新人エンジニアにとっての良い教材になること。

まとめ

と、いろいろ書きなぐったはいいが、恐らく取捨択一を迫られるでしょう。というわけで、この辺の野望に共感した意識の高い社内のモヒカンエンジニアの皆様、是非お手伝頂ければと思います(・∀・)ニヤニヤ