History

概要

職業プログラマーとしての職歴や展望を記載する。 kijima

基本的な情報を示す。

   
氏名 貴島 大悟 Kijima Daigo
生年月日 1998-03-28
居住地 東京
最終学歴 鹿児島大学 法文学部
GitHub kijimad

要約。

Golangを使ったWeb開発に強みがあるバックエンドエンジニアである。スケーラブルなWebアプリケーションとSaaSの構築、API設計、複雑なバックエンドシステムの開発・運用の経験がある。参画したプロジェクトの小規模アジャイルチームではフロントエンドおよびインフラ業務も担当してきた。

技術スタック

メインでバックエンドサーバ開発、サブでフロントエンドやインフラまで業務を行ってきた。今後もバックエンド領域を軸として開発に携わっていこうと考えている。

職務経歴詳細

経歴の全体像を示す。

20240430-history.drawio.svg

Figure 1: 経歴の全体像

会社ごとに、参加したプロジェクトを列挙する。

株式会社リアルグローブ(2022-11 ~ 現在)

項目 内容
概要 政府向け地図SaaSの開発
使用技術 Go, React, GitHub Actions, AWS(Lambda, CloudFront, Aurora…)
期間 2024-09 ~ 現在
チーム人数 フルスタック2名
担当比率 Backend 70% / Frontend 20% / Infra 10%
  • 状況

    リリース直後フェーズの地図SaaSに参画し、バックエンド中心に新機能開発、変更対応、リファクタリングを担当した。

  • 課題

    顧客要件の変更に伴い、API/DB/UIを横断する権限構造の抜本的改修が必要となった。稼働中サービスへの影響を最小化しつつ、将来の要件変更にも対応できる設計が求められた。

  • 行動
    1. 「ユースケース確認 → 設計 → 作業フロー設計 → 実装」のプロセスを徹底し、各段階でドキュメンテーションとレビューを実施した。
    2. 設計前に複雑な既存仕様の把握と整理のため、テスト強化・リファクタリングを先行実施した。
    3. 変更前にガードレール(Linter強化、CIでの自動検証)を整備し、大規模変更を安全に行える状態を構築した。
  • 成果
    • 仕様理解の齟齬や設計ミスによる手戻りをほぼゼロに抑制した。
    • 稼働中サービスに影響を与えず、期限内に仕様変更を完了した。
    • 将来的な人的ミスの防止に寄与する仕組みを整備した。


項目 内容
概要 自治体向け3D GISの新規開発
使用技術 Go, Linux/Windows, PostgreSQL, Apache, GitHub Actions
期間 2022-12 ~ 2024-09
チーム人数 Backend 1名 / 3D Frontend 5名(社外)
担当比率 Backend 100%
  • 状況

    測量会社向け3D GISの新規開発にて、バックエンド全般を単独で担当した。

  • 課題
    1. 短期間でGIS関連知識をキャッチアップしつつ設計を行う必要があった。
    2. 異なる専門領域を持つ複数の他社チームと合意形成しながら開発する必要があった。
    3. 複数OS・複数DB対応が求められた。
  • 行動
    1. 書籍や他社の専門家からの属人知識を積極的に吸収し、GIS領域を短期間で習得した。
    2. 必要に応じて事業責任者/別チームの開発者と小規模で頻度の高い会議を設定した。 OpenAPI を用いたスキーマ駆動開発を推進し、仕様策定を円滑化した。
    3. DB・OSを交換可能なアーキテクチャとし、CIを設定し、各組み合わせの検証を自動化した。
  • 成果
    • ユースケースレベルで他チームと議論できる共通言語を獲得し、合意形成を高速化した。
    • 異なる会社間のチームにおいて、細やかな情報共有によって認識の齟齬を少なく抑えた。
    • 開発段階でOS/DB差異による問題を早期に検出し、安定した品質で提供した。

株式会社資格スクエア / 株式会社サイトビジット (2020-10 ~ 2022-08)

⚠ 会社分割による移籍であり、業務内容は継続。

項目 内容
概要 難関資格向けオンライン学習サービスの開発
使用技術 Ruby on Rails, ECS, EC2, GitHub Actions
期間 2020-10 ~ 2022-08
チーム人数 Backend 5名
担当比率 Backend 50% / Frontend 20% / Infra 30%
  • 状況

    複数年運用されたサービスにて、新機能開発、UI刷新、リファクタリング、インフラ改修を担当した。

  • 課題

    長期的な技術的負債や未整備の開発環境がボトルネックとなり、開発速度・品質の改善が必須だった。

  • 行動
    1. 開発競争力向上のため基盤刷新を主導した。
      • 開発環境を Docker 化し、環境差異を解消した。
      • EC2 で稼働していた本番サービスを、ダウンタイムゼロで ECS へ移行した。
      • コンテナ化に関連して、CI/CD・ログ基盤まで刷新した。
    2. 「テスト部長」としてコード品質改善を推進した。
      • カバレッジを 78% → 90% に向上した。
      • カバレッジ変動の自動通知、頻繁なテスト追加、ハンズオンを開催してテスト文化を定着した。
      • 本番環境を使ったコール回数抽出の仕組みを導入し、数年分のレガシーコードを安全に削除した。
  • 成果
    • コンテナ化により環境差異がなくなり、開発段階での検知率が向上した。 運用コスト削減と安全性向上を実現した。
    • テスト文化が浸透し、PR には必ずテストが含まれる状態を実現した。 可読性と保守性が大幅に改善した。
    • 大量の不要コード削除により認知負荷と将来のリスクを削減した。

RAQ

キャリアをどう考えているか

将来的にどういったキャリアを考えているかを示す。

  • MUST プログラマー(専門職)

    コードを書いたり設計したりすることが、自身の根源的なモチベーションである。 個人やチーム、会社にこの情熱を活かしたいと考えている。

  • SHOULD バックエンドプログラマー

    ビジネスの根幹を支えるバックエンド領域に専門性を持ち、知見を元にアーキテクチャ設計であったり技術選定をリードしていきたいと考えている。 課題解決のため、必要に応じてフロントエンド、インフラも担当する。

さらに、目指す方向性は「テックリード」を考えている。根拠を示す。

これまでの経験や感情から、目指す姿は2つの要素で構成される。

  1. 大きな範囲の責任を持てるレベルの技術力:

    プロダクトや事業を熟知し、長期的かつ広い視点で技術選定やアーキテクチャ設計できる。コードの品質を高く保てる。これらによってプロダクトに強い競争力をもたせられる。

  2. チームへ貢献できる:

    開発プロセスの改善やチームメンバーの技術的な成長を支援し、チーム全体のアウトプットを向上させられる。

これらにもっとも近い職務の類型は「テックリード」だと考えている。必要な能力を分解して列挙する。現時点では満たしていない。

  • 高い設計・プログラミング能力

    時間・空間的に広い領域を考慮して設計する能力。複数の選択肢を挙げられ、要件に合わせて最適な方法を選ぶ能力。

  • ビジネス知識

    ビジネスの視点から技術的優先度に変換する能力。

  • コミュニケーション能力

    技術的制約を認知し、関係者に平易に説明する能力。

会社選びの軸は何か

業界。

業界というより、自分ごととして理解・興味を持てる問題領域と、難易度の高い技術的課題に取り組むことを重視している。


会社。

  • MUST 開発経験を活かせる
    • いままでの業務経験を活かせること。成果を安定して出せる可能性が高いため
    • ベースは経験を活かしつつ、積極的に未知の分野にも挑戦する
  • MUST 会社として優れた技術力がある
    • 例: 技術ブログでの情報発信が活発、OSSへの貢献者が在籍、カンファレンスでの登壇実績など
    • ナレッジを共有する文化や体制があると貢献しやすい。自分が新しいことを得やすい
  • SHOULD 大規模チーム/システム
    • 今までは少人数チームでの開発が主だったが、守備範囲の広さや自走力を活かし貢献しつつ、比較的大きなチームやプロダクトでの経験を積みたいと考えている。また、大規模システム特有の課題(高アクセス、スケーリング…)に取り組みたいと考えている

プライベートの興味・関心

プライベートの、興味の方向性を示す。昼間の仕事と100%一致しているわけではない。

  • 低レイヤの知識が必要な領域

    コンピュータに関する疑問を出発点としていくつか学んでおり、おもしろさを感じている。これを仕事に活かしたいと考えている。コンピュータに関する知識は、根本のアイデアはとてもシンプルなことが多く見える。理解できたときに嬉しさと美しさを感じる。また、知的好奇心を満たしてくれるのとともに、アプリケーションレベルの問題解決に役立てることができる。直感的でない挙動を理解したり、あるいは応用可能な強力な基礎となって設計や実装に役立てることができる。あくまでアプリケーションを作るうえでの武器にしたい、そういう知識が必要になるアプリケーションを作りたいということで、低レイヤそのものを仕事にしたいのとは微妙に異なる(能力も足りていない)。

  • 自分で使うツールを作る

    プログラマーが使うツールやライブラリの開発に興味を持ち、知識を深めている。たとえば、Linter/プログラミング言語/CI/Emacsプラグイン…などがある。余暇にいくつかのツールを開発しているが、ほとんどのケースは自分が必要にかられたことをモチベーションとして開発した。Web開発者としても、プログラマーがターゲットになっている、ドッグフーディングできるようなサービスに参画できるのがベストだろうと考えている。

パフォーマンスを最大化できる環境

開発効率を高めるために、希望している環境。

  • SHOULD 普段から使い慣れているLinuxベースのマシンで開発できること(ディスプレイマネージャをEXWMに設定できること)
  • SHOULD 集中しやすい静かな環境での作業と、チームとの対面コミュニケーションのバランスを取るため、週1~2回の出社頻度であること(フルリモートがベストではない)

OSS活動

プライベート年表

趣味的なものを含む年表。

2025年

  • 自作RPG ruinsの機能追加した
    • 戦闘システムを追加した
  • トレーディングカード風画像ジェネレーターtcgを作成した
  • na2meを拡張した
    • タグを機械的に追加する機能を追加した
    • 画像を共通のサイズへ切り出し・フィルタ処理をかけられるようにした。背景画像の準備を楽にした
    • 夏目漱石以外のほかの本も追加した
    • しおり機能を追加した。ファイル/ローカルストレージによって永続化する
  • 長期休暇を取り1ヶ月アメリカを旅した
    • ロサンゼルス → ラスベガス → サンフランシスコ → シカゴ → ナイアガラ(アメリカ) → ナイアガラ(カナダ) → ニューヨーク
  • ブラウザで動くバイナリビューワbviewを作成した
  • 静的サイトジェネレータ型RSSビューワplanetizerを作成した

2024年

  • ElectronとGoでRSSフィードビューワsquallを作成した
  • ローカル用のPDFビューワshelfを作成した
  • 自作ローグライクRPGの機能追加した
    • 吉里吉里Zライクなシンタックスで記述できるメッセージシステムを追加した
    • インベントリシステム(使用、装備、取得、廃棄)を追加した
    • フィールド上を移動できるようにした
  • X Window System用のスクリーンルーラーxrulerを作った
  • ノベルゲームエンジンnovaを作成した
  • 自作ノベルゲームエンジンで夏目漱石の作品を記述したna2meを作った

2023年

  • GitHub Actionsライクなシンタックスで書けるタスクランナーgorunを作成した
  • CLIでパズルゲームの倉庫番を楽しめるsokobanをスクラッチで作成した
  • OpenAPIバリデーションツールoavを作成した
  • ミニマルなCPUエミュレータminicpuを作成した。本を参考に、Goで書き直した
  • nand2tetrisのアセンブラをGoで書いた
  • 高速な通知ビューワgarbanzoを作成した
  • 手作りのWebサーバgsrvを作成した
  • 環境構築スクリプトをGoで書き直して、共通部分をライブラリ化した(silver)
  • Gitタグを元にファイルに記載されたバージョンを書き換えるコマンドラインツールcarveを作成した
  • Goのアセンブリコードを出力するorg-babel拡張ob-go-asmを作成した
  • tinyfilemanagerにファイルアップロードするコマンドラインツールuplを作成した
    • ブラウザでのアップロードが制限されている特殊環境で、Tiny File ManagerがAPIリクエスト非対応だったため作成した…

2022年

  • このサイトの開発環境・自動テスト・デプロイをDockerコンテナで行うようにした(ビルドがEmacs, Ruby, Python, sqliteに依存する)。本番環境のGitHub Pagesへの展開と、ステージング用のHerokuへのコンテナデプロイ
  • リポジトリの更新されていないファイルをコメントするGitHub ActionsStaleFileを作成した。GitHub Marketplaceで公開した
  • パーマリンクからコードを展開するEmacs拡張ob-git-permalinkを作成してMelpaに投稿し、マージされた。
  • ローグライクdigger_rsの作成(WIP)
  • 自分用にカスタマイズしたUbuntuのisoイメージを作成した。USBに焼いて、すぐ自分用のクリーンな環境のマシンを作れるようになった
  • 設定ファイルからgit管理してgit cloneを行えるgcloneを作成した
  • GitHubの活動統計をとるactを作成した
  • actを使ってリポジトリに情報を蓄積するcentralを作成した
  • GitHubの言語の色に基づいたSVGバッジを生成するmaruを作成した
  • ライフゲームwebアプリgolifeを作成した
  • GitHubのコードレビュー返信ツールgarを作成した
  • Emacsの設定ファイルを文書化した

2021年

2020年

2019年

2018年

  • 村上龍にハマり、彼のすべての小説、エッセイを読んだ。

2017年

  • WordPressでサイトを運営していた。

2016年

  • 鹿児島大学(法文学部/経済情報学科)に入学した。
  • 北京の清華大学に語学留学した(半年間)。

2015年

  • Linuxに出会い、メインOSとして使いはじめた(以後ずっと)。
  • Emacsと出会い、学びはじめた。(きっかけは図書館にあったPerlの本で推していたこと)

References

Backlinks