• Stars
    star
    369
  • Rank 115,686 (Top 3 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

YAMLによる履歴書作成スクリプト

YAMLによる履歴書作成スクリプト

MIT License

YAML形式で書かれたデータファイルと、YAMLもしくはテキストファイル形式で書かれたスタイルから履歴書PDFファイルを作成するRubyスクリプトです。

履歴書フォーマットについて

このスクリプトで作成される履歴書のフォーマットは、JIS Z 8303『帳票の設計基準』に掲載されていた「履歴書」の様式に則ったものでした。しかし経済産業省に履歴書の性別欄を無くすよう要望があり、経済産業省からその要望を受け取った一般財団法人日本規格協会は、もともと履歴書の様式は「例」であったとして、JIS Z 8303から履歴書の様式例を削除しました。もともとJIS Z 8303は帳票の寸法を定めるもので、個々の様式(フォーマット)を定めるものではなかったのですが、あくまで例として掲載されていた「履歴書」の様式が、「JIS規格のフォーマットである」と誤解されて広まったものだったようです。すなわち、JIS規格の履歴書というものはもともと存在せず、JISに記載されていた履歴書フォーマットも削除された今、このスクリプトの作るフォーマットに公的な意味はありません。ご利用の際は上記についてご承知おきください。

使い方

簡単な使用方法

ikasamさんが、Dockerを使う実行環境を作ってくださっています。Docker環境がある方はいろいろインストールしなくてもgit cloneしてdocker-compose upするだけでPDFが作成されるので便利です。

必要なライブラリ等

このリポジトリを利用して、ローカルで運用するためには、Rubyの実行環境と以下のライブラリ、フォントが必要になります。

  • Prawn
  • IAPexフォント (本リポジトリに同封)

PrawnはBundlerで管理しているため、以下のコマンドでインストールしてください。

bundle config path vendor/bundle
bundle config set --local without 'documentation'
bundle install

Prawnから日本語を出力するためにIPAexフォントを使っており、本リポジトリに以下のように同封しています。利用にあたってはIPAフォントライセンスv1.0への同意が必要です。

├── fonts
│   ├── IPA_Font_License_Agreement_v1.0.txt
│   ├── Readme_IPAexfont00401.txt
│   ├── ipaexg.ttf
│   └── ipaexm.ttf
└── make_cv.rb

実行方法

以下のように、-iに続けてデータファイル、-sに続けてスタイルファイル、-oに続けて出力ファイルを指定します。省略した場合のデフォルトはそれぞれdata.yamlstyle.txtoutput.pdfです。

$ ruby make_cv -h
Usage: make_cv [options]
    -i, --input [datafile]
    -s, --style [stylefile]
    -o, --output [output]

YAML形式のデータファイル(例:data.yaml)とスタイルファイル(例:style.txt)を用意し、スクリプトを以下のように実行します。

ruby make_cv.rb -i data.yaml -s style.txt -o output.pdf

添付のサンプルでは以下のような出力が得られます。

PDFファイル

output1.png output2.png

また、スタイルファイルを変えることで、同じデータファイルから異なる出力を得られます。以下はアカデミックポスト向けのスタイルファイルacademic.txtを使った場合です。

ruby make_cv.rb -i data.yaml -s academic.txt -o academic.pdf

PDFファイル

academic1.png academic2.jpg

データの用意の仕方

データはYAML形式で用意します。

以下はサンプルのdata.yamlの一部です。

# 名前等
date: 2018年 6月 5日現在
name_kana: りれきしょ かくたろう
name: 履歴書 書太郎
birth_day: 1543年1月31日 (満 73 歳)
gender: 
cell_phone: 090-1234-5678
email: [email protected]
photo: photo.jpg

# 住所
address_kana: とうきょうとちよだくちよだ
address: 東京都千代田区千代田1-1-1
address_zip: 100-0001
tel: 0120-000-XXX
fax: 0120-111-XXX
# 連絡先
address_kana2: ほっかいどう わっかないし そうやみさき
address2: 北海道稚内市宗谷岬
address_zip2: 098-6758
tel2: 0120-222-XXX
fax2: 0120-333-XXX

例えば、写真がphoto.jpgとして用意してある場合、

photo: photo.jpg

とすれば写真が貼られます。もし写真ファイルを指定しなかった場合、例えば

# photo: photo.jpg

としてコメントアウトすると、写真部分は

sample/photo.png

のような出力になります。

スタイルファイル

履歴書のスタイルファイルは、一行に一要素ずつ記述していきます。例えばacademic.txtは以下のような内容になっています。

# ヘッダー
string,5mm,247mm,履 歴 書,font_size=14,font_face=gothic
string,110mm,245mm,$date,font_size=9

# 住所・連絡先等
box,145mm,204mm,30mm,40mm,line_style=dashed
string,148mm,240mm,写真を貼る位置,font_size=9
string,147mm,233mm,1. 縦36〜40 mm,font_size=8
string,150mm,230mm,横24〜30 mm,font_size=8
string,147mm,227mm,2. 本人単身胸から上,font_size=8
string,147mm,224mm,3. 裏面にのりづけ,font_size=8
string,147mm,221mm,4. 裏面に氏名記入,font_size=8

一行目の

string,5mm,247mm,履 歴 書,font_size=14,font_face=gothic

は、(5mm,247mm)の位置に「履 歴 書」という文字を、フォントサイズ14で、フォントはゴシックで記述する命令です。このうち必須なのは座標と文字列ですが、その後にオプションとしてフォントサイズやフォントの指定ができます。

次の行の

string,110mm,245mm,$date,font_size=9

も同様に(110mm, 245mm)の位置に文字列を出力する命令ですが、出力する文字列が$dateとなっています。これは、データファイルのdata要素に置換されます。今、データファイルは

date: 2018年 6月 5日現在

とあるので、

string,110mm,245mm,$date,font_size=9

string,110mm,245mm,2018年 6月 5日現在,font_size=9

に展開されます。

テキスト形式の命令リストは以下の通りです。

命令 フォーマット 説明
string string, x, y, value[,font options] (x,y)に文字列valueを出力
line line, x, y, dx, dy[,line options] (x,y)から(x+dx, y+dy)に線を描画
box box,x,y,width,height[,line options] (x,y)に指定された幅と高さのボックスを描画
photo photo, x, y, width, height 指定位置、サイズに写真ファイル$photoを描画
new_page new_page 改ページ
textbox textbox,x,y,width,height,value[,font options] 指定位置、サイズにテキストボックスを描画
multi_lines multi_lines, x,y,dx,dy,num,sx,sy (x,y)から、(dx,dy)方向に、毎回(sx,sy)だけ座標をずらしながらnum回線を引きます
ymbox ymbox,title,height,num,$value $valueをhistoryデータとして、高さyに、年月表を作るマクロです。
miscbox miscbox,title,y,height,$value タイトル付きテキストボックスです。$valueの内容をテキストボックス内に展開します。

特別な命令

history

年、月、内容をともなったデータを描画する命令です。ymboxやmiscboxの内部で呼ばれます。

history, y, year_x, month_x, value_x, dy, value[,font options]
  • y: 描画を始めるy座標
  • year_x, month_x, value_x: それぞれ年、月、内容を書くx座標
  • dy: 改行時にどれだけ下に下げるか
  • value: 内容

history環境に使われるデータは以下のように指定します。

licences:
  -
    year: 19XX
    month: 11
    value: 普通自動車免許
  -
    year: 20XX
    month: 11
    value: 履歴書検定1級

yearmonthは省略可能です(空白になります)。

education_experience

学歴、職歴を書く命令です。命令フォーマットは以下の通りです。

education_experience, y, year_x, month_x, value_x, dy, caption_x, ijo_x, [,font options]
  • y: 描画を始めるy座標
  • year_x, month_x, value_x: それぞれ年、月、内容を書くx座標
  • dy: 改行時にどれだけ下に下げるか
  • caption_x: 「学歴」や「職歴」の文字のx座標
  • ijo_x: 「以上」の文字のx座標

なお、学歴データは$educationが、職歴データは$experience$が仮定されます。

lines

複数の線を書く命令です。履歴書によくある右上が凹んだボックスを書くために用意してあります。命令フォーマットは以下の通りです。

lines, num, x,y, dx, dy, ..., [,line options]

最初に「何個の点データがあるか」をnumで指定します。その後、始点、次の点の相対座標・・・と続け、最後に線のオプションを指定します。なお、この命令だけのオプションとして「close」というものがあります。これを指定すると最後に線を閉じます。

ymbox

「年、月、事柄」を書くマクロです。例えば

ymbox,免許・資格,204mm,4,$licences

は、「免許・資格」というタイトルの4行分の年月ボックスを、高さ204mmのところに配置する、という意味です。最後がデータのYAMLファイルの対応するレコードです。例えば、

# 免許・資格
licences:
  - 
    year: 19XX
    month: 11
    value: 普通自動車免許
  - 
    year: 20XX
    month: 11
    value: 履歴書検定1級

というデータだったとすると、

sample/licenses.png

に展開されます。

ymbox,免許・資格,204mm,4,$licences,font_size=9

などのように、最後にフォントサイズを指定できます。

miscbox

タイトル付きのテキストボックスに展開されるマクロです。例えば、

miscbox,教育歴,120mm,50mm,$teaching,font_size=12

は、「教育歴」というタイトルの高さ(height)50mmのテキストボックスを、高さ(y座標)120mmのところに配置する、という意味です。最後のフォントサイズ指定は任意です。対応するYAMLレコードは$teachingです。

例えば

# 教育歴
teaching: |
  「履歴書学特論」平成15年から17年まで
  「PDF出力特論」平成18年から23年まで
  「スタイルファイル特別演習」平成20年から29年まで

というデータだったとすると、

sample/teaching.png

に展開されます。

スタイルファイル(YAML形式)

上記のテキスト形式で書かれたスタイルファイルは内部的にYAMLに変換されて処理されているため、スタイルファイルはYAML形式でも書くことができます。・・・が、実際やってみたら死ぬほど面倒だったので、通常はテキスト形式で書くことになろうかと思います。テキスト形式のスタイルファイルはtxt2yaml.rbでYAML形式に変換できます。

例えば

string,5mm,247mm,履 歴 書,font_size=14,font_face=gothic
string,110mm,245mm,$date,font_size=9

txt2yaml.rbに食わせると、

---
- type: string
  x: 5mm
  y: 247mm
  value: 履 歴 書
  font_size: '14'
  font_face: gothic
- type: string
  x: 110mm
  y: 245mm
  value: "$date"
  font_size: '9'

が出力されます。同様にYAMLで書かれたスタイルファイルはyaml2txt.rbでテキスト形式に変換できます。

参考

このスクリプトは、PruneMazuiさんのresume-makerに影響されて開発したものです。

履歴

  • 2023年6月29日 Ruby 3.1 以上に対応(Thanks fabon-f)、IPAフォントを同封するように修正
  • 2018年7月30日 ymboxマクロ及びmiscboxマクロを追加
  • 2018年6月6日 リリース

ライセンス

  • このスクリプトはMITライセンスに従います
  • 同封のIPAフォントはIPAフォントライセンスv1.0に従って再配布しています

More Repositories

1

sevendayshpc

一週間でなれる!スパコンプログラマ
HTML
693
star
2

github

GitHub演習
HTML
587
star
3

python_zero

ゼロから学ぶPython
HTML
297
star
4

python2cpp

Pythonを知っている人向けのC++入門
C++
139
star
5

lab_startup

研究室のPCのセットアップ資料
HTML
95
star
6

simulation_engineering

数値シミュレーションの基礎
C++
47
star
7

xbyak_aarch64_handson

Tutorials for ARM SVE on Docker
Dockerfile
41
star
8

md2019

分子動力学法の理論と実装(集中講義ノート)
HTML
29
star
9

classical_mechanics

解析力学の講義ノート
HTML
25
star
10

param

Single-header C++ library for parameter file
C++
16
star
11

pptxgrep

Find keywords in pptx files.
D
11
star
12

mdstep

分子動力学法ステップ・バイ・ステップ
C++
10
star
13

hooi_sample

Comparison between HOSVD and HOOI
Python
9
star
14

grep_pptx

Grep in Microsoft Powerpoint (pptx) files
Ruby
8
star
15

zenn-content

Zenn.devの記事置き場
Jupyter Notebook
8
star
16

cps

Command Processor Scheduler
C++
6
star
17

rbs

Random Bit String Generator
C++
6
star
18

nc_breakout

Breakout implemented with using ncurses
C++
6
star
19

notes

ノート置き場
TeX
5
star
20

highschool2019

塾内高校生のための夏休み研究体験(2019年)
Jupyter Notebook
5
star
21

lammps_collision

Sample file for LAMMPS
Python
5
star
22

thermostats

Ergodicity of a thermostated harmonic oscillator
C++
5
star
23

master_thesis

修士論文テンプレート
TeX
5
star
24

physmath

物理数学
HTML
4
star
25

painful_maze

Maze a maze with painfully long path.
Ruby
4
star
26

fdps_sample

FDPSのサンプル
C++
4
star
27

graduate_thesis

卒業論文のテンプレート
TeX
4
star
28

minlex

Show the minlex canonical order form of the given Sudoku grid.
C++
4
star
29

radical_cjk_convert

康煕部首→CJK漢字コンバータ
JavaScript
3
star
30

randomsampling

Random Sampling Methods
C++
3
star
31

paraview-sample

Sample files using ParaView
Python
3
star
32

mnist_dump

Get MNIST data and export them as png files
Python
3
star
33

wavsample

Sample file to make PCM file (WAV file)
C++
3
star
34

md2docx

Sample code to convert Markdown to Docx
Ruby
3
star
35

ov_model

Optimal Velocity Model Online Simulator
JavaScript
3
star
36

diffusion_sample

LAMMPSを使った拡散現象の計算サンプル
Python
3
star
37

stringtext

分子動力学法で一瞬文字が浮かび上がるアニメーションを作る
Ruby
2
star
38

rprof

SPARC64(TM) VIIIfx/IXfx Profile Analyzer
Ruby
2
star
39

json_sample

PythonからJSONを読み込むサンプル
Python
2
star
40

indirect_reciprocity

協調行動のシミュレーション
Python
2
star
41

simple_tfgan

simple_tfgan
Python
2
star
42

fftw_sample

A sample code for calculating autocorrelation function of Brownian motion using FFTW.
C++
2
star
43

osmokumoku

OS自作もくもく会
C
2
star
44

log

Log
HTML
2
star
45

mnist_check

MNIST Check by JavaScript
C++
2
star
46

lj_simd

SIMDization for Calculating Force of Lennard-Jones Potential
C++
2
star
47

sudoku

Sudoku Puzzle Maker and Solver
C++
2
star
48

yamagata2022

集中講義の講義ノート
C++
2
star
49

makelatexdiff

latexdiffをMakefileから使うサンプル
TeX
2
star
50

povray-sample

Sample files using POV-Ray
POV-Ray SDL
2
star
51

mpistream

MPI Wrapper of std::cout
C++
2
star
52

tp_scheduler

Trivial Parallelization Scheduler
C++
1
star
53

daimyo_svd

大名行列を特異値分解してみる
HTML
1
star
54

yahoo_news_rss

Yahoo NEWSのRSSを読み込むスクリプト
Python
1
star
55

issp_handson

物性研スパコンハンズオン
Python
1
star
56

aarch64env

Aarch64の開発環境
Dockerfile
1
star
57

haar2d

Example of Multiresolution Analysis using Haar Wavelet(2D)
Ruby
1
star
58

memo_map

unordered_map for memoization
C++
1
star
59

image_svd

Low-rank approximation of Image with Singular-Value-Decomposition
Python
1
star
60

tictactoe

Full search of TicTacToe and its value function
Ruby
1
star
61

stopwatch

Single-header C++ Stopwatch
C++
1
star
62

pandoc_highlight

Pandoc Syntax Highlighting Color Schemes Examples
Makefile
1
star
63

sudoku_report

ドキュメンタリー風、数独プロジェクトの記録
1
star
64

waribashi

Visualizing Waribasih Game
Python
1
star
65

clustering_maze

Making Maze with Union-find algorithm
Python
1
star
66

cpp2numpy

C++からNumPy用のデータを保存してPythonから読み込むサンプル
C++
1
star
67

mc

Sample files of Monte Carlo Simulation
C++
1
star
68

xy_sw_bench

古典モンテカルロ法の実行時間テスト
C++
1
star
69

lammps_position

A Sample File for LAMMPS
Python
1
star
70

force_simd

SIMDized codes for 3D-Lennard-Jones potential
C++
1
star
71

my_first_ml

はじめての機械学習(自分でデータセットを作る編)のサンプルコード
Python
1
star
72

blank_pdf

A blank pdf file licensed under CC0
Ruby
1
star
73

lammps_milkcrown

ミルククラウン作成用スクリプト
Python
1
star
74

intel_real_distribution

Weird optimization behavior of the Intel Comipler
C++
1
star
75

winbitmap

A single file C++ library to generate Microsoft Windows Bitmap files with minimal dependencies.
C++
1
star
76

yamlslim

YAMLとSlimで論文リストを作る
HTML
1
star
77

make_tutorial

GNU Makeのハンズオン用のリポジトリ
Python
1
star
78

qiita_sync

Qiitaの記事をGitHubローカル用にSyncする
Ruby
1
star
79

dotfiles

dotfiles
Vim Script
1
star
80

hito

人と人が支え合った時のストレス
C++
1
star
81

sve_intrinsic_samples

ARM SVE examples
Dockerfile
1
star
82

mdacp

MDACP - Molecular Dynamics code for Avogadro Challenge Project
C++
1
star
83

sdouble

Single-header C++ library for double with error propagation
C++
1
star
84

lie-trotter-sample

Sample Code of Lie–Trotter product formula
Jupyter Notebook
1
star
85

fashion_mnist_dump

Get Fashion-MNIST data and export them as png files.
Python
1
star