give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

人は365日間毎日ブログを更新できるか!?西見まーくんを応援するダッシュボードを作ったよ

はじめに

みなさんはソニックガーデン西見公宏(にしみまさひろ)という人物をご存知でしょうか?
彼はソニックガーデンの頼れるプログラマで、なぜかプロフィールアイコンはいつも「ポンデライオン」です。


https://blog-mah-lab.s3.amazonaws.com/2013/05/a4b7e42a43cdd4ea75889c83b1c211ef-300x249.jpg


そんな彼が30歳の目標として「365日間毎日ブログを一本更新し続けること」を掲げました。


30歳を迎えて、次の誕生日を迎えるまで毎日1本365日間ブログを更新し続けることを決めました | mah365
f:id:JunichiIto:20140512075307p:plain:w500


彼の目標を聞いたときは正直「えー、まじで?そんなん無理やってー!」と思ったのですが、今のところ公約通り毎日更新し続けています。
ちなみに昨日更新されたのは「【不運】Marvericksにアップグレードしようとしたらディスクが破損しました」というエントリでした。(ちゃんと直ったかな?)


連続更新の開始から150日以上の日数が過ぎ、ここまで続いたんならたぶん本気で完走を目指しているんだと思います。
そこで今回はみなさんにも彼の完走を応援してもらうために、彼のブログの紹介をしてみたいと思います。
さらに、ブログの更新ステータスを「見える化」するために作ったオリジナルのダッシュボードについても紹介します。


2014.05.14 追記 連続更新の開始日は「2013年12月5日」でした

まーくんのブログ連続更新は2013年12月5日から2014年12月4日(=まーくんの誕生日)までの365日間でした。
最初は2014年の元旦から大晦日までの1年間だと勘違いしていました。(ごめんなさい)
なので、以下の内容は正しい情報に合わせて一部修正しています。


僕から見た西見公宏(通称まーくん)

西見公宏という人物はいったいどんな人物なのか?
彼のことを知らない人のために、まずは僕から見た「まーくん」を紹介します。


まーくんは一言で言うなら、「すごいエンジニア」です。


もちろん「すごいプログラマ」でもあるのですが、技術的な知識やスキルはプログラミングだけにとどまりません。
Webデザインやベンチャービジネスに関する知識やスキルも豊富です。
なので、もっと広い分野をカバーしているという意味であえて「すごいエンジニア」と呼んでみました。


ところで、僕の初対面の印象は「若いのになんか偉そう」でした。(笑)
ソニックガーデンの選考期間中に彼と初めて会ったとき、彼はまだ会社にジョインしてから2~3ヶ月しか経っていないはずなのに、社内ではやたら堂々としていて、みんなとタメ口で話していたのが印象的でした。


まあそれだけ元から持っていた彼のスキルが高かったということです。
ちなみにソニックガーデンにジョインしてみると「実はいじられキャラだった」ということが発覚し、印象が180度変わりました!


あと、彼の経歴で面白いのが「高校を中退している」ということです。
「じゃあ最終学歴は中卒?」と思ってしまうのですが、そのあと大学に入学しているので、高校中退なのに最終学歴は「大卒」です。
何か思いついたら勢いで突き進む感じは、昔も今もあまり変わっていないのかもしれません(苦笑)。


プライベートでは彼はかわいい双子の父親でもあります。
ブログにときどき子どもの話も出てきたりします。


詳しくは彼のブログにあるプロフィールをご覧ください。
中の人について | mah365


まーくんのブログについて

彼のブログ、「まーくんが365日間更新し続けるブログ(仮)」は技術的なトピックはもちろん、ビジネスに関する話題や日常生活のTips等々、実に幅広いジャンルをカバーしています。


365日間毎日ブログを更新しようと思った動機は「30歳からはインプットだけでなくアウトプットも積極的にやっていこう」と考えたからだそうです。


参考: 30歳を迎えて、次の誕生日を迎えるまで毎日1本365日間ブログを更新し続けることを決めました | mah365
f:id:JunichiIto:20140512075307p:plain:w500


このブログ、僕が主催している西脇.rb&東灘.rbのメンバーにも人気で、「毎日更新を楽しみにしています」「役に立つ情報が結構多い」と評判です。(ブロガーとしてはちょっとジェラシー。。。)


みなさんもぜひチェックしてみてください!


個人的なオススメ記事

Rubyをより良く書けるようになるための課題演習のつくりかた | mah365
「インプットと同時にたくさんのアウトプット、更にアウトプットに対するフィードバックをもらうことが、プログラミング学習のキモではないか」というのは確かにその通りだと思います!
そして、本文中には僕の名前もちょこっと出てきていますw


プライベートをおもいっきり忙しくすれば生産性は上がる | mah365
何事もちょっと高いハードル(=制約)があった方が、自分の成長につながりやすいですよねー。
あれ?文末にまた僕のブログへのリンクが載ってた。。。(偶然)


イマドキ、Ruby on Railsで開発するならエディタはRubyMineだよね? 6出たよー! | mah365
個人的にはとても影響を受けたエントリです。
「RubyのIDEなんて(たぶん)使い物になんないよねー」という自分の先入観を打ち壊されました。
今ではすっかりRubyMinerです。(苦笑)


・・・でも本当に毎日更新しているの?

ところで、365日間毎日ブログを更新するといっても、外から見てると何となくでしか更新していることがわからないですよね?
「毎日更新してそう」ということはわかっても、「絶対?」って聞かれたら確認するのはなかなか大変です。


なので、もうちょっと誰が見てもわかりやすくステータスを確認できる方法はないかな~と考えてみました。


ブログの更新状況が一目でわかる「mah365-dashing」!

そこで作ってみたのが mah365-dashing というダッシュボードです。
これを見れば、ちゃんとブログが更新されているかどうかが一目瞭然です!


http://mah365-dashing.herokuapp.com/status
f:id:JunichiIto:20140512064412p:plain


ダッシュボードの見方
左上のオレンジの欄
ダッシュボードのタイトルです。ここは常に固定値です。
右上の青い欄(Today's post)
その日に更新されたエントリのタイトルが表示されます。まだ更新されていなければ「Coming soon」と表示されます。
左下の緑の欄(Percent complete)
前日までの目標達成率を表示しています。100%であれば毎日更新できているということです!
下段中央の紫の欄(Entries posted so far)
2013年12月5日以降に更新されたエントリの本数を表しています。無事に完走すればこの数値は365になり、メーターも右端まで達することになります。
右下の黄色の欄(Days to go)
2014年12月4日までの残り日数です。つまり、まーくんが今後書かなければならないブログの本数を表しています。2014年12月5日になるとこの数値がゼロになります。

 

ダッシュボードの更新頻度
  • ダッシュボードは10分おきに更新されます。
  • 画面をリロードしなくても自動的にプッシュ更新されます。

 

表示上の制約
  • IEでは表示できません。(プッシュ更新でServer-Sent Eventsという技術を使っているため)
  • レスポンシブレイアウトではありません。iPhone等で見るとちょっと見にくいです。普通にスクロールしようとすると画面ではなくタイルが動いてしまうので、黒い余白部分をスライドさせてください。

 

ダッシュボードに関する技術的な説明
  • Dashingというダッシュボード用のフレームワークを使っています。
  • 表示とは別に、ブログの更新状況を返却するためのWeb APIを別途用意しています。
  • DashingはSinatraで、Web APIはRailsで作りました。運用はどちらもHerokuです。
  • ブログの更新状況はWeb API側に設置したHeroku Schedulerが、定期的(10分おき)にブログのRSSフィードを取得しに行ってます。

 

開発で苦労した点

単純なダッシュボードだし、フレームワークを使えば簡単に作れるだろうと高をくくっていたのですが、思った以上に落とし穴が多くて大変でした。
未経験の技術やフレームワークを使うのはリスクがやっぱり高いですね。


最初は「dashing-rails」というRailsバージョンのDashingを使おうとしたんですが、Herokuにデプロイすると謎のエラーが頻発したために採用を見送りました。


こちらのIssueにも書いてあるんですが、dashing-railsとActiveRecordを同時に使うとデータベースコネクションがリリースされなくなり、同時接続数の上限にすぐ達してしまうようです。
そこでdashing-railsよりも構成がシンプルなオリジナル版のDashingを使うことにしました。(この決断に至るまで、2~3時間dashing-railsと格闘しました。。。)


ただし、オリジナル版のDashingはSinatraで作られています。
実は今までSinatraで開発したことは一度もなかったので、かなり手探りな開発になってしまいました。


Railsには十分慣れていても、フレームワークが変わると一気に初心者に逆戻りです。
「RailsでやってたアレはSinatraでどうやるの?」とか「とりあえず動いたけど、こんな作り方でほんまにええんかなー?」と思いながら作った箇所が多々あります。。。


ちなみに最初はTeam DashboardというRailsベースのダッシュボードフレームワークを使って作り始めました。
でも、実際作ってみるとちょっと見栄えが淋しい感じになってしまったので(下図参照)、いい感じにド派手なDashingを使うことにしましたw


f:id:JunichiIto:20140512071858p:plain:w400


コードはこちら

ダッシュボードのコードはGitHubに置いてあるので、興味がある人は参考にしてみてください。


ただし、「とりあえず動くようにする」というスタンスで書いたコードなので、あまりキレイじゃないです。
テストも書いてません。(RSpec本の翻訳者なのにすいません)


まとめ

というわけで今回は「まーくんが365日間更新し続けるブログ(仮)」と、彼のブログ更新を監視する応援するダッシュボードを紹介してみました。


「自分もまーくんの更新を応援したい!」という方は、ぜひ彼のブログのFacebookページに「いいね!」をしてあげてください。
ブログが更新されるとタイムラインに新着エントリが表示されます。
もちろん僕も「いいね!」してます!


まーくんが365日間更新し続けるブログ(仮) - ホーム | Facebook
f:id:JunichiIto:20140512082142p:plain:w500


さて、現時点ではまだ200日以上残っていますが、まーくんは無事に完走できるのでしょうか?
某チャリティー番組のマラソン企画よりもガチなこのチャレンジに、2014年は要注目です!


あわせて読みたい

このブログがちゃんと更新されているか監視するツール「mah365-dashing」を伊藤さんがつくってくれました! | mah365
まーくんが早速このエントリを紹介してくれました。
経過日数の仕様を間違えててごめんなさい。ダッシュボードは修正済みです!