転職活動を始めたので、Open Job Letterを公開しました。

直近は何をしてたか、転職活動の目的、何ができそうかなどをまとめています。 ページの最下部にあるフォームから連絡できるので、興味がある方はよろしくお願いします。

Open Job Letterとは

Open Job Letterは、いわゆる求職記事のことで、転職活動の目的や自分自身を紹介する記事です。 この名前は自分が適当に決めたものなので、一般的な名前ではありません。 要約をしてないフリーフォーマットのカバーレター/レジュメみたいなイメージです。

2018年にOpen Job Letterを公開してたので、 今回は便宜上Open Job Letter v2としています。

Openとついてるのは、Publicに公開しているためです。 Publicにしているのは、いくつか理由があります。

  • オープンソース活動などもしているので、Publicの方が一貫性がある気がした
  • 公開を前提に書くことで、公平性を持って書きやすい
  • URLでアクセスできるので、使いやすくて便利

自分は所属とかは特に公開しないタイプなので、読むとわかりますが会社名とかは特に出さないで抽象化して書いています。 これはブログ書く時とかもそうですが、ある程度抽象化した方が読みやすいし、自分にとっては自然なのでそうしています。 面談とかでは、もっと具体的な話をするので、公開する文章としてはそういうスタイルをとっています。

Open Job Letterの作り方

今回のOpen Job Letter v2は、NotionTallyというフォームサービスを使って作成しています。 TallyはNotionのページに埋め込みやすいGoogle Form的なサービスです。ConditionなどのロジックやNotionに結果を送る機能があるので、Notionと相性が良いです。

次のページに、今回のOpen Job Letterのテンプレートを公開しています。

Open Job Letterは、次の3つで構成されています。

  1. Open Job Letter本体
  2. Tallyで作成したフィードバックフォーム
  3. Tallyの結果を入れるデータベース

使い方

  1. Notionテンプレートを複製
  2. Open Job Letterを書く
  3. Tallyのテンプレートを複製
  4. TallyのフォームをOpen Job LetterにEmbedする
  5. Tally → NotionのIntegrationを設定する

あとは、Open Job Letterのページだけを公開すれば完成です。

自分の場合は、SEO的なことは特に気にしてなかったので、<user>.notion.siteで公開しています。 ちゃんとしたい場合は、静的サイトとして公開できるサービスを使うと良いと思います。

notion.siteはSSRをちゃんとやってくれないので、<title>やOGPなどの情報がちゃんと出ません。 また、アーカイブ系のサービスやはてなブックマークなどは<meta>を参照する機能があるので、notion.siteだとこういうのは制御できません。

書き方

Open Job Letterのサンプルページに書くことを空欄で用意しているので、基本的にはそれを書いていくだけです。ただ、ちゃんとやるとかなり大変なので、目的に合わせて項目は調整してください。

“提供できる価値”という4つの項目からなるテーブルは、やりたい方向性を整理する場所としておいています。 これ自体は、自分用のメモでもあるので、別に公開する必要はないと思います。自分の場合は、素直に書くことを優先してそのまま公開しました。

  • ターゲット: 想定している企業
  • ターゲットの需要: 想定している企業が求めているニーズ(想像)
  • 私が提供できる価値: 企業へ提供できそうな価値、強み
  • 私が期待すること(見返り): 企業に期待する見返り

この項目の元ネタはストラテジック・キャリアという本です。 PVP(Personal Value Proposition)をベースにして、自分が提供できそうな価値をターゲットごとに並べて書きます。 この本自体は、そこまで分かりやすくはないので、次のIndeedの記事の方がわかりやすいかもしれません。

スキルマップは、MermaidのQuadrant Chartを使って、Notionのテーブルから半自動で生成できるようにしています。

  1. スキルマップテーブルにデータを入れていく
  2. スキルマップMermaidテーブルの”Mermaid構文”にquadrantChart内容ができるのでコピー
  3. mermaidブロックに貼り付ける

そうすると、できない ↔ できる 、嫌い ↔ 好きの4象限のスキルマップが自動で生成されます。

スキルマップ

これを自動生成しつつ、点ができるだけ重ならないようにするために、かなり無理したformulaを書いています。 Notionのformulaにはループがないので、10段階にするために10回書いています。 点が重なった場合は手動で調整してください。

"%%{init: {\"quadrantChart\": {\"quadrantPadding\": 40, \"chartWidth\": 800, \"chartHeight\": 800 }, \"themeVariables\": {\"quadrant1Fill\": \"#E18841\", \"quadrant1TextFill\": \"#ffffff\", \"quadrant3Fill\": \"#4169e1\", \"quadrant3TextFill\": \"#ffffff\"} }}%%"+" \n" +
"quadrantChart" + "\n" +
"  title スキルマトリクス" + "\n" +
"  x-axis \"嫌い\" --> \"好き\"" + "\n" +
"  y-axis \"できない\" --> \"できる\"" + "\n" +
"  quadrant-1 \"Ⅰ:好きかつ得意\"" + "\n" +
"  quadrant-2 \"Ⅲ:好きではないが得意\"" + "\n" +
"  quadrant-3 \"Ⅳ:好きでも得意でもない\"" + "\n" +
"  quadrant-4 \"Ⅱ:好きだができない\"" + "\n" + 
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") ==10), "\"" + current.prop("名前") +"\"" + ":[" + max((current.prop("好き(10段階)") - (index /1)) / 10, 0) + "," + max((current.prop("できる(10段階)") - (index /1)) / 10, 0) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 9), "\"" + current.prop("名前") +"\"" + ":[" + min((current.prop("好き(10段階)") + (index /2)) / 10, 1) + "," + min((current.prop("できる(10段階)") + (index /2)) / 10, 1) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 8), "\"" + current.prop("名前") +"\"" + ":[" + max((current.prop("好き(10段階)") - (index /3)) / 10, 0) + "," + max((current.prop("できる(10段階)") - (index /3)) / 10, 0) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 7), "\"" + current.prop("名前") +"\"" + ":[" + min((current.prop("好き(10段階)") + (index /4)) / 10, 1) + "," + min((current.prop("できる(10段階)") + (index /4)) / 10, 1) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 6), "\"" + current.prop("名前") +"\"" + ":[" + max((current.prop("好き(10段階)") - (index /5)) / 10, 0) + "," + max((current.prop("できる(10段階)") - (index /5)) / 10, 0) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 5), "\"" + current.prop("名前") +"\"" + ":[" + min((current.prop("好き(10段階)") + (index /6)) / 10, 1) + "," + min((current.prop("できる(10段階)") + (index /6)) / 10, 1) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 4), "\"" + current.prop("名前") +"\"" + ":[" + max((current.prop("好き(10段階)") - (index /7)) / 10, 0) + "," + max((current.prop("できる(10段階)") - (index /7)) / 10, 0) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 3), "\"" + current.prop("名前") +"\"" + ":[" + min((current.prop("好き(10段階)") + (index /8)) / 10, 1) + "," + min((current.prop("できる(10段階)") + (index /8)) / 10, 1) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 2), "\"" + current.prop("名前") +"\"" + ":[" + max((current.prop("好き(10段階)") - (index /9)) / 10, 0) + "," + max((current.prop("できる(10段階)") - (index /9)) / 10, 0) +"]"), "\n") + "\n" +
join(map(filter(prop("スキルマップ"), current.prop("できる(10段階)") == 1), "\"" + current.prop("名前") +"\"" + ":[" + min((current.prop("好き(10段階)") + (index /10)) / 10, 1) + "," + min((current.prop("できる(10段階)") + (index /10)) / 10, 1) +"]"), "\n")

運用の仕方

フォームで送信された内容は、Notionのデータベースに保存されるので、そこから確認できます。 Tally自体には返信する機能がないのがいまいちですが、Notionのデータベースにメールアドレスが入っているので、そこから連絡することができます。 (ここをもっといい感じにできるウェブサービスがあると良さそう)

また、Notionだとゲストとしてアクセス権限を絞ったりできるので、一部のページだけを特定の人に公開とかもできます。

Notionとのシームレスさを考えて、Tallyを使いましたが、Google Docs + Google Formとかでも似たようなことはできると思います。 最初は、それ用のウェブサービスを作ろうとしましたが、Notionで書いているうちにNotionのままでいいかなと思って、こうなっています。

まとめ

転職活動を始めたので、Open Job Letter v2を公開しました。 興味がある方は、ぜひご連絡ください。

返事がメールになってるのでちょっと気軽な質問的なことはしにくいですが、なんかもっとこうした方が良いとかあれば教えてください。

Open Job Letterのテンプレートページも公開しています。

特にNotionにこだわりがなければ、別のツール/ブログ/GitHubでもなんでも良いと思います。

公開しなくても良いので、自分用に書いてみると後で振り返る時などに便利だと思うので、書いてみると面白いかもしれません。 公開するときは、素直に書くというのが書く上では大事なポイントだと思いました。

参考