前書き:割と面倒な履歴書作成

妻との会話中、「履歴書の書き方」について話題に上がりました。妻はロシア人なので、日本のルールには詳しくありません。妻に説明するとき、私は過去の履歴書を思い出し、それぞれの作成方法に不満があったことを思い出しました。

  • バイト応募時(2009年):手書きで面倒
  • 就職活動時(2013年):手書きで面倒。かつ各社独自フォーマット
  • 転職1回目(2021年):Libre Office を使うが、慣れていないのでキレイに作れない
  • 転職2回目(2024年):yagish(ヤギッシュ) を使うが、個人情報を Web に置きたくない

全ての方法で、何らかの課題がありました。

手書きは、使い回せないので論外です。Libre Office は、Microsoft Office と使い勝手が違い、履歴書が上手く作れませんでした。また、私は Linux をメイン PC として使い始めて10年ぐらい経つので、今更履歴書のためだけに Microsoft Office を利用する選択肢はありません。yagish(ヤギッシュ) は、突然サービス終了する可能性や個人情報漏洩リスクがあります。他にも履歴書作成サイトがありますが、根本的な課題は同じです。

そこで、履歴書・職務経歴書・CV(Curriculum Vitae)を yaml から生成する nao1215/career を作成しました。妻のユースケースでは、履歴書で十分でしたが、自分のユースケース用に職務経歴書を追加し、OSS 公開する前提で海外向けに CV を追加しました。


サンプル画像

以下、生成した履歴書・職務経歴書・CV です。全て PDF として生成されます。

CV サンプル

CV

履歴書サンプル

履歴書 履歴書

職務経歴書サンプル

下図には書かれていませんが、資格、出版・登壇、自己PR、リンクを書くこともできます。

職務経歴書

インプットデータである yaml ファイル

# One YAML for every document (all data is fictional).
#
#   career generate examples/resume.yaml --template cv               --output cv.pdf
#   career generate examples/resume.yaml --template japanese-resume  --output rirekisho.pdf
#   career generate examples/resume.yaml --template work-history     --output shokureki.pdf
#
# Text fields can be written either as a plain scalar (used for every language)
# or as a { ja:, en: } map. The cv template reads "en", the Japanese templates
# read "ja", and either falls back to whatever is present.
#
# Long fields may be wrapped over several lines for readability; the renderer
# re-flows them. A blank line is a paragraph break, and a line starting with a
# bullet (・ - * •) is kept as its own list item.

# 作成日(履歴書・職務経歴書の右上)。CVでは使われません。
date: 2026年6月13日現在

# 任意。職務経歴書・CVのアクセント色(履歴書は常に黒)。
theme:
  accent: "#1f4e79"

profile:
  name:
    ja: 見本 太郎
    en: Taro Mihon
  name_kana: みほん たろう       # 履歴書のふりがな(日本語のみ)
  birth_date: 1990年5月10日      # 履歴書のみ
  age: 満 36 歳
  gender: 
  email: taro.mihon@example.com
  phone: "+81 90-XXXX-XXXX"
  photo: ""                      # 証明写真(任意、このYAMLからの相対パス)。例: ../image/sample_japanese_man.jpg
  address:
    zip: 000-0000
    kana: とうきょうとみほんく
    text:
      ja: 東京都見本区見本町1-2-3 見本ハイツ101
      en: Tokyo, Japan

# 学歴(履歴書・CV)。
education:
  - year: 2009
    month: 4
    value:
      ja: 見本工科大学 工学部 情報工学科 入学
      en: "Entered Mihon Institute of Technology, B.Eng. in Information Engineering"
  - year: 2013
    month: 3
    value:
      ja: 見本工科大学 工学部 情報工学科 卒業
      en: "Graduated, Mihon Institute of Technology"

# 職歴(履歴書の学歴・職歴欄)。
work:
  - { year: 2013, month: 4, value: 見本ゲームス株式会社 入社 }
  - { year: 2016, month: 3, value: 見本ゲームス株式会社 退職 }
  - { year: 2016, month: 4, value: 株式会社見本アプリ 入社 }
  - { year: 2020, month: 3, value: 株式会社見本アプリ 退職 }
  - { year: 2020, month: 4, value: 見本モバイル株式会社 入社 }
  - { value: 現在に至る }

# 免許・資格(履歴書)。
licenses:
  - { year: 2013, month: 6,  value: 普通自動車第一種運転免許 取得 }
  - { year: 2015, month: 10, value: 応用情報技術者試験 取得 }
  - { year: 2018, month: 7,  value: TOEIC 公開テスト スコア880点 取得 }
  - { year: 2021, month: 4,  value: Google Associate Android Developer 認定 }
  - { year: 2022, month: 8,  value: AWS Certified Solutions Architect – Associate 取得 }

# 履歴書だけで使う項目(日本語)。複数行や箇条書きも書けます。
rireki:
  commuting_time: 60分
  dependents: 2人
  spouse: 
  supporting_spouse: 
  hobby: |
    個人アプリ開発と登山が趣味です。週末はモバイル向けの OSS ライブラリへ
    コントリビュートしており、技術カンファレンスでの登壇経験もあります。

    特技は、複雑な要件を素早くプロトタイプに落とし込み、チームで検証できる形に
    することです。
  motivation: |
    貴社のモバイルプロダクトがユーザー体験を第一に設計されている点に強く共感し、
    志望しました。

    これまで培ったアプリのパフォーマンス改善と、開発組織づくりの経験を活かして、
    プロダクトの継続的な成長に貢献したいと考えています。
  request: |
    下記を希望いたします。
    ・勤務形態:フルリモート(月1回程度の出社は可能)
    ・職種:モバイルアプリエンジニア/テックリード
    ・その他の条件:貴社の規定に従います

# 職務経歴書・CVで使う項目。テキストは ja / en を併記できます。
career:
  summary:
    ja: |
      iOS・Android を中心に約12年の経験を持つモバイルアプリケーションエンジニアです。
      ゲームクライアント開発からキャリアを始め、受託・自社開発を経て、現在は月間数百万
      ユーザー規模のアプリでモバイル開発をテックリードとして牽引しています。

      パフォーマンス改善とアーキテクチャ設計、CI/CD の整備、チームの採用・育成までを
      一貫して担えることが強みです。
    en: |
      Mobile application engineer with about 12 years of experience across iOS and
      Android. Starting in game client development and moving through contract and
      in-house work, I now lead mobile development as a tech lead on an app with
      several million monthly users.

      My strengths span performance tuning, architecture, CI/CD, and growing the
      team through hiring and mentoring.

  skills:
    - { ja: Swift / Kotlin による iOS・Android ネイティブ開発, en: Native iOS and Android development in Swift and Kotlin }
    - { ja: Flutter によるクロスプラットフォーム開発, en: Cross-platform development with Flutter }
    - { ja: モバイルアプリのパフォーマンス改善(起動・描画・メモリ・アプリサイズ), en: Mobile performance tuning (startup, rendering, memory, app size) }
    - { ja: Fastlane / Bitrise を用いたモバイル CI/CD とテスト自動化, en: Mobile CI/CD and test automation with Fastlane and Bitrise }
    - { ja: アプリのグロース(A/Bテスト、計測基盤、ストア最適化), en: App growth (A/B testing, analytics, store optimization) }
    - { ja: モバイルチームのテックリード・採用・育成, en: Mobile team tech lead, hiring and mentoring }

  histories:
    - company: { ja: 見本モバイル株式会社, en: Mihon Mobile Inc. }
      period: { ja: 2020年4月 - 現在, en: Apr 2020 - Present }
      role: { ja: モバイルテックリード, en: Mobile Tech Lead }
      summary:
        ja: 月間数百万ユーザー規模のアプリのモバイル開発を、テックリードとして牽引。
        en: Lead mobile development of an app with several million monthly users as tech lead.
      projects:
        - title: { ja: スーパーアプリの開発・グロース, en: Super app development and growth }
          period: { ja: 2020年4月 - 現在, en: Apr 2020 - Present }
          role: { ja: テックリード(モバイル8名), en: Tech lead (mobile team of 8) }
          description:
            ja: |
              Flutter とネイティブを組み合わせたアプリの設計・実装をリード。クラッシュ
              フリー率を 99.9% まで改善し、起動時間を 40% 短縮。A/B テスト基盤を整え、
              主要 KPI を継続的に改善した。
            en: |
              Led the design and implementation of an app combining Flutter and
              native code. Improved the crash-free rate to 99.9% and cut startup
              time by 40%, and built an A/B testing foundation that steadily
              improved key KPIs.
          tech: [Flutter, Swift, Kotlin, Firebase]
        - title: { ja: 決済機能のネイティブ統合, en: Native payment integration }
          period: { ja: 2021年7月 - 2022年3月, en: Jul 2021 - Mar 2022 }
          role: { ja: 設計・実装リード, en: Design and implementation lead }
          description:
            ja: |
              iOS・Android 双方へ決済 SDK をネイティブ統合。セキュリティ要件を整理し、
              リリース後の決済エラー率を大幅に低減した。
            en: |
              Integrated a payment SDK natively into both iOS and Android, organized
              the security requirements, and greatly reduced post-release payment
              errors.
          tech: [Swift, Kotlin, StoreKit]
        - title: { ja: モバイル CI/CD 基盤の刷新, en: Mobile CI/CD platform rebuild }
          period: { ja: 2022年4月 - 現在, en: Apr 2022 - Present }
          role: { ja: 基盤オーナー, en: Platform owner }
          description:
            ja: |
              Fastlane と Bitrise を用いてビルド・配信・テストを自動化。手動だった
              リリース作業を整理し、リリース頻度を月次から週次へ引き上げた。
            en: |
              Automated build, distribution and testing with Fastlane and Bitrise,
              streamlined a manual release process, and raised the release cadence
              from monthly to weekly.
          tech: [Fastlane, Bitrise, GitHub Actions]

    - company: { ja: 株式会社見本アプリ, en: Mihon App Co., Ltd. }
      period: { ja: 2016年4月 - 2020年3月, en: Apr 2016 - Mar 2020 }
      role: { ja: iOS / Android エンジニア, en: iOS / Android Engineer }
      summary:
        ja: 受託・自社の複数アプリを、設計から運用まで一貫して担当。
        en: Owned several contract and in-house apps from design through operation.
      projects:
        - title: { ja: フリマアプリの新規開発, en: Marketplace app from scratch }
          period: { ja: 2016年4月 - 2018年3月, en: Apr 2016 - Mar 2018 }
          role: { ja: iOS / Android(4名), en: iOS / Android (team of 4) }
          description:
            ja: |
              フリマアプリを Swift / Kotlin でフルスクラッチ開発。公開後にダウンロード
              数 100 万を突破し、安定運用に貢献した。
            en: |
              Built a marketplace app from scratch in Swift and Kotlin; it passed one
              million downloads after launch and ran reliably in production.
          tech: [Swift, Kotlin, Realm]
        - title: { ja: 動画配信アプリのパフォーマンス改善, en: Video streaming app performance }
          period: { ja: 2018年4月 - 2019年6月, en: Apr 2018 - Jun 2019 }
          role: { ja: パフォーマンス改善担当, en: Performance lead }
          description:
            ja: |
              再生開始までの時間を 50% 短縮し、メモリ使用量を削減。プロファイリングを
              通じてボトルネックを特定し、描画とキャッシュを最適化した。
            en: |
              Cut time-to-first-frame by 50% and reduced memory use, profiling to
              find bottlenecks and optimizing rendering and caching.
          tech: [Swift, AVFoundation, ExoPlayer]
        - title: { ja: 共通 UI コンポーネントライブラリの整備, en: Shared UI component library }
          period: { ja: 2019年7月 - 2020年3月, en: Jul 2019 - Mar 2020 }
          role: { ja: 設計・実装, en: Design and implementation }
          description:
            ja: |
              複数アプリで再利用できる UI コンポーネントライブラリを整備し、新規画面の
              実装速度を向上させた。
            en: |
              Built a reusable UI component library shared across apps, speeding up
              the implementation of new screens.
          tech: [Swift, Kotlin]

    - company: { ja: 見本ゲームス株式会社, en: Mihon Games Inc. }
      period: { ja: 2013年4月 - 2016年3月, en: Apr 2013 - Mar 2016 }
      role: { ja: ゲームクライアントエンジニア, en: Game Client Engineer }
      summary:
        ja: スマートフォン向けゲームのクライアント開発に従事。
        en: Client development for smartphone games.
      projects:
        - title: { ja: スマホ向け RPG のクライアント開発, en: Smartphone RPG client }
          period: { ja: 2013年4月 - 2015年3月, en: Apr 2013 - Mar 2015 }
          role: { ja: クライアント, en: Client }
          description:
            ja: |
              Unity / C# でスマホ向け RPG のクライアントを開発。描画処理を最適化し、
              低スペック端末でも安定して動作するよう改善した。
            en: |
              Developed a smartphone RPG client in Unity / C#, optimizing rendering so
              it ran smoothly even on low-end devices.
          tech: [Unity, "C#"]
        - title: { ja: リアルタイム対戦機能の実装, en: Real-time multiplayer }
          period: { ja: 2015年4月 - 2016年3月, en: Apr 2015 - Mar 2016 }
          role: { ja: クライアント, en: Client }
          description:
            ja: |
              リアルタイム対戦機能をクライアント側で実装。通信の遅延対策を行い、快適な
              対戦体験を実現した。
            en: |
              Implemented real-time multiplayer on the client, mitigating network
              latency to deliver a smooth match experience.
          tech: [Unity, "C#"]

  certifications:
    - { ja: AWS Certified Solutions Architect – Associate, en: AWS Certified Solutions Architect – Associate }
    - { ja: Google Associate Android Developer, en: Google Associate Android Developer }
    - { ja: 応用情報技術者試験, en: Applied Information Technology Engineer (Japan) }
    - { ja: TOEIC 公開テスト 880点, en: TOEIC 880 }

  publications:
    - { ja: モバイルカンファレンスでアプリのパフォーマンス改善について登壇, en: Spoke on mobile app performance at a mobile conference }
    - { ja: 技術ブログでモバイルアーキテクチャの記事を執筆, en: Authored blog posts on mobile architecture }

  links:
    - { ja: "GitHub: https://github.com/mihon-taro", en: "GitHub: https://github.com/mihon-taro" }
    - { ja: "技術ブログ: https://example.com", en: "Blog: https://example.com" }

  self_pr:
    ja: |
      ユーザー体験とパフォーマンスにこだわり、設計から運用までを一人称で完遂することを
      得意としています。

      テックリードとして、技術的な意思決定とメンバーの育成の双方に責任を持ち、チームの
      アウトプットを最大化することを重視しています。継続的な学習を信条としています。
    en: |
      I care deeply about user experience and performance, and I own work from
      design through to operation.

      As a tech lead I take responsibility for both technical decisions and growing
      the team, focused on maximizing the team's output, and I value continuous
      learning.

インストール方法 & 使い方

詳細は、README をご確認ください。

インストール方法:

go install github.com/nao1215/career@latest

yaml ファイルのテンプレート生成:

career init   # resume.yaml を生成

履歴書・職務経歴書・CV の生成:

career generate resume.yaml --template all  # PDF を生成

デザイン上で確認済みの部分および制約

履歴書は、JIS を参考にしたので一般的なフォーマットのはずです。その一方で、職務経歴書と CV は好みが分かれると考えています。

以下、意識的にテストした部分です。

  • 自動改ページ
  • 文字が枠やページをはみ出さないこと
  • 自由記入欄(趣味・志望動機・本人希望)は本文量に応じて枠が伸縮
  • 文字溢れ対策(文字サイズの段階縮小)
  • 言語同士の改行位置を考慮し、行頭禁則(。、)」』ー 小書き仮名など)と行末禁則((「『 など)を適用
  • フォントは埋め込み(IPA Font License v1.0 ライセンス)で、環境依存なし
  • 証明写真は、JIS 規格の枠(30×40mm=3:4) を厳守。枠内自動フィット機能があるが、逸脱する場合はエラー
  • 職務経歴書と CV は、アクセントカラー変更可能。履歴書は黒オンリー

残念ながら、「職務経歴書は表を多用したいんだよな」「画像を挿入したくて」という要求には答えられません。今後、私にとって必要になったら対応するかもしれません。もしくは、Pull Request をお待ちしております。


最後に

試しに私の履歴書と職務経歴書を作成しましたが、概ね満足できるクオリティでした(フォントが若干怪しさを感じましたが)。そして、妻にとっては yaml が難しかったようです。