「ついカッとなって……」取り組んだ 開発者のための開発 で業務効率を改善させた話

ソフトウェアエンジニアの醍醐味は、華々しい働き方のみにあるものではありません。開発者のための開発など、地味かもしれないけど楽しくやりがいのある仕事について紹介します。

「ついカッとなって……」取り組んだ 開発者のための開発 で業務効率を改善させた話

アプリケーションエンジニアの 1id:aereal です。はてなで働いています。

昨今は機械学習などが半ばバズワードと化し、「トレンドを追いかけなければソフトウェアエンジニアとして生き残れないのではないか」という漠然とした不安に襲われることはないでしょうか。

これという専門分野の技術を活かし、所属する企業やひいては社会へ貢献するというあり方は、技術職として華があり憧れを誘うものです。

しかしソフトウェアエンジニアの醍醐味はそういった華々しい働き方のみにあるものではなく、むしろその他の様々な分野にたくさん散りばめられていると筆者は考えます。

この記事では「開発者のための開発」「梃子(てこ)としてのプログラミング」というキーワードを軸に、地味かもしれないけれど楽しくやりがいのある仕事について、筆者の経験を交えながら紹介したいと思います。

この記事を読まれているソフトウェアエンジニアの方やソフトウェアエンジニアを志しているが自信を持てないでいる方の心に、留まるところがあれば光栄です。

はてなで取り組んできた「開発者のための開発」について

開発環境の整備

Vagrant と Chef でつくるはてなブックマークの開発環境 // Speaker Deck(2013年「Hatena Engineer Seminar #2」発表資料)

以前チームを異動した際、まず最初に自分のマシンで開発環境を整えたのですが、これが1日作業となり途方に暮れました。筆者が「開発者のための開発」を強く意識し始めたのは、この出来事が大きかったように思います。

開発環境の構築は、それ自体が何かを生み出すことはありません。さらにそのチームでのセットアップ作業はいくつものコマンドを五月雨に実行していくというもので、時間ばかりが過ぎていきました。

丸々1日あれば、他にもっと生産的な仕事ができるはず。今後入ってくるメンバーのためにも、勢い付いて改善を始めました。それが上記の資料にあるVagrantとChefを使った開発環境構築の自動化です。

Build CI for Smartphone apps dev. at Hatena // Speaker Deck(2015年「【DeployGate x はてな】スマートフォンアプリ開発最前線」発表資料)

アプリケーションの開発環境を Ansible でつくる - Hatena Developer Blog

自動化の勘所を掴めたので、他のチームでも同様の取り組みをしたり、インストールするライブラリやミドルウェアの管理が手間そうだとCIの導入に悩んでいたチームに「こういうふうに負担を減らせるよ」とアドバイスして、技術を輸出したりもしました。

開発環境の整備に力を入れたところで、マイナスをゼロにする守りのエンジニアリングでしかないのではないかと悩んでいた当時の筆者にとって、自分が手にした技術でプラスの提案をする攻めのエンジニアリングに結び付いた体験は、自信を得ることに繋がりました。

パフォーマンスを計測するツール

はてなでは毎月PWG(Performance Working Group)という会を設けています。サービスを担当するアプリケーションエンジニアとオペレーションエンジニアが集まってパフォーマンスが悪化していないかを確認し、悪化していたりその兆候が見られたりしたら対策を検討することが目的です。

そのPWGのアジェンダの中にGoogle PageSpeed InsightsでJavaScriptの実行などを含めた体感ページ読み込み時間が悪化していないかを見るというコーナーがあります。

以前は、結果を見たいページのURLを都度入力して点数を確認し、前回より悪化している・変化なし・改善しているといった点を確認するという素朴な流れでした。

一見なんでもない手順に見えますが、筆者にはページを開いてURLを入力し点数の計測を待つ、その30秒程度の時間がもったいないように思えてなりませんでした。「こんな単純作業なら、自動化すればいいのでは?」と考えたのです。

PageSpeed Insights のスコアを Mackerel に投稿するアプリケーションをボタン1つで Heroku にデプロイできる状態にした - Sexually Knowing

そこで調べてみるとGoogle PageSpeed InsightsにはAPIが提供されていることを知りました。早速、簡単なアプリケーションを書いてMackerelのサービスメトリックとして毎日投稿するようにしました。

結果、毎月のPWGではMackerelのサービスメトリックのグラフを見るだけになり、これまで数クリックあった手順がなんと0クリックになりました

それだけではなく、計測したいURLを手軽に増やせるようになり、同一のエンドポイントでも異なる条件のページを同時に計測し始めました。これにより、特定のページでロード時間が悪化していることを発見し、最近リリースした機能が影響していそうだ、というところまで分析することができました。

こうした分析が進むようになることは当初想定しておらず、思わぬ産物といえるでしょう。

デプロイの改善

Web開発においてデプロイは切り離すことのできないワークフローです。同じソフトウェア開発でもパッケージ製品や組み込みなどと大きく異なる点として、納品ともいうべきデプロイが頻繁に、しかもほとんど終わることなく続く点が挙げられるでしょう。

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く