はじめに
はじめまして。 開発部のISPチームで開発エンジニアをしている、akと申します。 (エンジニア歴:5年目)
この記事では、私たちISPチームがどんな仕事をしているのか、どんな雰囲気で働いているのか、そして私自身が感じているやりがいを、できるだけ具体的にお伝えします。 「ISPの開発って、実際は何をするの?」と気になっている方に、働くリアルが少しでも伝わればうれしいです。
チームのミッション
私たちISPチームのミッションは、朝日ネットのISP事業で生じる業務上の課題を、アプリケーション開発によって解決することです。 システムをただ動かすのではなく、事業をどう前に進めるかを技術の視点から考えて形にしていくことが、私たちの役割だと考えています。
普段の業務内容
私たちの仕事は、新しいサービスを届けるための開発から、システムを安定して動かし続けるための運用まで、幅広くあります。 主な業務は次のとおりです。
- 新規開発:システムの使い方をサービス設計部門と話し合って決め、データベースのテーブルやAPI(システム同士がやり取りするための取り決め)といった基本的な設計を行い、図を使って文書化します。そのうえでWebページやバッチプログラム(決まった処理を、まとめて自動で実行するプログラム)を実装してテストし、リリースの計画から実施までを担います。開発の一部を協力会社に依頼し、その結果をレビューすることもあります。
- 仕様変更・法規への追従:社外の連携先の仕様変更や、法規の変化に合わせて、システムを対応させる開発を行います。既存の機能の改修だけでなく、新しい機能を開発することもあります。
- 非定型の運用対応:不具合が起きたときは、原因を調査したうえで対応にあたります。プログラムの改修よりも、まず影響を抑えるためのデータの復旧を優先することも多く、その場に応じた対応を時間との勝負で進めます。社会インフラを止めないための、緊張感のある仕事です。あわせて、技術部門以外の部署からの問い合わせや、通常の処理では対応できない個別のケースに応じることもあります。
- チームを超えた改善活動:開発環境の改善やセキュリティ向上など、中長期的でチームの枠を超えた改善に取り組みます。
- 新卒社員への教育:プログラミング言語・データベース・Web技術の座学講義や実習を担当し、OJT(実務を通じて仕事を覚えていく育成の仕組み)のトレーナーとして、社内システムの説明や技術相談、レビューも行います。
- 定例ミーティング:上長への進捗・計画の報告や、協力会社との技術的な課題の相談を行います。
使用技術・ツール
私たちが使っている主な技術とツールを、用途とあわせて紹介します。
| 分類 | 技術・ツール | 何に使うか |
|---|---|---|
| 言語(バックエンド) | Java(メイン) | サーバー側処理の主力言語 |
| Perl | サーバー側処理で使用 | |
| Haskell | サーバー側処理で使用 | |
| 言語(フロントエンド) | JavaScript | ユーザーが見る画面の開発 |
| TypeScript | ユーザーが見る画面の開発 | |
| データベース | IBM Db2(メイン) | 主要なデータの保存・管理 |
| PostgreSQL | 一部システムのデータの保存・管理 | |
| フレームワーク | Eclipse Jersey | お客様向けの窓口機能の開発用 |
| Vue.js | 社内業務システムの画面開発用 | |
| Spring Boot | 外部システムとの連携機能の開発用 | |
| タスク管理 | Redmine | 課題報告・上長承認・作業記録など |
| Wrike | 開発計画のスケジュール管理 | |
| Google スプレッドシート | サービス設計部門との課題共有 |
Javaを中心に据えつつ、用途に応じて複数の言語やフレームワークを使い分けています。
1日のスケジュール例
1日の過ごし方は、運用上すぐに対応すべき割り込みがどれくらい入るかによって、日ごとに大きく変わります。
それでも平均をならすと、だいたい次のような割合で仕事にあたっています。
- 5割:新規開発、および社外連携先の仕様や法規の変化への追従開発(案件の性質に応じて、週に1.5時間ほどサービス設計部門と話し合う場があります)
- 2割:不具合対応や個別対応などの非定型運用作業
- 1割:チームを超えた中長期の改善活動
- 1割:新人教育
- 1割:定例ミーティング
チームの雰囲気・コミュニケーション
私たちのチームには、Slackで技術的な相談や情報共有を行う文化が、強く根づいています。 分からないことや共有したいことを、テキストで気軽にやり取りできる環境です。
一方で、テキストにしづらい抽象度の高い話題や、開発文化そのものについては、口頭で気軽に相談できる雰囲気もあります。 チームの枠を超えて、必ずしも目の前の業務に直結しない技術的な雑談が交わされることもよくあり、こうした技術の話を気軽にできる空気が、私にとっては日々の刺激になっています。
やりがい・面白さ
私がこの仕事に感じているやりがいは、いくつかあります。
まず、ISPという社会インフラを、自分の手で支えているという実感です。 次に、技術的な改善を自分から提案し、実行に移せること。 そして、周囲のメンバーから、日常的に技術的な刺激を得られることです。
加えて、システムと組織のどちらも規模が大きすぎないため、設計から実装、運用まで、さまざまなレイヤーに関与できます。 決められた一部だけを担当するのではなく、幅広く関わりながら技術の引き出しを増やしていける点は、私たちのチームならではだと感じています。
最近苦労したこと・向き合っている課題
きれいな話ばかりではないので、実際にぶつかった壁と、その乗り越え方もお話しします。
レガシーシステム(長年使われてきた古いシステム)のトラブル対応では、関連するデータを一つひとつ丁寧に調べ、オペレーターと協力しながら試行錯誤を重ねて、なんとか解決までたどり着きました。
要件が増え続ける、という課題もありました。 開発を始めたあとに要求が追加され続け、リリース時期が延びたり、他の重要な案件に着手できなくなったりしたのです。 そこで、早い段階から関係部門と要件について話し合う場を設け、不確実な今後の動向や設計上の選択肢を、ビジネスとシステムの双方の観点から検討することで、乗り越えようとしています。
その場しのぎの修正が積み重なり、拡張も解析も難しくなってしまったコードもありました。 ある程度時間をかけてリファクタリング(動作を変えずに、プログラムの内部構造を整理し直すこと)を行った結果、その後の開発がやりやすくなり、より高い確度で品質を保証できるようになりました。
複雑な仕様変更を理解するのに苦労したこともあります。 そのシステムに詳しいメンバーで集まり、話し合いながら一緒に図を作成しました。 図をつくるプロセスを共にすることで全員の理解が深まり、その後の開発がスムーズに進みました。
今後挑戦したいこと
これから私たちが挑戦していきたいのは、次のようなテーマです。
- ISPサービスと、その販路の強化に資する新機能の開発
- 運用負荷を低減するための改善
- セキュリティの向上
事業を前に進める開発と、足元の運用を良くする改善。 その両輪を回しながら、これからも社会インフラを支えていきたいと考えています。
▶ 技術部門のお仕事紹介【連載目次】に戻る
