読者です 読者をやめる 読者になる 読者になる

オールアバウトTech Blog

株式会社オールアバウトのエンジニアブログです。

新卒入社してから投稿し続けたQiita:Teamの日報を可視化してみた

f:id:allabout-techblog:20170315142553p:plain

Switchで筋肉痛になりました。@amymdです。

2016年度入社の新卒エンジニアが記事を投稿する連載企画!

ということで、今回は2本目の記事を、2016年度入社の開発エンジニアである@amymdが投稿いたします。 よろしくお願いいたします!

はじめに

突然ですが、みなさんは日報を書いていますか?
自分は2016年4月にオールアバウトに入社したのですが、配属された5月から12月28日まで、社内のQiita:Teamに日報を投稿し続けていました。

f:id:allabout-techblog:20170321163453p:plain:w500

せっかく書き続けたこの日報を、何かの役に立てたい……と思い、今回はこの約8ヶ月間書き続けた日報のデータをテキストマイニング等で分析してみて、この一年間の振り返りをしてみたいと思います。

日報とは

日報とは、一日の作業の終わりに、今日なにやったか、どんな問題が起きたのかを報告することです。
具体的に書く内容は、会社や業務内容によって異なるとは思いますが、自分は下記のテンプレートに従って記載していました。

# 本日の作業内容
# 発生した問題
# 本日の学び
# 明日の作業内容
# 所感

基本的にはその日の作業で困ったことや、学んだことを書いていますが、最後の「所感」では「こんな勉強会に参加してきました!」や「おいしいラーメン屋さん見つけました!」のようなプライベートな事も記載していました。

また、最近では分報を取り入れている会社も増えてきているらしく、自分も社内Slackに#times_{user}チャンネルを作って業務の悩みなどをつぶやいています。こちらは日報とは違って、リアルタイムに悩んでることを投稿すると解決策が他の人から飛んできたりと、リアルタイム性と気軽に投稿できるのがメリットとなっています。

c16e.com

日報から特徴語をテキストマイニングで取得してみた

さて、本題です。今回は、2016年5月~12月に投稿された合計146記事の日報をQiitaのAPIで取得し、自然言語処理で特徴語を抽出してみました。
特徴語の抽出には、形態素解析エンジンである MeCab を利用しました。
例えば、「今日は良い天気ですね」をMeCab形態素に分割してみると、その単語の品詞や読み方などの結果が得られます。

f:id:allabout-techblog:20170313144134p:plain

その結果から名詞のみを抽出し、その中からより特徴的な単語を抽出しました*1。 単語の特徴量の計算には、要約や文書推薦などで幅広く利用されているTF-IDFを採用しました。 詳しい計算式はここでは説明しませんが、単語の出現回数を考慮した重要度となります。
このような方法で、ある日の日報から特徴語を抽出した例が、下記となります。

f:id:allabout-techblog:20170313150010p:plain:w200

Vim」や「Laravel*2」などの技術系の単語が取得できていますね!
その他にも「ランキング」や「バッチ」が取得されていますが、この単語だけを見てもその日に自分が何をやったのかが伝わってきますね…。ということで、なんとなくその記事の特徴を表す単語が取得できていることがわかると思います。

ワードクラウドで可視化してみた

せっかく取得した特徴語を表のままで見るのは味気ないので、可視化してみました!
まずはどんな単語が多く使われているのかを把握するために、雲のように単語を並べて可視化する「ワードクラウド」で可視化してみました。

f:id:allabout-techblog:20170313150700p:plain

ぱっと見ると、圧倒的に「Laravel」が大きいですね。主に使用しているWebフレームワークなのでこれは納得の結果です。 「ブランチ」「コミット」「ファイル」、このあたりは、Gitでコード管理していて詰まったところなどをTipsとして日報に投稿していたからだと思います。

携わったスキルとその変化

次に、自分がこれまで携わったスキルとその変化を見るために、PHPやLaravelなどの特徴語の回数を月ごとに時系列で可視化してみました。

f:id:allabout-techblog:20170314095525p:plain

Laravelの回数が多いのはわかっていたのですが、時系列で見ると9月が非常に低いという結果になっていました。
どうしてこの月だけ低いのか気になったため、過去の日報を漁ってみました。どうやら9月はシステムの仕様決めに関する学びや、Werckerを用いたリリース手順への移行*3などがあったため、LaravelやPHPなどの学びが少なかったようです。

時系列で可視化することにより、その時期に何があったのかという振り返りにも役立てることができそうです。 他のエンジニアの人と見比べてみるのもおもしろそうですね。

まとめ

毎日投稿していた日報や分報などのデータから機械的に抽出して可視化することで、自分がこの一年でどんなことを学んだのか、どんなスキルが身についたのか、データで振り返ることができました。 例えば、今年はPHPやLaravelをメインに取り組んできたのはデータからもわかるのですが、それに対して自分はまだJavaScriptの知識や経験が不足していることがわかりました。

また先ほども述べましたが、この可視化結果を他の人と見比べてみるのもおもしろそうです。
他のエンジニアの人と比較することで、いま自分には何が足りないのかとか、今後どういうスキルが求められるのか、新たな発見が得られそうですね。

日報を書いてるけどそのままになっている…という方がもしいらっしゃったら、ぜひ自然言語処理などの技術を活用して、データの可視化を試してみてください。きっと何か面白い発見が得られるかもしれません。

*1:精度向上のためストップワードをいくつか追加しています

*2:弊社で主に使用されているPHPのWebフレームワーク

*3:http://allabout-tech.hatenablog.com/entry/2016/08/04/092700