2017年やりたいことリスト100

去年に引き続き

相変わらず100うめれず・・・。

chocopie116.hatenablog.com

  • 01.テニスの大会に出る (4/16達成)
  • 02.テニスの大会で1勝する (4/16達成)
  • 03.潮干狩りにいく
  • 04.クイズアプリサービスをリリースする
  • 05.Androidアプリをリリースする
  • 06.iOSアプリをリリースする
  • 07.自分の子どもを抱っこする(11/14達成)
  • 08.親孝行する
  • 09.嫁泣かせる(いい意味で)
  • 10.10kmマラソン参加する
  • 11.ハーフマラソン参加する
  • 12.フルマラソン参加する
  • 13.外国人の友達をつくる (適当に達成)
  • 14.副業で収入あげる (7月中旬に達成)
  • 15.釣りをする
  • 16.確定拠出年金をはじめる (確定拠出年金は不要という判断をした)
  • 17.漫画喫茶にいく
  • 18.歯を白くする (ホワイトニングは不要という判断)
  • 19.漫画喫茶にいって漫画読み漁る
  • 20.50はてブゲット
  • 21.100はてブゲット
  • 22.200はてブゲット
  • 23.ホットヨガを嫁といく (達成)
  • 24.歌舞伎をみにいく
  • 25.仕事で成果をあげて賞をもらう
  • 26.ドリカムライブみにいく
  • 27.カメラを買う (ミラーレスカメラを買った)
  • 28.奨学金の繰越返済をする (奨学金の繰越返済は不要と判断)
  • 29.豚の丸焼きをする
  • 30.燻製をする (リキッドオイルで達成)
  • 31.音楽フェスにいく
  • 32.スタンディングデスクを買う(IKEAのBEKANT? オカムラのSwift?)
  • 33.椅子を買う (達成)
  • 34.出産に立ち会う (達成)
  • 35.座禅をする
  • 36.海外のカンファレンスにいく (12月に達成)
  • 37.シリコンバレーにいく
  • ◯38.ジムに通う(anytime fitness) (1/4に入会。達成)
  • ◯39.ストレッチに通う(Dr.ストレッチ) (1/29体験して、いかないことにした。達成)
  • 40.ヨーロッパに行く
  • 41.瞑想をやる (ヨガクラスにいった)
  • 42.podcastをやる
  • 43.rebuild.fmにでる
  • 44.OSSリポジトリで100スターもらう
  • 45.なんかの本かく
  • 46.LT発表する
  • 47.カンファレンスのキーノートを発表する
  • 48.なにかの楽器で1曲演奏できるように
  • 49.HHKBのBluetooth版をかう(4/10達成)
  • 50.オーロラを見る
  • 51.流星群を見る
  • 52.無重力を体験する
  • 53.Apple Watchを買う
  • ◯54.サブディスプレイを2枚にする (1月下旬達成)
  • 55.岩盤浴に行く
  • 56.サバゲーする
  • 57.チワワをかう
  • 58.NPOのITのチームメンバー3人増やす
  • 59.シックスパックをゲットする
  • 60.乗馬体験をする
  • 61.合気道の体験をしてみる
  • 62.早起きになる(2,3月ぐらいから気持ち達成)
  • 63.ツリーハウスに遊びにいく
  • 64.なんか新しい趣味みつける
  • 65.isucon予選突破
  • 66.引っ越しする (7月達成)
  • 67.プロジェクト(.org)を完了させる(達成)
  • 68.ハッカソンやる (達成)
  • 69.新しいコミュニティに参加する
  • 70.家のネットを変える(達成)
  • 71.嫁の携帯を格安SIMにする(3月達成)
  • 72.MacのDesktopアプリをなんかつくる
  • 73.個室露天のある旅館に泊まる(達成)
  • 74.IT健保の寿司にいく
  • 75.英語のなんかのコミュニティに突撃する(達成 1000 speakersと、ボドゲのコミュニティに参加)
  • 76.なにかかく
  • 77.なにかかく
  • 78.なにかかく
  • 79.なにかかく
  • 80.なにかかく
  • 81.なにかかく
  • 82.なにかかく
  • 83.なにかかく
  • 84.なにかかく
  • 85.なにかかく
  • 86.なにかかく
  • 87.なにかかく
  • 88.なにかかく
  • 89.なにかかく
  • 90.なにかかく
  • 91.なにかかく
  • 92.なにかかく
  • 93.なにかかく
  • 94.なにかかく
  • 95.なにかかく
  • 96.なにかかく
  • 97.なにかかく
  • 98.なにかかく
  • 99.なにかかく
  • 100.なにかかく

serverless architectureでajitoのサービス稼働確認ページを作成してみた

voyagegroup advent calendar 記事として投稿しています。

techlog.voyagegroup.com

はじめに

こんにちは サービス監視していますか?

サービス監視といえば、開発者の方は直接のアラート対応を想起される方が多いかと思います。 このエントリでは、サービスが正常に稼働しているかのモニタリング方法や、リカバリの対応ではなく、 サービスが正常に稼働している(or していないこと)をユーザーにお知らせするサービス稼働確認ページ(以下statusページ)について書こうと思います。

statusページといえば、私自身GitHubが調子悪いときによくお世話になります。

世の中(twitter)では, https://status.github.com/ページできちんと確認を行った上で、皆さん休憩をとったり、自己の鍛錬に励む人々も多い模様です。 ( 決してサボっているとはいっt)

GitHub おちた - Twitter Search

さて、今回statusページの対象として、voyagegroupの社内BAR ajitoのサービス稼働状況を確認できるサービスをつくってみました。
(中の人はもちろん社内にいるので外から使われるといいなと思ってつくってみました。)

構成

f:id:chocopie116:20161212024229p:plain オーソドックスなものでhow to 記事に関してはインターネットに記事がたくさんあるので、解説はそちらにおまかせいたします。

デモ

status.ajito.vg f:id:chocopie116:20161212025333p:plain

(※ 簡易なつくりなので、こちらの都合でサイトを落とすかもしれません。ご了承ください。)

サイトでできること

  • ajitoの稼働状況がわかります。
  • 任意のタイミングでajitoの稼働状況を尋ねることができます。
  • 状況が更新されるので、ajitoがあいていれば遊びにきていただくことが可能です。

裏側の話

  • ajitoの稼働状況の更新は、オペレーターによる温かみのある更新(※1)
    • slackで人力運y です。
  • API GatewayとLambdaでサクッとhttpのAPIがつくれた。httpのAPIがあると便利。

今後試したいこと

  • Lambdaそのもののモニタリング
    • CloudWatchとかでうまくやれるのかもしれません。
  • ハードウェアとか使って機械的にajitoの稼働状況をモニタリングしたい
  • API Gateway, Lambdaの構成管理・デプロイを楽に
  • node.jsでAPI書きたくない
  • フロントエンド周りのよいプラクティスにそった書き方

今回作成したアプリケーションのリポジトリはこちらになります。

github.com

最後までお読みいただいた方ありがとうございました。
ajitoにいってみたいなと思う方は、ぜひ気軽にstatus.ajito.vgでping送ってみてください\(^o^)/

机の周り整理した

最近MacBookPro 2016 Lateの購入を機会にデスクまわりを整理した。

TL;DR

  • ノートPCスタンド最高
  • アンチグレアフィルム最高
  • アームレストは微妙

before

f:id:chocopie116:20161206224425p:plain

after

ノートをスタンドにのせた。
これで机の上のものはだいぶスッキリした。(拭き掃除かんたんになったw)

ノートPC スタンド

買ったのはこれ。

f:id:chocopie116:20161206224445p:plain f:id:chocopie116:20161206224451p:plain

アームを自在に動かす使い方はできないけど、固定して使う自分的には大満足。

アームレスト

机に取り付けて使うもの

これは便利。 アームレストで安いもの試してみようという気持ちで安いやつ買ったのでとりあえず合格。 これに関しては、もっといい製品ありそうな気がしてる。 f:id:chocopie116:20161206225147p:plain

デスクまわりとは別だけど、ノートPCに初めてアンチグレアフィルムはってみたけど、ほんとにいいですね

ServerlessConfでpre-conference workshopとconference dayに参加してきた

f:id:chocopie116:20161002014038p:plain

tokyo.serverlessconf.io

こちらのイベントに参加してきました。

動機

これまでオンプレでサービスを提供しているチームに所属していたのですが、実は10月から異動になりました。 クラウド環境のアーキテクチャにあまり触れてこなかったので、積極的に触れる機会を増やしていきたいなというのがモチベーションでした。 ServerlessConfはそんなタイミングでちょうど見つけたので申込をしました。 2016/09/30(金)と10/01(土)の両日を使って、約30名限定のpre-conference workshopと、conference dayに参加してきました。 その記録です。

両日通しての個人としての学び

  • AWSでのAPI Gateway, Lambda, Cognito, DynamoDB等を利用したアプリケーションを構築する経験ができた(といってもAWSのマネジメントコンソールぽちぽちしただけ)。
  • 世の中的にサーバーレス!とよばれるアーキテクチャは、どういった機能で適用するのかプロダクションの事例を聴きながらイメージできた。
  • 黎明期っぽい感じがして、ワクワクした。
  • IaaSは機能がたくさんあってすごいなーとモチベーション上がった。
  • Amazon Echo楽しそう(技適と、日本語の文法の問題を解決して早く日本にもってきてほしい・・・)

(Day 1) pre-conference workshopのまとめ

概要としては、用意されたCloudFormationのtemplateと、node.jsで実装されたアプリケーションをセットアップしながらチャットアプリケーションを動作させました。

Surviving the Zombie Apocalypse with Serverless Microservices | AWS Compute Blog

というもので、世界の色んな所で実施しているイベントのようです。

なおワークショップで実現させた機能は

  • ユーザーは会員登録ができる
  • ユーザーはチャットアプリケーションにテキストを投稿できる
    • ChatApp Client(S3) -> ChatApp Server(API Gateway, Lambda, DynamoDB)
  • ユーザーは、SMSを使ってチャットアプリケーションにテキストを投稿できる
    • スマホのSMSアプリ -> Twillio (webhook)-> ChatApp Server(API Gateway, Lambda, DynamoDB)
  • ユーザーがチャットアプリケーションに投稿したテキスト情報を検索できるようにする。
    • ChatApp Client(S3) -> ChatApp Server(API Gateway, Lambda, DynamoDB) -> Lambda(DynamoDB trigger) -> ElasticSearch Service
  • ユーザーはslackの slash command を用いて、チャットアプリケーションに投稿できる
    • Slack Client App -> Slack(webhook) -> ChatApp Server (API Gateway, Lambda, DynamoDB) (話としてはゾンビによって地球上の人間がほとんどいなくなった状況で、残りの生存者がコミュニケーションをとるチャットアプリケーションという設定でした)

ログイン画面

f:id:chocopie116:20161002004301p:plain

チャット画面

f:id:chocopie116:20161002004323p:plain

気になる方はこちらから試すことができるようです。 GitHub - awslabs/aws-lambda-zombie-workshop: Code and walkthrough labs to set up a serverless chat application for the Zombie Apocalypse Workshop

あと全然関係ないですが、目黒のAmazon社は社内壁があって羨ましい。 f:id:chocopie116:20161002014000p:plain

(Day 2)conference dayのまとめ

どの発表も新鮮でしたが、特に以下の2つの発表は個人的に印象に残っています。

Gunosyのnewsappというニュースアプリでの事例紹介の話でした。
API Gateway, Lambda, Cognito, SNS, Kinesisを使っているプロダクションにおける具体的な利用シーン

speakerdeck.com

他の方々の発表をきく中で、サーバーレスについてどういうことが大事なんだろう?ということが気になっていた部分が整理された気がします。
AWS Lambdaが出てから、よく聞くサーバーレス!サーバーレス!ってよばれている気がしたけど、本質ってなんだろ?(BaaSとかMBaaSの時いってなかったよね?の意味)
以下の話で少し整理されたきがします

speakerdeck.com

日経さんで画像処理周りをlambda使ってる話は面白かったです sssslide.com

気になること・試してみようとおもうことこの後やってみようとおもっていること

  • テストとかどこまでできるのか気になる
  • サービスの監視とかどうやってやるのか気になる
  • Lambdaのデプロイとか面倒くさい (このあたり便利にしてくれるフレームワークと呼ばれるものが何をしてくれるか調べる Serverless, Apex)

つくってみたいアプリケーションが2つあるので、その中で手を動かしながらやってみよ。

ディスプレイアーム買った

ディスプレイアームをamazonで買った。

机周りが綺麗になって本当に最高だ。

 

### before

f:id:chocopie116:20160816235517j:image

 

 ### after

f:id:chocopie116:20160816235534j:image

 

 

2880円でこのコスパは最高です。

Amazon CAPTCHA

 

でも、テスト期間中に部屋の模様替えするあの感覚を覚えました。 

うわっ…私の集中力、低すぎ...? Pomodoro(PomoDoneApp)とRescueTimeを使って1週間を計測してみる 〜実践編〜

以下のエントリの結果発表です。 chocopie116.hatenablog.com

先に結果をいうと、

今週は色々あって稼働時間短かったんだよ・・・と思わず言い訳したくなるぐらい、自分の想定よりずっと集中していた作業時間の確保できていなさそうです。 (計測のやり方で集中していた時刻を計測できていない等の要因も含まれていますが)

計測手法と計測する狙いについて

ほったらかし計測

  • 自分自身で能動的なアクションをせずに、起動しているアプリケーションのウィンドウから起動時間を記録。
  • いわゆる気の抜けたタイミングなどの計測が目的。
  • RescueTimeを使用。 www.rescuetime.com

アクティブ計測

  • 自分自身で能動的なアクションをする。作業前後でアプリケーション起動して、時間を記録。(ストップウォッチを押す感覚)
  • いわゆる作業で集中している時間の計測が目的。
  • PomoDoneApp(pomodoroタイマー + trello)を使用 pomodoneapp.com

計測結果

ほったらかし計測

Daily(8/8)

f:id:chocopie116:20160813232833p:plain

Weekly(休みの日も混ざっている)

f:id:chocopie116:20160813232844p:plain

アクティブ計測

Daily(8/8)

f:id:chocopie116:20160813233430p:plain

Weekly

f:id:chocopie116:20160813233455p:plain 週の半ばから、計測が少し面倒くさくなってしまい、計測できていない量も結構会ったと思う。

振り返り

営業時間のうち作業時間は7割ぐらい確保できた週だったと思う。 そのうちアクティブ計測によって計測できた集中時間は、7割の半分ぐらい。 わかってはいたけど計測して改めて、集中している時間の尊さをすごくすごくすごく感じた。

取り組み方としては、ほったらかしスタイルの計測はとても楽だった。 個人的には、slackと会社のグループウェアってどのぐらい見ているんだろう?ということを計測できたのでよかった。

アクティブ計測は、自分でストップウォッチを押す行為が億劫だったりしたけど、意外と続けられた。 1日あたり何ポモドーロできた?みたいなものをベースに 自分の1日の成果(集中時間)を測る1つの指標としてアクティブ計測については引き続き頑張ろうと思う。

取り組みの改善としては、ポモドーロの時間が終わったかが音でしか今のところわからない。 有線のイヤフォンをMacのジャックに挿して使っていたが、ケーブルが邪魔でなんか辛いので、 Bluetoothのイヤホン買ったのがTry(これが有効かは謎

ポモドーロはどのぐらい集中してるか?作業できたのか?みたいなものを振り返る手法としてよさそうだなとおもった。

推測するな計測せよ Pomodoro(PomoDoneApp)とRescueTimeを使って1週間を計測してみる 〜計画編〜

やろうと思ったきっかけ

オリンピックを見ている奥さんの横でようやくSOFT SKILLSを全て読み終えた。 個人の生産性(Productivity)について書かれていて、ふと計測してみたくなった。 GTDの手法とかやりこんで、意識高くSNS使わないぞ(キリッ ではなく、PCに向き合っている時間を計測してみたくなったのが一番の理由です。

話は変わるが、最近おうちでの月々の収入支出をきちんと計測して使途不明金1万円以下まで把握して振り返りをしたらとても良かったのも1つの要因。

なおこのブログは1週間の計測結果ではなく、これから実施予定の計測方法にのみ記載した。 理由は、途中で飽きてしまうリスクに対して、目的を定め・検証すべきことを言語化すると最後までやりきれそうな気がしたからです。

背景・問題意識

愉快な人々に囲まれながらチームで働いていると様々な機会がある。

  • slackのmentionでの依頼・質問
  • slack channel上での議論・雑談
  • GitHubのPull Requestのレビュー依頼

これらについてチームで働いているので、協働という意味でなるべく早め早めに対応しようとしたり、 ネタに乗り遅れないようにしたり、 ふとした瞬間にTweetDeckでtwitter見たり、自分の意識や集中が途絶える瞬間は多い気がしている。 時間にするととても短いけど、こういった時間の使い方が占める割合は馬鹿には出来ないと思っている。

計測項目

  • 成果物の達成のために集中して作業(定義は後述)している時間をどの程度確保できているのか計測したい
  • PCの前に向き合っている間に消費している時間を計測したい

計測方法

2つの方法をためしてみることにした。

PomoDoneApp

ポモドーロ・テクニックを使って、集中して作業している時間の計測を行う 集中して作業している時間の定義は難しいので、一旦ポモドーロ中はmention飛んでポップアップがでない限りはslack開かないというオレオレルールでいく(守れなさそうなら後から考える pomodoneapp.com

  • 無料
  • 日毎のログをレポーティングできること
  • 家のPCとMacのPCで連携できること
  • タスク管理で別のサービスと連携して、1ポモドーロで何やるか手打ちしなくてよいこと(trelloと連携した)
  • slackと連携できること(仕事で一番依存しているプラットフォーム上に通知が出せると、忘れずに続けるために意義がある

RescueTime

PC上でのアプリケーションの起動時間の内訳を計測する www.rescuetime.com

  • 無料
  • レポーティング機能があること
  • アクティブなウィンドウの情報を記録
    • アプリケーション名
    • ブラウザの場合はURL

URLのところがかなり怪しいw 閲覧URLのログについては、自分が許可したホワイトリストドメインのみでのロギング設定もあるので まずは1日運用してみる。

RescueTime

How much data does RescueTime collect? I'm a little worried about this. RescueTime collects the following pieces of information by default: application name, web site URL (if the app is a browser), start time, end time, OS username, and computer name. You can choose to limit what RescueTime collects by turning off window title collection, and turning off full URL collection (example.com vs. example.com/morewords). You can also elect to enable our whitelist functionality, which allows you to track ONLY web sites that you want to track-- all other web usage is sent to us with no URL information. application name, web site URL (if the app is a browser), start time, end time, OS username, and computer name.

結果エントリ

chocopie116.hatenablog.com