母校で講演する機会があったのですが、自分の21年間のキャリアを話すことになり、ちょっと工夫してみたので、ご紹介します。
学生の時に勉強したことが、その後、どのように役立ったのかを説明するために、まずは、自分が21年間、何をやってきたのか、短時間で分かりやすく説明する必要がありました。
1番、短く書けるのは、職歴ですね。
1994年:龍谷大学理工学部数理情報学科卒
1994年:(株)エス・エヌ・ケイ 研究開発部
1996年:(株)フィルインカフェ 開発部
1998年:ハイパーコンテンツ(株) 開発部マネージャ
2006年:早稲田大学GEC非常勤講師(兼務)
2010年:国立情報学研究所 GRACEセンタ/先端ICTセンタ 特任技術専門員
2015年:(株)アトミテック 研究開発室 室長
肩書きだけ見ても、何をやってきたか、全く伝わってきませんね。職歴は、何をやってきたかを表すには、十分ではないようです。
次に、業績リスト。学術系の仕事をしている人なら、論文や委員の業績を、整理して持っていると思います。ゲーム業界でも、転職が多いので、整理したものを持っている人は多いですね。私の場合は、前の職場で開発された「researchmap」に、これまでの活動をまとめています。
実際には、実務でのプロジェクトなど、ここでの公表に適さない業績も結構あるのですが、もし、それもリストアップされているとしたら、表現形式として、一覧性や網羅性は申し分ないと思えます。こういった形式でまとめることが広く行われている理由が分かります。
しかし、これでもまだ、自分が21年間、何をやってきたのか説明するには、十分ではないと考えました。と、ゆーのも、個々の仕事は、それぞれが独立して成されたものではなく、その仕事をすることになった経緯が以前の別の仕事にあったり、仕事同士に関連があるのが普通だからです。論文の参照関係と同じような関係性の構造が、1人の人間のキャリアの上にもあって、それを表現しないと、説明は難しいと考えました。
一覧性、網羅性を犠牲にすることなく、関係性を付与した、分かりやすい表現として、図示することを指向するのは一般的だと思いますが、今回は、仕事同士の関係性が、時系列の制約がある係り受け構造なので、仕事をノードとし、係り受けを矢印で表現することにしました。これは、系統樹と同じですので、私はこれを「業績系統樹」と呼ぶことにしました。(アイデアは極ありふれたものなので、ちゃんとした名前が既にあるかも知れませんが……)
グラフ構造を描く時の道具と言えば、おなじみのGraphvizですね。私も大好きです。網羅的な業績リストが既にある場合、dot言語で、
- 業績をノードとして書き出す
- 時系列順に並ぶよう、rankで同じ年の業績ノードをグループ化する
- どの業績がどの業績に繋がっているか関係性を付ける
という3段階の作業をするだけで「業績系統樹」を得ることができます。1と2は、業績リストをparseして自動的に得ることも可能なので、人間は3を頑張ればよいことになります。(3を書く手法を整理できたら、もっと使いやすくなる可能性がある)
researchmapの業績に少し追加・削除した84ノードに、127の関係を付与して生成した、私の「業績系統樹」が、上記の通りです。(色が付けてあるのは、大学生時代に源流がある流れを赤で示し、勉強したことが仕事に繋がっていることを明示するためです)
図を眺めてみると、多くの仕事に繋がった、私の人生でキーになった出来事を再確認することもできますし、自分のスキルセットや活動領域の変遷を読み取ることもできます。終端ノードになってしまっている活動は、後に続く仕事をしていないことを示しているので、本当にその仕事を終わらせてしまってよいのか、考え直すキッカケをくれます。
勉強会での登壇、ゲームジャムで作った作品、バズったBlog記事などを拾い上げる粒度でノードを書き出すと、5年、10年、キャリアがあれば、それなりにボリュームのある「業績系統樹」を作ることは可能だと思います。自分を棚卸してみては如何でしょうか?気付いていなかった自分の可能性が見つかるかも知れませんよ?
このように、表現したい構造をグラフで描くことで、誰にも分かりやすく見せることができますが、KiQにおいても、ゲームの画面遷移と、遷移時に行われる通信を、状態遷移図として描き、それを仕様として扱うようにしています。図によって見た目が分かりやすくなるメリットは、さまざまな職種が協業するゲーム開発において、非常に大きくなりますが、更には、「業績系統樹」における終端ノードに特別な意味を解釈できたように、通信仕様が書き込まれた状態遷移図を使うと、あるべき通信順序を形式的に把握してセキュリティの観点から検証を行うなどが可能になります。