oinume journal

Scratchpad of what I learned

Tokyo Developers Meetup 17に行ってきた

www.meetup.com

こんなイベントがあることを知って行ってきました。最初はボッチで同じテーブルの人も話しかけてくれないし、開始10分ぐらいでもう帰ろうかと思ったけど、自分から "This is the first time to come here. May I introduce myself?" と言って同じテーブルの人に話しかけたらそこから話がなんとかつながって、他の人ともしゃべるようになりました。

  • 目の前に座っていた人は日本にもう10年ぐらい住んでいて、自分の会社を持っているんだとか。そして、Haskel/Rust使いでDevOps系を仕事にしているらしい。「今どんなことやっているの?」って聞いたら「NixOSのパッケージ作ってた」って言ってて、NixOSなんてものを初めて知りました。
  • 隣の人はサンフランシスコから来ていて、Scala使いだそうで、「今日東京でScala Matsuriっていう大きいイベントやってるよ」って言ったらすごく悔しそうにしてた
  • pyconjpの理事をやりつつ日本でスタートアップをやっている人もいて、その人の会社について色々教えてもらった
  • 途中で挙手制の自己紹介タイムがあって、「会社をやってて絶賛エンジニア募集中〜(意訳)」ということを言っている人が4,5人いたので、仕事を探してる人にもいいのかも
    • disrupting JAPAN というPodcastをやっているよ、なんていう人もいた。面白そうなので聞いてみようと思う
  • 全体としては、PCに向かって作業している人もいたり、ずっと喋っている人もいたりでかなりフリーダムな感じ。たまたまフォトグラファーの人もいたので全員で集合写真撮ったり。

インド人やフランス人やアメリカ人など色んな国の人が参加していて色んなナマの英語が聞けたのと、NixOSなんていうすごいものをしれたので自分としては参加してすごく良かったです。月一ぐらいでやっているのでまた来月も参加したい。

MySQL Casual Talks vol.9でしゃべってきた

表題の通りでMySQL Casualで「カジュアルに本番データを開発環境に入れる」というタイトルで発表してきました。

当日はカジュアルウォーターを飲んでしまい発表時に顔が真っ赤になっていましたが、おかげで全く緊張しませんでしたw

自分の発表があったのであまり他の人の話を聞く余裕がなかったのですが、いい感じにまとめられていたのでこれからじっくり読もうと思います。

togetter.com

会場を提供してくれたYahoo!さんありがとうございました!

2016年の抱負

明けましておめでとうございます。今年もよろしくお願いします。

ということで、新年の抱負を書きたいと思います。昔は抱負を考えたりするのは好きじゃなかったのだけど、去年やってみて食わず嫌いだということがわかったので今年も抱負を掲げてみたいなと思います。

  • 英語を頑張る
    • 技術的なやり取りは苦がなくできるぐらいになっていたいなぁと。会話も文章も両方で。あとブログの英語比率を50%に持って行きたい。あと何か1冊英語の本を最後まで読む。
  • アルゴリズム勉強する
    • 6月までにB+Treeをソラで実装できるようにしたい
  • 機械学習を勉強する
    • ライブラリやフレームワークを使ってちょいちょいできるぐらいになってたい
  • 何かサービスを一つ作る
    • 去年やってみてよかったのは、自分だけの力で何かを作るって大事だなと思ったので。
  • 今年こそDocker

逆にやらないこと。

  • クラウド使いこなす系
    • 必要最低限に留める
  • ネイティブアプリ回り
  • デザイン

というわけで今年も好きなことをやりつつ楽しんで行きたいと思います。

2015年振り返り

2015年はざっくり言うとこんな感じだったと思う。

  • 2014年の夏から作り続けていたサービスが3月にローンチできた
  • 英語の勉強を本格的に始めた
  • 2年ぶりに趣味プロダクトを作った(dmm-eikaiwa-tsc)
  • 初心に帰ってアルゴリズムの勉強を始めた(algo)

一方で、掲げていた抱負を全部ちゃんと達成できたかというと微妙な結果だった。達成できなかった分は2016年に持ち越しかなぁ。

  • Dockerを実戦投入する
    • 手付かず...
  • アルゴリズムを深く理解する
    • algoという初歩的なアルゴリズムやデータ構造を実装し始めたけど、もともと考えていたB+Treeの実装とかそのレベルには至っていない
  • 機械学習とか自然言語処理勉強する
    • 手付かず...
  • 英語でブログエントリーを書く割合を25%にしてみる
    • これは唯一達成できた目標。30記事に対して12個を英語で書いたので40%

2015年に使った技術

仕事では正直特に新しいことには取り組んでいない。MySQLの代わりにAuroraを検証し始めたぐらいか。プライベートだと以下ぐらいしか思いつかない。

  • Heroku
  • Python 3.5のType hints
  • gb
  • CircleCI

英語

きっかけは「英語でもっとアウトプットしないと」という悲壮感からだったけど、夏ぐらいから本格的に英語の勉強を始めた。DMM英会話を数日やってみて、色んな国の先生と話すうちにその国のことを学んだりしてすごい面白かったので4ヶ月経った今でも継続してる。自分の英語の勉強方法はこんな感じ。

  • DMM英会話を週3,4回
  • 英語のPodcastを聴く
    • ChangelogTalk Python To Meを聴いてる。Talk Python To MeはTranscriptが無料で公開されているのと、requestsなどの超有名ライブラリを開発している人がゲスト出演していたりするのでマジでオススメ
  • 以下のような本で文法と単語をインプットする

毎日の英文法 頭の中に「英語のパターン」をつくる

毎日の英文法 頭の中に「英語のパターン」をつくる

毎日の英単語 日常頻出語の90%をマスターする

毎日の英単語 日常頻出語の90%をマスターする

結果として

  • カンファレンスの海外のスピーカーになんとか英語で質問できるぐらいの度胸と英語力はついた
  • 英語オンリーのランチで、なんとか言っている意味は理解して簡単な受け答えはできるようになった
  • 外人にもTwitterで絡めるようになった
  • 英語のPodcastも7割ぐらい話している英語は聞き取れるようになってきた(意味はもちろん全てはわからない)

その他

  • 子供が1歳8ヶ月になったけど、特に大きな病気をすることもなくスクスクと育っていて大変嬉しい。もうすぐ喋れそうでこれからもっと楽しくなりそう
  • 妻が仕事に復帰したけど特に大きな問題もなく生活できてる(たぶん...)
  • 通っている認証保育園の先生が本当にいい人たち過ぎて転園したくない
  • 猫のししまるが相変わらずかわいい
  • 住宅ローンを頑張ってけっこう返済した
  • 家で酒をほとんど飲まなくなった

Heroku Schedulerやcronが正常に稼働しているかをチェックするDead Man's Snitchが便利

これはHeroku Advent Calendar 2015 21日の記事です。今回はHeroku Schedulerを監視するDead Man's Snitchというものを紹介します。

Heroku Schedulerってなに?

Heroku上で特定のスクリプトやコマンドを動かすcronみたいなもの。「みたいなもの」というのは、cronと違って「何時何分に実行する」というような厳密な時間指定ができず、10分、1時間、1日単位でしか指定ができません。イメージとしては以下のような感じ。

Heroku Scheduler setting

ただ、このような要件でも十分であれば、無料のDynoでも利用できるのがメリットだと思います。

Dead Man's Snitchでコマンドが正常に稼働しているかチェックする

Heroku Schedulerで動かしているコマンドが正常に稼働しているかをチェックすることができないか?と思って調べていたらこのDead Man's Snitchに行き着きました。原理としては

  1. Heroku Schedulerにyour_command.sh && curl https://nosnch.in/<hash>のようにコマンドを登録しておき、your_command.shが成功した時にcurlで成功したということをDead Man's Snitchに送信する(チェックイン)
  2. Dead Man's Snitch側では、1時間の間隔(*1)でちゃんとコマンドが成功しチェックインされたかどうかをチェック
  3. もし1時間以上チェックインしていなければ、指定したメールアドレスにアラートメールが送信される

という流れです。チェックインをチェックする間隔は1日, 1週間などの間隔が設定可能で、有料プランだと15分、30分の間隔もできるようです。

ちなみにチェックインされていない場合に送られてくるアラートメールはこんな感じ。

Hi <app>,

FYI "<app>" doesn't seem to be working.

Last healthy check-in: about 8 hours ago (16 Dec 16:13 UTC)

You might want to check it out:

https://deadmanssnitch.com/snitches/<hash>

Would you like to pause your snitch?

https://deadmanssnitch.com/snitches/<hash>/pause

Kind regards,

Dead Man's Snitch

なおこのDead Man's Snitchは特定のURLにGETでアクセスするだけのシンプルな仕組みなので、Heroku Schedulerだけではなくcronでも使えます。もちろんcurlからではなくプログラムのコードからでも呼び出せます。

まとめ

Heroku Schedulerやcronの死活監視に使えるDead Man's Snitchというサービスを紹介しました。データーベースのデータをバックアップするような重要なスクリプトにDead Man's Snitchによる死活監視を入れておくとスクリプトが動作していないことにすぐ気付けるのでオススメです。