去る2018年5月19日にPythonのWebフレームワークDjangoに関するカンファレンス『DjangoCongress JP 2018』が行われました。 今回、エンジニアの鈴木が登壇しましたので、本人によるレポートを紹介したいと思います。

みなさまはじめまして、アイリッジでPythonエンジニアを担当してる鈴木です。 2018年5月19日にサイボウズ株式会社にてPythonのWebフレームワークDjangoに関するカンファレンス『DjangoCongress JP 2018』が行われました。 今回、私はスピーカーの1人として登壇しました。 このレポートではCfP応募までの経緯や準備、当日のことについて触れたいと思います。

CfPへ応募した動機

昨年8月にアイリッジに入社して以来、Django製アプリケーションの開発を行なっていました。 新規機能の開発も大きなウェイトを占めますが、それと並行して行なっていたのがアプリケーションの現代化です。 私がアイリッジに入社する前から長く続いていた歴史のあるプロジェクトであり、2017年8月時点では古くなっていました。 Djangoのバージョンアップをはじめ、リファクタリング、Twelve Factor Appをベースにした改良、パフォーマンスチューニング、そして環境変数との戦いなど面白い経験をたくさんしていました。 DjangoCongress JP 2018のCfPが募集開始となった際に、この面白い経験をまとめたらよいのでは、案件特有の話抜きでも面白いだろうと思い、プロポーザルを書き始めました。 プロポーザルは以下のようになりました。ほとんど悩むことなく、すぐにまとまりました。

発表のタイトル / Title
 レガシーDjangoアプリケーションの現代化

発表の内容(詳細なほど良い) / Talk Description (More details is better)
 2017年8月に参画したプロジェクトではDjango 1.7で書かれたアプリケーションが元気に稼働していました。
次期リリースに向けて、Twelve-Factor Appの思想に基づいてアプリケーションの現代化を実施しました。
現代化のためにプロジェクトチームで取り組んだことを紹介します。

* Django 1.7から1.11へのアップグレード
* 環境ごとの設定ファイルから環境変数による設定管理
* GitLab CIによる継続的インテグレーション、継続的デプロイ
* アプリケーションのDockerコンテナ化、Amazon ECSによるアプリケーションの運用
* Amazon CloudWatch、AWS X-Ray、Slackによるロギングと通知
* 管理コマンドをAmazon ECSでタスクにする
* ようこそ環境変数地獄へ

その後、

鈴木 駿 (Hayao Suzuki) さんの「レガシーDjangoアプリケーションの現代化」は選考の結果、採用となりました。

というメールが届きました。 PyCon JPのCfPには何度か応募したことがありましたが、幾度もリジェクトされてきました。 今回、初めてCfPが採用されとても嬉しかったのを覚えています。 一方で、45分という発表の経験が無く、不安もありました。

準備

まず、準備として行なったのはプロジェクトメンバーへのヒアリングでした。 自分で行なったことはよく覚えていますが、入社以前の出来事や苦労したことはわからないことが多かったです。 次に行なったのが題材の整理です。 今回、発表するにあたり中心においたのが「Djangoのアップデート」と「Twelve Factor App」です。 題材の取捨選択の基準としてその2つを選び、題材を整理しました。 また、うっかり機密情報を含めてしまう恐れもあったため、取締役を含めた社内のメンバーにレビューを依頼して内容を磨きあげました。

スライドの作成時間は業務時間内で行いました。 私が所属しているチームでは、毎週金曜日に自由な開発を行える時間があり、その時間を活用してスライドを作成しました。 業務時間中なので都度プロジェクトメンバーと相談することができて非常に効率よくスライドを作成できました。

スライドの作成は個人的な趣味からBeamerを選択しました。 Beamerとはスライドを作成するためのLaTeXのドキュメントクラスです。 Web系のエンジニアではほとんど使われていませんが、数学や物理などの分野でよく使われるツールです。 私は学部生のころから利用しています。 テキストベースであるため、スライドの入れ替えも楽です。

発表練習はゲネプロを2回実施しました。 私は2回ほどPyCon JPでライトニングトークをした経験がありますが、最初のライトニングトークではマイクロフォンをうまく扱うことができず、うまく発表できなかった経験があります。 そのため、実際にマイクロフォンを使って発表練習を行いました。 45分もマイクロフォンを持ち続ける自信が無かったのですが、ゲネプロの結果、喉の方が45分間も耐えられるのだろうかという結果となりました。

当日

受付開始が9時30分からで普段よりも早起きする必要があり不安でしたが杞憂となりました。 私の発表はお昼休み明けの最初であったため、それまでの発表は一応耳では聞きつつも上の空で自分の発表について考えていました。

いざ、自分の発表が始まった時、私は自然体でいることを心がけました。 私のPyCon JPでのライトニングトークを聞いていた方から「(鈴木は)自然体でも十分面白い」というアドバイス(?)を受けていたので、変に笑いを取ろうとせず、自然体でいこうと決めていました。 マイクロフォンも持ち続けることができたし、いただいたミネラルウォーターを時折口にして喉を潤しつつ発表を最後までやり遂げることができました。 CfPが通った直後に感じた不安などそこにはありませんでした。

発表をしてみなさまから感想をいただいてわかったことは、Twelve Factor Appに従うと環境変数の取り扱いの難しさに遭遇するという経験は普遍的なものである、ということです。 Twelve Factor Appに従ってアプリケーションの現代化を進めていった結果、プロジェクトメンバーは環境変数の取り扱いの難しさ(発表では「環境変数地獄」と表した)に直面しました。 Twelve Factor Appの概念を紹介するWebサイトではそのことには全く触れておらず、実際に直面するまで想定していませんでした。 現代化の取り組みの過程で何か下手を打ってしまったのか、それともよくある普遍的なことなのか、発表するまではわかりませんでした。 このことを知れただけでも発表した甲斐があったと感じました。

最後に

今回の発表ではプロジェクトのメンバー、上長、取締役と数多くの人に助けていただきました。 そもそも、アプリケーションの現代化という行いも私一人だけではなくプロジェクトのメンバー全員の行いです。 決して私一人ではできませんでした。

DjangoCongress JP 2018という素晴らしい場を提供してくださったスタッフのみなさま、物理的な場所を提供してくださったサイボウズ株式会社にも感謝いたします。 このような機会がなければ我々の取り組みを相対的に見ることができなかったと思います。

またこのような機会があれば、挑戦したいと思います。