History

基本情報

プロのプログラマーです。

氏名 貴島 大悟 Kijima Daigo
生年月日 1998-03-28
居住地 東京
最終学歴 鹿児島大学 法文学部
GitHub https://github.com/kijimaD

技術スタック

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

興味・関心

  • 自分が使うものを作ること

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

  • 幅広いエコシステムを持ったプログラミング言語

    主にGoをメインで使用しています。C言語やRustもかじっています。軸としてはひとつの言語でWeb、システムツール、プログラミング言語、OS、ハードウェアを幅広く行え、エコシステムが充実している言語です。それらは自分の興味を満たしてくれるように感じます。アセンブラなど低レイヤを勉強するたびにコンピュータへの理解・解像度が深まっていくのを体感しており、そのための既存の参考コードが多いプログラミング言語に精通していきたいと考えています。またキャリア上も、Web開発以外の選択肢を残すことができます。

OSS活動

職務経歴詳細

Sorry, your browser does not support SVG.

Figure 1: 経歴の全体像

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

プロジェクトを列挙する。

業務 3D GIS(デスクトップ版)のバックエンド開発
役割 要件定義、設計、コーディング、レビュー、テスト
主要技術 Go, Linux, Windows, GitHub Actions
期間 2023-10 ~ 現在

概要。

  • 3D GISのデスクトップアプリケーションを単独でバックエンド開発
  • Goによるバックエンドサーバの開発
  • アプリケーションに関する複数のプロセスを管理するランチャー開発

アピールポイント。

  • プロダクトの要件により、クロスプラットフォーム(Linux, Windows)、マルチDB(SQLite, PostgreSQL)対応。CIによって、複数の組み合わせでの安定動作を達成した
  • 高いテストカバー率
業務 3D GISのバックエンド開発
役割 要件定義、設計、コーディング、レビュー、テスト
主要技術 PHP, PostgreSQL, Apache, Linux, GitHub Actions, Docker
期間 2022-12 ~ 2023-10

概要。

  • 3D GISの新規開発案件
    • バックエンドは自分ひとり
    • フロントエンドは異なる開発会社混同で5~10人
  • 他社の製品開発の責任者から要件をヒアリングし、希望のものを作る仕事
  • バックエンドサーバ・インフラ1を単独で要件定義、仕様策定、システム設計、実装
  • 例:
    • 認証機能
    • オフライン用機能
    • 地物の段階的な絞り込み検索機能(例: 大字小字番地XY座標)
    • Apacheのチューニング。非常に地物のサイズが大きく(ギガバイト級)、ネットワーク速度も遅かったため必要となった

アピールポイント。

特に技術的難易度の高いものではなかったと考えている。少なくとも開発のフェーズゼロにおいては技術的要件の高いアプリケーションではなかったので、そこには開発工数が割り当てられていない。アピールポイントは、他社の担当者へのヒアリングで背景を理解したうえで要件定義や設計を取りまとめ、文書による合意を得ながらやった部分。自分から関係者の日程を押さえる部分から行い、先方からは積極的に提案・設計・開発を進めてもらって非常によかった、素晴らしい進め方だったとの評価をいただいた。

  • OpenAPIでスキーマ駆動開発をリードした
  • OpenAPIによるフロントエンド用SDKの提供・サーバコードを生成して効率的に開発した
  • 他社の製品開発の責任者と文書による合意を常にとり、トラブルや認識ミスが発生しなかった
  • 積極的に背景理解のための質問をし、ビジネスを含めた文脈を理解したうえで提案を行い、多くが採用された
  • 顧客先への納品を遅延なく完了した
  • 高いテストカバー率とCIによる安定した開発
業務 社内システムのバックエンド開発
役割 設計、コーディング、レビュー、テスト
主要技術 Go
期間 2022-11 ~ 2023-01

概要。

  • 社内システムのリプレイス

株式会社資格スクエア(2021-12 ~ 2022-08) ⚠ 会社分割による移籍で、業務内容は変わっていない

業務 資格教育サービスの開発
役割 設計、コーディング、レビュー、テスト
主要技術 Ruby on Rails

会社分割による、株式会社サイトビジットからの移籍。業務内容は変わらない。

  • プロジェクト
    • マイページをリプレイス(5人程度のチーム)
      • リプレイスのベースとなる部分のAPI担当
    • 本番サービスコンテナ移行(単独)
      • 稼働中のRailsサービスをEC2 → ECSへ移行した
      • 数年間EC2インスタンスで稼働していたRailsサービス
      • CI/CDも含めて切り替え
      • ダウンタイム・障害なし
    • サービスのメイン機能リプレイス(5人程度のチーム)
      • API担当
  • 特筆事項
    • 開発環境のdocker-composeの整備を行い、WEB開発をすべてDocker上で行えるようにした
    • CIテストで本番環境に準拠するDockerイメージを作成し使うようにした。本番環境に近い形でテストを行えるようにした
    • 本番環境のアップグレード。Ruby 2.7.1 -> 2.7.4, Rails 6.0 -> 6.1。
    • 1月度のMVPを受賞した

株式会社サイトビジット(2020-10 ~ 2021-12)

業務 資格教育サービスの開発
役割 設計、コーディング、レビュー、テスト
主要技術 Ruby on Rails
  • 特筆事項
    • バックエンド、フロントエンド、テスト、インフラと幅広い範囲の業務を行った。既存の中規模リポジトリの保守運用
    • テスト開発のリーダーとしてテストを書きまくり、RSpecカバレッジ率を向上(78% → 90%)させた。カバレッジ率を定期的にアナウンスすることで、チームに浸透させた。
    • 失敗率の高いテスト修正によるCI安定化
    • YouTube Analyticsを独自に詳細分析するGASプログラムを作成
    • 古いバージョンのRedashのデータ移行を伴うDocker環境移行
    • 中規模のテーブル移行を伴う機能改修プロジェクト担当

大切にしていること

  1. 好きなことをやる

    好きなことをやっているときが一番幸福で、能力を発揮できると考えています。好きにも程度があって、金を払ったりリスクを負っても追い求めるくらい好きなこと、を見つけてやり続けることが大切だと考えています。例えば昼はバイトをして夜演奏するミュージシャンは、好きの程度が非常に高いと考えています。

  2. オープン

    単にアクセス可能にするだけでなく、時間・言語・文化的背景に依存しない情報をやりとりすることがオープンだと考えています。誰かの役に立つだけでなく、オープンにする人にも大きなメリットがあります。よりよくなるための圧力がかかり、さらに多くのフィードバックを受けられます。

やりたいプロジェクト

やりたいと考える傾向があるプロジェクトを示し、価値観や方向性を表現する。細かく言い出すと無限にあるので、もっとも重視する3つを挙げる。あくまで「やりたい」であって、条件ではない。

  1. 製品を自分で使えるプロジェクト
    • 余暇で作ってきたものはほとんど自分が使うもので、モチベーションを高く保ち続けてきた
    • 自分で使うことによって、使うプロダクトやユーザを理解できる。そして作り直しながら使うことで、モチベーションを高められる
  2. コンピューティング自体が本質的価値であるプロジェクト
    • 例. IaaS, CI, CD, Monitoring, Logging, ミドルウェア開発…
    • コンピュータに興味が強い(製品の本質的価値と興味の適合)
    • 開発に比較的低レイヤーの知識を必要とする傾向があるとよい(必要となる技術領域と興味の適合)
  3. 自分の意見を出す余地がある、出しやすい雰囲気のあるプロジェクト
    • 製品の文脈や背景を理解し、自分やチームが納得、合意したうえで開発を進めていきたい。視点の数と多様性によってよい製品になると考えていて、自分もその視点の1つとして責任を果たせると思っている

プライベート年表

2024年

  • ElectronとGoでRSSフィードビューワsquallを作成した
  • ローカル用のPDFビューワshelfを作成した
  • 自家製ローグライクRPGの機能追加した
    • 吉里吉里Zライクなシンタックスで記述できるメッセージシステムを追加した
    • インベントリシステム(使用、装備、取得、廃棄)を追加した

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

Footnotes:

1

マネージドサービスは使用不可だったため使用なし。