はじめに:転職活動、管理コスト高すぎ問題
エンジニアの皆さん、転職活動の管理はどうされていますか?
スプレッドシートやNotionで管理している方が多いと思いますが、こんな悩みはありませんか?
- 「求人票のURLをコピペして、企業名を入力して...」という事務作業が面倒
- 「あれ、この会社の志望動機、なんて言おうとしてたっけ?」と面接直前に焦る
- 「結局、あと何社受ければいいの?」とゴール(KGI)からの逆算ができていない
- 内定が複数出た時に、「年収 vs 働き方」で迷って決められない
私はこれが我慢なりませんでした。
「エンジニアなら、自分のキャリア選択という一大プロジェクトこそ、最高のERP(統合基幹業務システム)でハックすべきではないか?」
そう考え、Google Apps Script (GAS) × Google Spreadsheet で、「Career Cockpit Pro」 という自分専用の転職支援システムを開発しました。
少し"過剰スペック"気味に作り込んだので、その機能と技術構成を共有します。
作ったもの:Career Cockpit Pro
リポジトリはこちら
https://github.com/SN1223221-HR/career-cockpit-Simple-and-easy-to-type-
コンセプト
「スプレッドシートを最強の母艦にする」
Webアプリ化も検討しましたが、データの閲覧性や加工のしやすさはスプレッドシートが最強です。
そこで、「カスタムサイドバー」 を駆使して、入力や閲覧のUXを極限まで高める構成にしました。
"わがまま"を叶える4つのキラー機能
今回実装した、エンジニア視点の「欲しかった機能」たちです。
1. 戦略的KPIダッシュボード(逆算思考)
ただ「応募済み」をカウントするだけでは不安になります。
このツールでは、「目標内定数」と「期限」を設定すると、市場の一般的な歩留まり率から逆算して「必要な応募数」を自動算出します。
- KGI: 12月末までに内定1社
- KPI: 書類通過率30%、一次通過率30%...
- Result: 「あと15社の応募が必要です」とシステムに怒られる
これにより、感情ではなく「数字」で行動量を管理できます。
2. 面接支援コックピット(ライブ・アシスタント)
Zoom/Meetでの面接中、画面の横にこのサイドバーを開いておきます。
- カンペ機能: 企業ごとの志望動機や、自分の「転職軸」を常時表示。
- スピーキングタイマー: 志望動機を入力すると、「話すと約何分か」を自動計算(300文字/分で換算)。長話による事故を防ぎます。
- ライブ議事録: 面接中に「聞かれたこと」「答えたこと」をチャット形式でメモ。終了後に構造化データとして保存されます。
3. スマート日程調整
「来週の水曜から金曜の間で、30分空いてるところある?」
こう聞かれた時、カレンダーを目視確認して手打ちするのはナンセンスです。
サイドバーで「期間」と「所要時間」を指定すると、Googleカレンダーの空き枠を検索し、ビジネスメール形式で候補日を出力します。あとはコピペして返信するだけ。
4. オファー比較マトリクス(感情に流されない決断)
個人的に一番こだわったのがここです。
内定が出た後、「年収は高いけど出社義務あり」vs「年収はステイだけどフルリモート」のような比較で悩みたくありませんでした。
そこで、「給与」「働き方」「技術環境」「カルチャー」にそれぞれ重み付け(Weight)を設定し、各社の条件を入力することで 「総合スコア」 を算出する機能を実装しました。
これにより、自分の価値観に最も合う企業を定量的に選定できます。
技術スタックと設計
GASプロジェクトですが、保守性を高めるために以下の構成にしています。
- Backend: Google Apps Script (ES6+)
- Frontend: HTML5, Bootstrap 5 (Sidebar UI), Vanilla JS
- Database: Google Spreadsheet
-
Architecture: ファイルを責務ごとに分割
-
Service: ビジネスロジック(計算、カレンダー操作) -
Controller: フロントエンドとの通信 -
Repository(概念): シートへの読み書き分離
-
コードの工夫点:MVCライクな責務分離
GASはファイルが分かれていてもグローバルスコープになりますが、オブジェクトとして定義することで名前空間を汚さないようにしています。
// 5_CalendarService.gs の例
const CalendarService = {
getFreeSlots: function(startDate, endDate, duration) {
// カレンダー操作ロジック
}
};
コードの工夫点:オファー計算ロジック
重み付けスコアの計算部分は、設定シートから動的に係数を取得するようにしており、価値観の変化に強い設計にしました。
// 重み設定の取得
const wSalary = parseInt(settings['Weight_Salary'] || 3);
const wWork = parseInt(settings['Weight_WorkStyle'] || 3);
// ...
const totalScore = Math.round(salaryPoint + workPoint + techPoint + cultPoint);
使い方(導入方法)
誰でも使えるようにしています。
1.GitHubからコードをコピー (src/ 以下のファイル)。
2.Googleスプレッドシートの「Apps Script」に貼り付け。
3.メニューに出現する 「⚡ Career Menu」 > 「⚙️ 初回セットアップ」 を実行。
4..必要なシート(DB)が自動生成されます。
これだけで、あなたのスプレッドシートが 「転職ERP」 に変わります。
おわりに
転職活動は、エンジニアとしての「要件定義力」や「課題解決力」が試される場でもあります。
既存のツールで満足できないなら、自分で作ってしまうのも一つの手です。
もし「自分も過剰スペックな管理がしたい!」という方がいれば、ぜひリポジトリを覗いてみてください。
PRもお待ちしています!
