履歴書と職務経歴書のメンテナンスの自動化

# はじめに

本記事は、転職活動して気づいた「これをやっていれば.../やってよかった」アドベントカレンダー 25日目の記事です。

私は現在までに転職を4回しています。
またエンジニアの採用にも少し携わったこともあり、面接官として面接を担当した経験もあります。
転職する側と採用する側の双方の視点で述べていきたいと思います。
また今回はエンジニアの転職ノウハウや思いといったことではなく、転職活動において何かと面倒くさくておろそかになりがちことに対して技術的な解決を試みていきたいと思います。
(これまでの転職ではできていなかったのですが、次回の転職ではしっかり活用していきたいなと考えていることを述べていきます)

# 転職について

個人的にはどの会社に転職をするかということは結局はタイミングと考えています。
たまたま転職活動をしようと考えたときに、そのタイミングで求人があった会社にのみ応募して選考を受けることができます。たとえ求人を出していてもエンジニアを採用したい具合もその会社の状況、タイミングによって変化しますし、同時に選考の難易度も変化します。
どのようなタイミングであれいい転職をしたいと考えているのなら定期的に情報のアップデートをしていくことをお勧めします。情報のアップデートとは技術的なアウトプット(Githubでの開発状況のアピールやQiitaやZennに記事を投稿することなど)を定期的に行いつつ、転職ドラフトやLinkedInやWantedlyなどにレジュメを最新のものとして更新することです。またそれと同時に企業の選考を受ける場合には必ず履歴書と職務経歴書が求められるので、これらのアップデートも必要です。
こうすることにより転職の準備が常にできており、転職でのチャンスをつかめやすくすることができます。

# 履歴書、職務経歴書の更新の自動化

上記で履歴書を最新の状態に保つことをお勧めしましたが、とはいえ最新の状態にメンテナンスすることはしていくことは面倒くさいです
いざ転職をしようと思ったとしても面倒くさくて履歴書の作成が進まないのが実情です
そこでなるべく履歴書、職務経歴書の管理、更新の手間がかからず、準備万端の状態にするために以下の内容の実践を試みています

1. 履歴書、職務経歴書および各種転職サイトに登録するレジュメの内容をすべて一元管理できるようにGitで管理する
2. Git管理されているのでGithubにリポジトリを作成して過去の転職のものや素材も含めて保管、管理する
3. ベースはymlやmdファイルとして作成し、スクリプトを実行したらPDF、Word、HTMLファイルなど変換して抽出する
4. Github Actionsと組み合わせて、自動的にPDFファイルなどに抽出する

## 履歴書の自動化

履歴書の作成にあたりYMLからPDFへと抽出する試みは以下の記事で取り組まれていました

[YAMLで履歴書を作る](https://qiita.com/kaityo256/items/e3884d0109223c324baf)

こちらの記事のようにこちらのGithubプロジェクトを参考にコマンド一つ実行することでサンプルの履歴書を作成することができます

* [yaml_cv](https://github.com/kaityo256/yaml_cv)
* [ikasam/yaml_cv](https://github.com/ikasam/yaml_cv?tab=readme-ov-file)

参考に自分好みにカスタマイズして使用していきます。
まずは実際に個人的に動かしているGithub Actionsのレシピを以下に記述します。(履歴書などの内容を更新して`master` にpushしたら履歴書のPDFファイルとして自動的に作成されます)

```yml
on:
  push:
    branches:
      - master

name: resume build
jobs:
  deploy:
    name: build
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [20.x]
    steps:
    - uses: actions/checkout@v4
    - name: install ca-certificates
      run: sudo apt install ca-certificates
    - name: setup ubuntu
      run: sudo apt --quiet update --yes
    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: '3.3'
        bundler-cache: true
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
    - name: yarn install
      working-directory: ./resume-builder/resume-scripts
      run: yarn install
    - name: update resume yaml latest
      working-directory: ./resume-builder/resume-scripts
      run: yarn run resume:update-timestamp
    - name: Install dependencies
      working-directory: ./resume-builder/resume-maker/yaml_cv-main
      run: bundle install
    - name: copy resource files
      run: cp -f ./resources/resumes/taku-style.txt ./resources/resumes/taku-resume-data.yaml ./resources/resumes/taku.jpg ./resume-builder/resume-maker/yaml_cv-main/
    - name: build resume
      working-directory: ./resume-builder/resume-maker/yaml_cv-main
      run: ruby make_cv.rb -s taku-style.txt -i taku-resume-data.yaml -o output.pdf
    - uses: actions/upload-artifact@v4
      with:
        name: resume
        path: resume-builder/resume-maker/yaml_cv-main/output.pdf
```

# 履歴書、職務経歴書の選考における役割について

履歴書、職務経歴書を上記のような省労力化した場合選考に不利になるのではないかと不安に思う方もいるかもしれません
そこでここでは採用する側の目線で述べていきたいと思います
結論として履歴書、職務経歴書は採用する側が目を通しても1分です。そのため要点さえ伝えることができれば自動化しようが関係ないです。
面接においても履歴書、職務経歴書は話をするためのネタとしての事前資料でありそれ以上でもそれ以下でもありません。