アプリ開発会社アイリッジの2018年技術動向振り返り

メリークリスマス！
こちらは[iRidge Advent Calendar 2018](https://qiita.com/advent-calendar/2018/iridge)の最終日の記事です。

株式会社アイリッジでは、O2Oアプリ（いわゆる企業公式アプリ）の開発を多数行っています。この記事では、アプリ開発会社であるアイリッジの2018年の技術動向について振り返ってみたいと思います。

# Python

アイリッジではサーバーサイドの開発言語として、主にPythonを使用しています。
Pythonは6月にバージョン3.7がリリースされましたが、それよりもPython 2のサポート期限が2020年1月1日に迫っていること、また、アイリッジで主に使用しているフレームワークであるDjangoのバージョン2.0がPython 3しかサポートしていないことの影響の方が大きかったように思います。
アイリッジのメインプロダクトであるpopinfoでも、お客様アプリのサーバーサイドアプリケーションでも、PythonやDjangoのアップデートに本格的に取り組んだ1年でした。
9月にはPyCon JP 2018にゴールドスポンサーとして参加しました。出展したブースではPythonの用途についてアンケートを取りましたが、機械学習での利用者が増えたなという印象でした。

@HayaoSuzuki の[2日目の記事](https://qiita.com/HayaoSuzuki/items/ddeceb60037644734868)では、Pythonで画像ファイルのヘッダ情報からファイルの種別を読み取る方法が紹介されています。お客様システムとの連携に際し、ファイルの拡張子を単純に信じることができなかった苦労が伺われる記事です。[8日目の記事](https://qiita.com/HayaoSuzuki/items/35da29eefbfc57de41d5)では、一見シュールなPythonオブジェクトの実装を通じて、Pythonの神髄（特殊メソッドの挙動）に迫ります。
@jumpyoshim の[11日目の記事](https://qiita.com/jumpyoshim/items/5ec4ef7a5615b3c2e9ac)では、Python製のCMSの比較をしています。PythonでのWeb開発業界もますます活発になっていってほしいと思わせてくれる記事です。

# Go

アイリッジではサーバーサイドの開発言語として、必要に応じてGoも使用しています。
また、アイリッジからスピンオフしたFintech子会社のフィノバレーでは、メインプロダクトであるMoneyEasyの開発言語としてGoを使用しています。
Goは2018年にバージョン1.10と1.11がリリースされ、ライブラリやツール類が一層充実しました。サーバーサイド開発やツール開発にも活発に使用されており、今後ますます活性化していきそうな気配を感じます。

@sakanagi の[16日目の記事](https://qiita.com/sakanagi/items/809b46a083107c033ee3)では、GoでWebスクレイピングを行う方法が紹介されています。題材として取り上げられているのが将棋連盟のサイトであるところが渋いところです。（アイリッジには将棋好きな社員が少なからずいます。）
@lighttiger2505 の[17日目の記事](https://qiita.com/lighttiger2505/items/9e2a1d967c6219720880)は、Goでの自作コマンドの開発を通じてエンジニアとして成長した話です。これからコマンドを自作したいと思っている方がモチベーションを上げるには最適な記事だと思います。

# AWS

アイリッジではクラウドインフラとして、主にAWSを使用しています。
AWSの新機能は語り切れないほどありますが、今年は特にマネージドサービスの活用に力を入れた1年でした。
8月にはAWSパートナーネットワークのスタンダードコンサルティングパートナーにも認定され、今後ますますAWSを活用し、クラウドネイティブな開発を目指していきたいと考えているところです。

@moonum の[5日目の記事](https://qiita.com/moonuma/items/d0f271b5c78e89787940)では、AWSのマネージドGraphQLサービスであるAWS AppSyncにAndroidアプリから接続する方法が紹介されています。アイリッジでマネージドサービスを活用した良い事例の一つだと思います。
@keinuma の[20日目の記事](https://qiita.com/keinuma/items/9e33eb1690d2a298c43b)と @ginyolith の[21日目の記事](https://qiita.com/ginyolith/items/62d6efd6e01d23b461e8)では、Amazon PinpointというAWSのマネージドプッシュ通知サービスをサーバー、アプリの両面から利用してみた例が紹介されています。スマホアプリでプッシュ通知をご利用の際はぜひアイリッジのpopinfoを…と言いたいところですが、それぞれ特徴が異なりますので、Amazon Pinpointの利用を検討している方はぜひ参考にしてみてください。

# Docker/コンテナ

Dockerを中心としたコンテナまわりの技術は、今年1年アイリッジで最も使われるようになった技術と言っても過言ではないと思います。
開発環境の構築に使うのはもちろんのこと、アイリッジではAWSを使うことが多いので、ECSやFargate（今年7月に東京リージョンで使えるようになりました！）をよく使います。
また、今年12月ついに東京リージョンでも使えるようになったEKSも気になるところです。

@sio_9 の[13日目の記事](https://qiita.com/sio_9/items/ba3f22e9bf51bae6c8b3)は、初めてECSを使う方へのチュートリアルになっています。これからECSを使い始める方にはぜひ参考にしてほしいと思います。
@yacchin の[15日目の記事](https://yacchin0101.hatenablog.com/entry/container_instance_2_fargate)では、実際のプロダクトをECSからFargateに移行した話が紹介されています。かなり具体的な話になっているので、同様にプロダクトをECSからFargateに移行したい方には参考になると思います。「トイル撲滅」という言葉は彼のおかげで社内に浸透しました。
@Kamihara [22日目の記事](https://qiita.com/Kamihara/items/6fbb2ea8ca2f511875fd)、[23日目の記事](https://qiita.com/Kamihara/items/839b830c9707b834bea0)は、これからDockerを使い始める方、Dockerをしっかり理解したい方へ向けた力作記事になっています。該当する方はぜひご一読ください。

#Vue.js/Nuxt.js

アイリッジではフロントエンドのフレームワークとして、主にVue.jsを使用しています。
HTMLの表現力が年々高まり、スマホアプリの画面をWebViewで実装することが増えてきましたので、今年は（今年も）フロントエンドの重要性が高まった1年だったと思います。
また、サーバーレス＋Vue.jsでシステムを開発することが増えた結果、Nuxt.jsが活躍する場面も増えてきたように思います。
9月にはNuxt 2がリリースされましたので、アイリッジでも遅れずにキャッチアップしていきたいところです。

@keinuma の[9日目の記事](https://qiita.com/keinuma/items/b3665055c8975622301c)では、Nuxt.jsにStoryBookを導入し、コンポーネントのデザインを確認しやすくする方法が紹介されています。チーム開発において、デザインのレビューはなかなか手間が掛かるところです。デザインレビューを効率的に進めたい方におすすめの記事です。

# iOS

毎年恒例のことですが、9月にiOS 12がリリースされました。iOSの仕様変更に振り回されるのも毎年のことですが、今年は例年以上に大変だったように思います。
今年発売されたiPhone XS、XS Max、XRでiPhone Xのノッチデザインが踏襲されたことも印象的な出来事でした。
9月にはiOSDC Japan 2018にシルバープランでスポンサーしました。本当はゴールドプランでブースを出したかったのですが、スポンサー枠がすぐに売り切れてしまったため、ブースを出せず寂しい思いをしました。来年は早めにスポンサーに申し込みたいと思います。

@Nick_paper の[14日目の記事](https://qiita.com/Nick_paper/items/5aeb6fe63a96c7038857) では、SwiftGenでiOSアプリのリソースを効率良く管理する方法が紹介されています。R.swiftと異なりライブラリではなくコマンドラインツールなので、インポートするライブラリをむやみに増やしたくないという方には参考になる記事です。

# Android

こちらも毎年恒例のことですが、8月にAndroid Pがリリースされました。今年はAndroid OSの仕様変更よりも、popinfoがバックエンドで使用しているプッシュ通知サービスであるGCMの廃止が2019年4月11日に決まり、FCMへの完全移行をしなければならなかったことの影響の方が大きかったように思います。
今までアイリッジではAndroidアプリを主にJavaで開発してきましたが、今年はKotlinの導入が進んだ1年でした。今後も徐々にKotlinの割合が増えていくのではないかと思います。
2月にはDroidKaigi 2018にシルバースポンサーとして参加しました。来年のDroidKaigi 2019にもゴールドスポンサーとして参加しますので、参加される方はぜひアイリッジブースへお立ち寄りください。

@ginyolith の[3日目の記事](https://qiita.com/ginyolith/items/c794b0803203ca56b9fd)では、Hyperion Androidというアプリのチェックツールを導入した話が紹介されています。デザイナーとの連携をスムーズに行いたい方、デザインのデバッグを便利に行いたい方には必見の記事です。
@TakayukiFukushima の[12日目の記事](https://qiita.com/TakayukiFukushima/items/c55e3a19288756dddd2d)では、Android用のDIライブラリ、Daggerが紹介されています。これからDIを勉強する方向けに分かりやすい例を交えた説明がされていますので、Daggerって聞いたことはあるけど何だか分からない…という方には役立つ記事だと思います。
@moonum の[18日目の記事](https://qiita.com/moonum/private/5fc5ccfdc1d9f30556d8)では、Android WebViewのセキュアコーディングについてまとめられています。WebViewは便利なコンポーネントですが、セキュリティについては意外と見落としがちになりやすいものです。皆さんも一度おさらいをしてみてはいかがでしょうか。

# GitLab

アイリッジではソースコード管理にGitLabを使用しています。
今まではGCEにGitLab Community Editionをインストールして自社で運用していましたが、今年はマネージドサービスであるGitLab.comへの移行を検討しました。
検討の結果、移行の作業が想定より大変なことが分かり、今回のタイミングでは移行を見送ったのですが、継続して検討していきたいトピックではあります。
GitLabは単なるGitHubクローンを超え、独自に便利な機能が実装されていますので、皆さんも導入を検討してみてはいかがでしょうか。

@jumpyoshim の[6日目の記事](https://qiita.com/jumpyoshim/items/d5a63bdd3681843866f8) では、GitLabの便利な機能が複数紹介されています。GitLabへの愛が感じられる素晴らしい記事になっています。
@yukkyun の[7日目の記事](https://qiita.com/yukkyun/items/8bf67b7875f68531f02e)では、ECSとGitLab CIを組み合わせてカナリアリリースを実現した方法が紹介されています。GitLabのCI機能はとても便利で強力な機能なので、ぜひ一度ご覧いただきたいと思います。

# それ以外にも

アイリッジでは多数のシステムを運用していますが、システムの運用に当たっては、SREという概念が一層重要になってきたように思います。
@orfx の[19日目の記事](https://qiita.com/orfx/items/6b54ff639bdfb6245f3c)では、SREの書籍を参考に自社サービスのSLOを定めたプロセスが紹介されています。インシデント管理と言われてもどこから手を付けてよいか分からない方、これからサービスのSLOを定めたいと思っている方はぜひ参考にしてください。

開発の効率化という意味では、プログラミングに関する知識と同様に開発環境を整えることも重要です。
あまり取り上げると怖いことになりそうですが、アイリッジ社員の @lighttiger2505 は黒魔術（CLIやエディタのハック）のエキスパートです。最後に彼の記事を紹介します。
[1日目の記事](https://qiita.com/lighttiger2505/items/166a4705f852e8d7cd0d)、[10日目の記事](https://qiita.com/lighttiger2505/items/29fecc9df0fddc80927a)ではVimを更に便利に使う方法について、[24日目の記事](https://qiita.com/lighttiger2505/items/1d2b93cbbfb31fa87786)ではLinuxの連続したコマンド操作を効率良く行う方法について紹介されています。

# 終わりに

@jumpyoshim が[4日目の記事](https://qiita.com/jumpyoshim/items/1e2df958ed4021b61132)で紹介してくれたとおり、アイリッジにはFlyhigh Fridayという制度があり、エンジニアが自身のスキルアップのために時間を使ったり、興味がある技術を調べるために時間を使ったりすることができます。
これまでご紹介した記事の中にも、Flyhigh Fridayから生まれた成果がいくつか含まれています。
来年もアイリッジ開発チームとして一体となり、技術力の向上に努めていきたいと思います。

それでは皆さん、良いお年を！