スマートキャンプエンジニアの瀧川です。
本記事はスマートキャンプ Advent Calendar 2019 - Qiitaの25日目の記事です。
このスマートキャンプ エンジニアブログを開設して今日でちょうど1年が経ちました 🎉
1年前のクリスマスに私がオーナーとしてはじめたことですが、長続きしないんじゃないか...採用につながるなんてあるんだろうか...そんな不安を抱きながらのスタートでした。
それが結果として1年間毎週記事公開、Techブログスコアランキング4位*1、イベント登壇オファー*2などなど大きな成果を得ることができました。
10人そこそこのメンバーで、これだけの成果を挙げられたはとても貴重な体験で、様々な知見も得られたので、節目となる本記事で出せるものは全て出していこうと思います!
なぜエンジニアブログをはじめたか
採用のためのブランディング
1つ目は採用を目的としたブランディングです。
弊社はB2B企業であり、エンジニアの方々が弊社のプロダクト触る機会はとても少なく、どれくらいな規模のどんなプロダクトを作っている企業なのかといった認知に課題がありました。
具体的には、私たち働くエンジニアとしてはビジネス的にもおもしろく、技術的にもこだわりがあり、やりがいもあるのに、面接などの限られた時間での説明では伝えきれないなと肌で感じていました。
定常的にアウトプットをすることで、説明をする前にある程度の弊社エンジニアに関する情報を持っている状態にしたり、または説明に使う資料として活用できるんじゃないかという発想がきっかけでした。
エンジニア組織や個人の成長
2つ目はエンジニア組織や個人の成長です。
エンジニアとして技術スキルを向上させたり、新しい技術領域に踏み込んだりすることはとても重要かなと思っているのですが、定常的な業務の中で実現していくのはなかなか難しいと感じていました。
(技術導入の調査工数や共有コストが、プロダクトのフェーズに合わないことはありますよね...)
そういったときにブログを書く時間として調査をして公開して共有、良さそうであればプロダクトにも反映といったサイクルが回せればいいなと思いました。
また、誰がどんな技術に興味があるのか、なにをやりたいのかをそこまで知らないなと感じており、メンバーのことを知る機会にもなるかなという思いもありました。
他にも、エンジニアとしてやったことを、正しくわかりやすく文章にまとめる(ドキュメント化)技術は重要であり、それは実際書いて人に見てもらう経験が成長への近道だと思っていて、「ブログにも出せるから」というのがよい口実になってドキュメント文化が形成できればとも思っていました。
自分の成長
3つ目は個人的にエンジニアブログやってみたかったからです笑
2つ目に書いたとおり、アウトプットすることでエンジニアとして成長すると考えてはいたのですが、私個人がやったことを文章にまとめたり、アウトプットするのがとても苦手だったんですよね...
なので、採用のため、組織のためというプレッシャーとモチベーションを自分に与えることで、その壁を打ち壊そう!という思いがありました。
結果としてなにが得られたか
PV数
PVは基本的にGoogle Analyticsとの連携し取得したデータを見ていました。
以下が開設してから本日までの日別PV数になります。
現時点(2019/12/25)で累計114,257PVでした。
1月2月数百PVでしたが、4月に記事がバズったりするなかでノウハウが安定し、現在週一の記事公開で9000PVで安定したかなというところです。(月平均9527.58PV, 月最大32,156PV)
グラフを見ていただくと、PV数は記事公開日のスパイク(1〜2日でほぼ落ち着く)と定常的なアクセス(現在200PV程度)で構成されているようです。
はてブ数
総はてブ数は現時点(2019/12/25)で2,686でした。
記事数は66ですので、記事平均40.7となります。
はてブ数トップ3が以下となります。
平成から令和に変わるタイミングで出した企画記事が1位、2位3位はクライアントサイド(Vue.js)記事でした。
ブランディング
大きくブランディングとして成果がではじめたのは、以下の記事で取り上げていただいたあたりかなと思います。
あまり他社ブログなどをベンチマークしていなかったので、エンジニア全員4位という結果に驚きました。
数値として成果がでたということで、モチベーションも上がりましたし、こちらの記事をみて弊社を知ったという方も採用選考の中でいらっしゃいました。
また、イベントの登壇オファーを頂いたりと更にアウトプットの場につながり、当初想定した以上に反響のある取り組みになったなと感じています。
そもそもエンジニアブログを継続する自体が、エンジニアに裁量と熱量がある証明になると考えていたので、そこも達成することができました。
ドキュメント力
当初の目的の1つ、ドキュメント文化の形成もある程度進んだかなと思っています。
例えば、技術的なところだと、AWSのアカウント管理をTerraformでやっているエンジニアが記事に起こして誰でもPullRequest送れるようにしたり*3、Atomic Designでクライアント設計しているチームが記事を書いて他のチームが参考にしたり*4といったコミュニケーションをブログを通して起こすことができました。
また面接時の会社紹介などでも、スクラムに取り組んでいること*5やオンボーディング大事にしていること*6を引用しながら伝えたりもできるようになってきました。
文章を書く力や意識についても明らかに向上しており、ブログ開始直後はネタ出し、アウトライン作成、文章作成、校正すべてで手伝う必要があったりとコストがかかった覚えがありますが、なんとQiita AdventCalendarではなにもせずとも平日全て埋めることができ感動しました(圧倒的感謝!)
どうやって数値を伸ばしたのか
記事と流入元の関係を分析
流入元(掲載媒体)によってPV数やはてブ数は大きく変わってきます。
どんな記事がどこから流入しやすいかを分析するのは大事だと感じています。
以下が全体での流入元のサマリとなります。
(direct)は置いておくとして、ホットエントリー、Smartnews、Google検索、Twitter、Chrome(Android)のおすすめ、Google News、その他の順番になっています。
これだけ見るとホットエントリーとSmartnews、Google検索の流入が同程度と思われるかもしれませんが、掲載された記事数が異なります。
Smartnewsに大々的に掲載されたのは、以下の4記事でした。(それぞれ単体で3000~7000PV)
新卒Webエンジニアだった頃の自分に教えたいちょっとしたタスクからでも経験値を積んでいく考え方 - SMARTCAMP Engineer Blog
【ありがとう平成】年代別にIT技術まとめてみた - SMARTCAMP Engineer Blog
『エンジニアが自称PMになるまで』をテーマに登壇してきた内容【10分まとめ】 - SMARTCAMP Engineer Blog
無償になったPull Remindersを導入してみた! - SMARTCAMP Engineer Blog
なんとなくですが、時流に乗った記事(4月に新入社員ネタ、平成令和ネタ)、話題になってからすぐ試してみた記事(PullReminder記事)はクリックされやすいのかなとは思います。
その他だと、Chrome(Android)のおすすめ記事は割合としては少ないですが、以下に代表される技術を丁寧に解説した記事が載りやすいかなと感じています。
私はAWS EC2のt2インスタンスを誤解していた - CPUクレジットとベースラインパフォーマンス、そしてT2 Unlimited - SMARTCAMP Engineer Blog
こういった仮説をもとに記事を書いて、公開して、どうだったかのサイクルを回しながら運営しています(これが結構楽しい)
はてブやホットエントリーの仕組みを分析
はてブの伸びと、掲載媒体(ホットエントリーITカテゴリーやホットエントリー総合、SmartnewsやGoogle News)の関係を把握したいと思い、Redashで記事公開からのはてブ推移を出せるクエリを作成しました。
例としては以下になります。
このデータとGoogle Analyticsのデータをあわせて分析し、ある程度の記事公開プロセスを安定させていきました。
(以下はあくまでこういった傾向があるというはなしです)
- 20時から24時、ホットエントリーに乗っていると、はてブが伸びやすい
- 6時から9時の間、ホットエントリーに乗っていると、はてブが伸びやすい
- 記事公開から12時間くらい経過するとホットエントリーから急速に落ちる
- はてブ数が100を超えるとホットエントリー総合に載って流入が加速する
- 24時時点で30はてブ程度だと最終的に60はてブくらいで着地する
- etc...
※ 実際に上記Redash分析用のPythonコードも貼っておきます
import requests from datetime import datetime result = {} add_result_column(result, 'url', '', 'string') add_result_column(result, 'time', '', 'integer') add_result_column(result, 'count', '', 'integer') add_result_column(result, 'acc', '', 'integer') hb_entry = 'http://b.hatena.ne.jp/entry/json/' urls = ['{{URL1}}', '{{URL2}}'] for url in urls: response = requests.get(hb_entry, params={'url': url}).json() # for bm in response['bookmarks']: # add_result_row(result, {'user': bm['user'], 'time': bm['timestamp'], 'comment': bm['comment']}) def round_by_minutes(dt, minutes=10): return dt.replace(minute = int(round(dt.minute / minutes) * 10)) dts = [round_by_minutes(datetime.strptime(bm['timestamp'], '%Y/%m/%d %H:%M')) for bm in response['bookmarks']] first_dt = min(dts) dts = [(dt - first_dt).seconds / 60 for dt in dts] acc = 0 for dt in sorted(set(dts)): count = dts.count(dt) acc = acc + count add_result_row(result, {'url': url, 'time': dt, 'count': count, 'acc': acc})
SEOについて学ぶ
記事流入元の分析やはてブ推移の分析は公開時のバズ(スパイク)を大きくしようという施策ですが、長期的な技術のブランディングなど考えるとSEOも意識しておく必要があるかなと考えています。
弊社では幸運なことに、自社メディアも運用しておりSEOに詳しいメンバーも在籍しているため、基礎からテクニックまで手軽に学ぶことができました。
実践できてないものも多いですが、以下に取り組みを紹介しておきます。
- タイトルにキーワードを重要なものから左にいれる
- キーワードの表記ゆれをなくす
- 目次をいれる(目次で全体が把握できるようにする)
- 最低文字数1500以上、狙いたいキーワードで検索して一番上に出てくる記事より多いのが理想
- URLをカスタムURLにする
- はてなブログだと/entry/2019/12/25/184533のようになるが、階層が浅く意味のある英単語のほうがよい
- /entry/engineer-onboardingのようにハイフン区切りの英単語にする
- Google Search Consoleなどツールを見て改善(リライト)をする
以下を見るとコンテンツ(記事)が増えたこともあり順調に伸びているなと感じています。
伸びしろがたくさんあると思うので、注力していきたいところです。
(現在 aws client vpn
とか aws ソリューションアーキテクト
といったキーワードが強いようです。インフラ企業ですね)
どうやって毎週公開を維持したか
寄り添う
まずは献身的に依頼しているメンバーに手を貸す必要があると考えました。
記事を出すまでのプロセスとしては、
- ネタのアイディア出し
- アウトラインを書く
- 記事を書く
- 校正する
- アイキャッチ作る
- 公開する
のようになります。 やってみると、3. 記事を書くだけでも慣れないとすごく大変なんですよね。
なので、基本的に3. 記事を書く以外はすべて相談または丸投げして構わないというスタンスにしていました。
あと意識していたのが以下になります
- 3週間前には執筆依頼する
- 記事の内容については本人の書きやすいものにする
- 常にチーム関係なく情報収集し、普段の業務でかけそうなネタ、技術挑戦の提案ができるように心がける
- 書いてくれたことに感謝して自分でもちゃんと読む
インセンティブや成果の共有で成功体験の共有
これが一番大きい理由かもしれません。
3月末にまったく記事が見られず、はてブも1しかつかない、とてもモチベーションが下がっていました。
なんとか打開したいと思い、マネージャーと交渉して、1記事で100はてブ超えたら、寿司100貫メンバーに振る舞うという約束してもらいました。
そしてなんとそれから三週間後にVue.jsの記事が200はてブを超えてしまいました。
記事が伸びたのは偶然でしたが、メンバー全員で「もしかして寿司いくのか!?」という思いを共有できて一丸となるきっかけになったのかなと思っています。(CMOの林さんその節はありがとうございました)
インセンティブとしてはこの一回だけでしたが(あまりにも早く達成してしまったのでスポンサーが恐れてしまった)、その後も記事がバズったり、noteで紹介頂いたり、幸運にもすべてのイベントを楽しみながら全員でこなせたなと感じています。
運営側が気合で書く
寄り添って、本人のやる気もあるけど、タスク状況的に厳しい...そんなときは仕方ないので運営メンバーで書くようにしていました。
毎週記事公開はブランディングとしても重要ですが、書いてくれるメンバーのよい責任感にもつながっていると感じていたので、そこは死守しようとがんばりました。
ただ、気合で書くのも難しいので、早めに依頼している人のタスク状況や進捗などキャッチして、もしものときは誰がなにを書くかを話合うようにしていました。
Tips
タイトルはバズ狙いよりわかりやすく
かなり迷いどころなのですが、バズを狙ったタイトル(煽り文句を入れたり、シャレを混ぜたり)は難しいのでおすすめしません!
記事を書くコストが高いので、冒険するよりも堅実に、端的に内容がわかるものがよいと思います。
アイキャッチはあまり数値に影響しない
アイキャッチははじめてから紆余曲折あって、技術ロゴだけ期、著者の顔出し期、デザイナの本気期、いらすとや期とありましたが、結果的にあまりPVやはてブ数には影響しないと感じています。 (アイキャッチでバズるとかはありえなそう)
あまりにも意味のわからない、内輪ネタとかを避けていれば何でもいいかなと最近は思っています。
1つだけ意識していることは、表示する媒体(サイトや端末)によって端が見切れていたりするので、中央に要素を寄せるほうがいいかなと思います。
Twitterアカウントとの併用は大変
運営するなかで、Twitterアカウントを作って記事公開をアナウンスすると、流入が増えるんじゃないかという仮説でやってみました。
しかし、これは特に効果はありませんでした。
おそらく公開のアナウンスだけでなく、フォロワーを増やす施策やバズ狙いツイートなど別のノウハウが必要そうだなと感じました。
ブログのデザインはレスポンシブにするほうが良い
はてなブログのカスタムテーマだと、レスポンシブに対応していないものも多くあります。
本ブログ訪問者のデバイス内訳は以下のようになっており、モバイルが60%以上占めているので対応しておくほうがよいでしょう。
最後に
1年間のエンジニアブログ運営のまとめを本記事でさせてもらいました。
ざっくりまとめると、真剣にエンジニアブログと向き合って、データを見たり、著者に寄り添ったりすることで以下の目的を果たすことができたということになります!
- 採用のブランディング ◎
- エンジニア組織の成長 ◎
- 個人の成長 ◎
0からはじめて、数値的にも質的にも実感できるほどの成果を挙げる経験はなかなかできないので、とても楽しい1年でした(Google Analyticsとか見るたびにワクワクしていた)
来年はSEOを強化して定常的にPVを獲得したり、特定の技術の記事を厚くしてよりブランディングするとか次のステップに進められればいいなーと思います!
以上で今年の最後の記事は終わりとなります!
1年間ありがとうございました!