production.log

ピクスタ株式会社でエンジニアのマネージャーをやっている星直史のブログです。

【AWS CLI】OpsWorksAgentのインストーラがAgent installation failed.になる場合の対処方法

概要

AWS 既存のEC2インスタンスをOpsWorksに登録する際、インストーラーを実行するのですが、Agent installation failed.になってしまいハマったので、対処方法を書きます。

環境

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

実行したコマンド

$ aws opsworks register --infrastructure-class ec2 --region ap-northeast-1 --stack-id {{stackid}} --local
...
...
[Wed, 04 Oct 2017 07:35:14 +0000] opsworks-init: Starting the installer
/tmp/opsworks-agent-installer.41mxNiW1JxzOdN0t/opsworks-agent-installer/opsworks-agent/lib/bootstrap/installer.rb:74:in `install_instance_agent': /opt/aws/opsworks/releases/20170402215230_4023-20170402215230 already exists and is current - aborting. (RuntimeError)
    from /tmp/opsworks-agent-installer.41mxNiW1JxzOdN0t/opsworks-agent-installer/opsworks-agent/lib/bootstrap/instance_agent_registration_installer.rb:27:in `block in run'
    from /tmp/opsworks-agent-installer.41mxNiW1JxzOdN0t/opsworks-agent-installer/opsworks-agent/lib/bootstrap/log.rb:96:in `measure'
    from /tmp/opsworks-agent-installer.41mxNiW1JxzOdN0t/opsworks-agent-installer/opsworks-agent/lib/bootstrap/instance_agent_registration_installer.rb:27:in `run'
    from /tmp/opsworks-agent-installer.41mxNiW1JxzOdN0t/opsworks-agent-installer/opsworks-agent/lib/bootstrap/instance_agent_registration_installer.rb:11:in `run'
    from /tmp/opsworks-agent-installer.41mxNiW1JxzOdN0t/opsworks-agent-installer/opsworks-agent/bin/opsworks-agent-registration-installer.rb:8:in `<main>'
[Wed, 04 Oct 2017 07:35:19 +0000] opsworks-init: Agent installation failed.
[Wed, 04 Oct 2017 07:35:19 +0000] opsworks-init: Please verify the log files found under /var/log/aws/opsworks and submit findings to AWS Support.

解決方法

調べてみると、インスタンスに既にOpsWorksAgentが入っていた場合、それを削除しなければならないようでした。

docs.aws.amazon.com

ドキュメントを確認し、下記コマンドを実行し、既存のOpsWorksエージェントを削除。

sudo /etc/init.d/monit stop
sudo /etc/init.d/opsworks-agent stop
sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef
sudo apt-get -y remove chef
sudo dpkg -r opsworks-agent-ruby

再度インストールコマンドを実行し、無事にsuccessになりました。

$ aws opsworks register --infrastructure-class ec2 --region ap-northeast-1 --stack-id {{stackid}} --local

技術誌に寄稿しました!テーマ選定、執筆の流れと使ったツールの紹介

概要

技術評論社から発刊されているSoftware Designの2017年10月号に「サーバーレスで実現!素材集サービスを効率化した自動画像管理システムに学ぶ」というタイトルで寄稿しました!
この記事では、記事執筆にあたり、テーマ選定、記事執筆の全体的な流れ、使ったツールなどをまとめます。 gihyo.jp

テーマ選定: 想定読者に何を伝えるのか?

最初に意識したことは、想定読者を意識して、何をどのように伝えるべきかを強烈に考えさせられるということです。

  • 想定読者は初心者~上級者のどの層か
  • 読者は記事を読んだあとに何を得るのか
  • 記事を書く上で前提は何か
  • なぜこの記事を書き、何を伝えるのか

などなどです。上記の中でも個人的に、読者は記事を読んだあとに何を得るのかが、最も重要なのだと思います。
ここがしっかり固まっていると、記事執筆中に内容がブレることなくなると思います。記事の大枠などを考える前に、まずはここを抑えると良いと思います。

また、内容については、今回は依頼されたページ数は10ページでした。文字数にすると15,000文字にもなるので、少ししか触ったことがない技術について書くと中身が薄くなってしまう可能性があります。 そのため、寄稿する際は、実際に自分が経験し、ハマって、深く理解した内容でなければ、何も伝わらない記事になってしまうと思いました。

執筆の手順

読者に何を伝えるかが決まった後の執筆の手順は下記の通りです。

  1. 編集の方にコンタクト/アポを取る*1
  2. 自分に何が書けるかを伝える。ここで想定読者と題材を伝えるとGood
  3. 編集の方との記事の方向性の検討
  4. 原稿執筆
  5. 脱稿*2
  6. ゲラ*3受け取りと修正依頼
  7. 二校、三校….*4
  8. 校了*5
  9. 見本受け取り
  10. 出版

先述の想定読者と伝えることが決まって入れば、1~2はスムーズに進みます。
この手順の中で最も力がいる作業は3~5です。原稿執筆と最初の修正依頼です。

ブログと同じ感覚やろ(ハナホジー)って感じでやってたら夏休みの宿題状態になりました。
もともとブログで文章を書く方だったのと、記事の大枠(h1, h2レベル)は決まっていたので気楽に構えていたのですが、細かな文言や言葉の意味を調べたりしなければならないのは辛い作業でした。
なかでも、記事の導入部分の枕詞に何日も費やしました。記事の"はじめに"の部分は、読み手がこの先の記事を読みたくなる内容にしなければならないと感じたのと、これまでそのような文を書いたことがなかったので、そもそも書き方がわかりませんでした。
色々な本を参考にしてなんとか書けましたが、個人的には一番大変でした。

また、最初の修正は、原稿の文が悪ければ悪いほど、指摘が多くなります。
30項目くらい指摘があって、死にそうになりました。さらに、修正依頼を受けてから返信するまでの期間が結構短いです。数日というレベルだったりします。
本業の傍ら、記事を書いていると体力的しんどくなってきます。

ただ、ここを乗り切ると修正も軽微なものになってきますし、PDFの見た目もだんだん雑誌の記事らしくなってくるので、達成感も出てきます。

執筆に使ったツール類

Google Document

エンジニアの方はgithubで書かれているような印象(?)ですが、普通にGoogle Documentを使いました。 理由は下記の通りです。

  • 編集者とデザイナーの方はgitthubが使えない可能性が高い
  • 修正が用意
  • コメントでやりとりできる
  • なんなら提案モードで直接修正してもらう

commitしてpushする手間もないし、個人的にはGoogle Documentで必要十分かと思います。
文自体はMarkdownで書きました。h1, h2, h3(#とか)とコード記述の方法(```で囲う)を最初に「こう書きます〜」っと定義しておけば、それを見て良い感じに(!)やっていただけます。
また、記事中に差し込む画像や図も、自分で凝った図を書くというよりは、ざっくり書いた図を基に「こうしてほしいです」とコメントをすれば、それを見て対応していただけたりします。餅は餅屋にですね!

Microsoft Word

Google Document使ってるのになんでワード!?ってなるかもしれませんが、Wordは文章の校閲に使います。
Wordの校閲機能は結構優秀で、ですます/である調の修正、助詞の欠落、常用漢字の使用などを注意してくれます。

これらは、編集者の方と打ち合わせした際に、結構細かく指定されます
また、自分はこういう作業が得意ではないので、機械的にやりました。*6

文章校閲の機能は書きの通り設定します。

メニューバー > Word > 環境設定 > 文章校正 > 文章校正 設定… f:id:watasihasitujidesu:20170926161401p:plain

設定ボタンを押すと、文法とスタイルの規則の設定 + 必要条件で、機械的にチェックすることが可能です。 プログラムと同様にtextlintを行うって感じですね。

まとめ

今回の記事では、原稿を書くまでのテーマ作りの話、校了までの大きな流れ、使ったツールの紹介でした。
校正などは、技術評論社の方に対応していただいたので、ツールに関しては最低限のもので済みました。*7
参考になれば幸いです。

自分の人生の目標の一つとして、単著で書籍を出版することがあります。
今回は雑誌でしたが、自分の寄稿した記事が掲載されるのは貴重な体験でした。
また、15,000文字書く大変さと、そこから推論できる書籍の原稿を書く場合の大変さもわかり、今後、一層精進する必要があると思いました。 また機会があれば積極的に書いていきたいと思います!

f:id:watasihasitujidesu:20170922131525j:plain f:id:watasihasitujidesu:20170922131616j:plain

*1:ここが一番難易度が高いか…

*2:原稿を編集の方に渡すこと

*3:分量やレイアウト調整のため、原稿をとりあえずPDFにしたもの

*4:文言などの調整の繰り返し

*5:校正が完了し,印刷しても差し支えない状態になること

*6:仕事でも使える技だと思います

*7:調べたらもっと便利そうなものがありそう。

【第三回】成田空港で一人開発合宿をしてきました

概要

雑誌の記事の執筆がいよいよ締め切りに迫ってきたので、一気に書き上げるべく、合宿を行いました。 開発合宿というより執筆合宿ですね。

合宿候補地はどんな感じで決めたの?

第一回目の合宿地が羽田空港で、だいぶ快適だったので、成田空港もきっとええとこやろ!!という軽い気持ちで決めました。 いつものように判断項目をあげると

  • 一人で活動できるか
  • すぐに充電が確保できるか
  • すぐにご飯を調達できるか
  • ネットワークが安定していて、かつ十分に早いか
  • 一泊二日を想定した場合、宿泊料は十分安いか(10,000円以下)
  • 作業時間を確保できるか(遠すぎないか?)
  • 楽しそうか

基本的には羽田と同じノリで楽しそうか?ってところを主眼に決めました。ぜんぜんPDCA回せてねぇ!!!
ただ、快速電車もあるし、課金アイテムの成田エクスプレス使えば、それなりに近い(作業時間を確保できる)だろうということと、 成田空港に併設されているカプセルホテルも早割を使えば5,000円だったので、リーズナブルにキメられるだろうということで、成田にしました。 電源もご飯もネットワークも、まぁ空港だから大丈夫でしょっ!って感じです。

良かった点

非日常感

f:id:watasihasitujidesu:20170722183645j:plainf:id:watasihasitujidesu:20170722184005j:plain
ばーん

f:id:watasihasitujidesu:20170722184425j:plainf:id:watasihasitujidesu:20170722185557j:plain
なんか綺麗だったから撮った。

f:id:watasihasitujidesu:20170722185634j:plain
第二ターミナルから第三ターミナルの連絡通路。
地面がクッションみたいになってて、膝に水がたまらなくてすむ。

f:id:watasihasitujidesu:20170723090129j:plain

空港!!!
って感じですね!めっちゃ海外旅行にいきたくなりました!

ご飯がうまい

さすが成田空港、食べることに困らない。

f:id:watasihasitujidesu:20170722190731j:plain
赤酢を使ったシャリがめちゃくちゃうまかった。いい仕事してますね〜〜
全部で10貫くらい食べましたが、最も美味しかったのは、カツオの上に乗っていた、玉ねぎの醤油漬けでした。

f:id:watasihasitujidesu:20170722232413j:plain
まさかの吉野家で吉呑みするという。 が、安くて、久しぶりにジャンクな肉を食べて普通に満足!

f:id:watasihasitujidesu:20170723091305j:plain
朝食にお茶漬け。
鯛茶漬けと冷汁というお茶漬けをおかずにお茶漬けを食べるお茶漬け定食にしてしまった! 出汁が本体だった。

f:id:watasihasitujidesu:20170723143743j:plain
とみ田にいったことなかったから中華そばとみ田にきた。 タレご飯美味しかった!タレでご飯食べたい!

f:id:watasihasitujidesu:20170722215115j:plain
空水という、空港限定の水! 500mlで180円!!たけぇ!!

交通

f:id:watasihasitujidesu:20170723150116j:plainf:id:watasihasitujidesu:20170723150806j:plainf:id:watasihasitujidesu:20170723151557j:plain
行きは成田スカイラインで行きました。若干遠かったけど、1.5時間で着いたからさほど気にならないレベル。 帰りは成田エクスプレス!! 座席に電源あるし、全席指定席だし、割とゆったりしていました! もしかしたら帰りの1時間の作業が最も捗ったかも?

悪かった点

作業環境

作業環境はぶっちゃけ最悪でした。 歩けど歩けど、電源は無い。椅子があまりない。なんか歩いただけで終わった感じでした。 第一ターミナルは空港感はあるけど、電源がない。第二ターミナルは電源はあるが、空港感がない。第三ターミナルは壊滅的。という状況でした。どのターミナルも良いところがなく、今一歩でした。楽しさはありませんでした。

f:id:watasihasitujidesu:20170723112045j:plainf:id:watasihasitujidesu:20170723092526j:plainf:id:watasihasitujidesu:20170722202316j:plainf:id:watasihasitujidesu:20170723134024j:plain
これが第一ターミナルと展望デッキからの写真。 電源は見つけられたのは唯一ここだけ…。死ぬほど探して死ぬほど歩いた…。 (あれ、写真でみると良さげに思える…)

f:id:watasihasitujidesu:20170722230832j:plain
第二ターミナルの普通の椅子。

第三ターミナルは何もなかったから写真なし!!

とはいえ、第二ターミナル1Fにある、北ウェイティングエリアは穴場っぽかったです。 人は少ないし、電源もあるし、畳あるし、椅子もあるし。 ただ、なんというか、収容所のような感じがして、個人的には好きになれませんでした。

f:id:watasihasitujidesu:20170722203603j:plainf:id:watasihasitujidesu:20170722203548j:plain
北ウェイティングエリア。綺麗っちゃ綺麗。

宿泊施設

f:id:watasihasitujidesu:20170722194724j:plainf:id:watasihasitujidesu:20170723195742j:plain
9h ninehours(ナインアワーズ)というカプセルホテルに泊まりました。
人生初のカプセルホテルだったんですが、カーテン一枚で仕切られているのは若干怖かったんですが、数十分居れば慣れました。 ベッドはエアウィーブでした。高反発ベッドが合わなかったのか、背中が痛くなりました。 あと、近くの宿泊客のいびきが猛烈でした。耳栓あってよかった。。。 コンパクトな宿泊施設だったので閉塞感がありました。 唯一良かったのは、シャワーがグローエだったことです。それ以外はちょっと微妙でした。たぶん、2回目は行きません。

まとめ

成田空港、もう二度と行きません。 電源ないわ、作業スペースもないわ、宿泊施設微妙だし、食事はまぁ、よかったけど、選択肢が少ない。 空港だから当たり前なんですが、羽田空港と比べると歴然とした差がありました。 第三回目にして、ついに微妙な合宿になってしまいました…。
振り返ると、羽田空港って最高なんじゃないかって思えてきました。次はどこの空港に行こうかな!!!!

20歳を過ぎてから箸の持ち方を直そうと決めた人たちへ

概要

20歳を過ぎた日本人(箸で食事をする)で箸の持ち方が汚い人が、下記の段階に到達するための矯正法を公開します。

  • 周りから、箸の持ち方が綺麗だと言われる。
  • 小皿Aに入った乾燥小豆を小皿Bに容易に移せる。そして、素早く。

まえがき

私は、20歳になるまで、箸の持ち方について、教育を受けてきませんでした。
正確に言うと、両親は私に指導を試みてくれましたが、私がそれを拒否しました。 また、箸の持ち方を学校では教育してくれた記憶がありません。

自己流の箸の持ち方で人生の大半を過ごしてきていたある日、新卒で入った社長からこんなことを言われました。
「お前みたいな汚い箸の持ち方のやつは、営業先に絶対に連れて行かない」

当時、箸の持ち方が人と違うことは認識していましたが、自分が満足に食事ができているので、矯正する必要はないと思っていました。 しかし、その社長の一言をうけ、他者が自分の箸の持ち方を見て、なんらかの評価を下す場合があり、それが少なからずネガティブな評価であることに気づきました。

それがハタチハシノモチカタの始まりです。

箸の持ち方を矯正した後の感想としては、箸の持ち方の原理さえ理解してしまえば、習得は容易です。 持ち方を直すのに原理さえ理解してしまえば、基本的には実践するのみで矯正できます。 実践とは、通常の食事を箸で食べるだけです。日本人であれば普通ですよね。

ただし、食べ物の中でも箸で食べることに対して、難易度が異なります。
固形物、乾燥小豆、豆腐/麺類、魚を、箸で食べる場合、難易度の低い食べ物から順番に食べ方を学ぶ必要があり、簡単なものからクリアしていくことが、矯正への近道です。 また、これらの食べ物について、それぞれ食べ方のコツと練習方法が存在します。

矯正方法

原理を学ぶ

基本的には、支点、力点、作用点が理解できていれば十分です。 作用点は「箸で食べ物を挟む」ことだとして、支点、力点はどの指のどこで支えるか / 力を入れるかさえわかれば容易に食べ物を挟むことができます。

そして、これらを学ぶためのアイテムがこれです。

いきなり課金アイテムですが、箸の持ち方を矯正するための箸です。
使うとわかりますですが、これを使うと、正しい箸の持ち方以外の持ち方ができなくなります。
その上で、どの指のどこを使うのかを覚えればすぐに矯正することができるでしょう。 持ち方の原理を理解することが最初の一歩であり、それが全てです。 その原理を頭ではなく、身体に覚えさせることができるのがこの箸です。

矯正前のレベルにもよりますが、早い人だと1回の食事でこれを使っただけで、十分なレベルかもしれません。

固形物、乾燥小豆、豆腐/麺類、魚の食べ方

これらの食べ物は、自分が本当に矯正されているのか?を測るための指標となります。 魚を箸で綺麗に食べることができたら、矯正は完全に終わったと言えるでしょう。

固形物

例) ごはん、角切りにされた人参など。
もっとも簡単です。エジソンの箸で原理が理解できていれば、難なく挟むことができるでしょう。
逆に、うまく食べることができないようならエジソンの箸を使い続ける必要があります。
数日間エジソンの箸を使い続けると自然と普通の箸でも挟むことができるでしょう。 焦らずに頑張りましょう。

乾燥小豆

固形物の次に乾燥小豆を選んだ理由は下記の通りです。

  1. 乾燥小豆は十分に小さいことから、箸の幅を固定して維持するために筋肉を要する。
  2. 乾燥小豆は表面がツルツルしているため、的確な幅、的確な位置をつままなくてはならない

固形物から難易度が上がりますが、練習さえすればうまくなります。

乾燥小豆の皿移し

ある時間内に、小皿Aに入った乾燥小豆を小皿Bに移すことを繰り返します。 また、この訓練で重要なのは時間を計ることです。
時間に制限があることで、効率よく集中して取り組む必要があるため、選んだ理由1. が特に鍛えられます。
要は、これまで特に意識していなかった筋肉を稼働させます。

筋肉痛にはならないと思いますが、このような筋肉の使い方もあるのだと身体に染み込ませます。

豆腐/麺類

外国人がうまく麺類を箸で食べれないのは、前段の固形物や乾燥小豆を箸で挟むことがうまくないからです。 跳び箱の5段が飛べないのに、6段が飛べるわけがありません。つまり、完全に箸で食べるようになるには、一段一段クリアしていかなければなりません。この道に近道など存在しません。

豆腐 / 麺類を箸でうまく食べるコツは、点ではなく面で挟むことにあります。 これまで、固形物や乾燥小豆は対象物を点で掴んできたわけですが、豆腐と麺は、面で掴みます。

冷奴を食べることをイメージしてください。 乾燥小豆と異なる点として、対象物の直径が何倍も長いです。これを掴まなければならないわけですが、乾燥小豆と同じように掴んでしまうと、箸が豆腐に刺さってしまい、豆腐が崩れてしまいます。

これを回避するために、箸を平行に、均等な力で持ち上げます。 乾燥小豆の皿移しで得た筋肉による、箸の使い方がここで活かされます。

あとは、箸で挟む力の強弱の問題です。

冷奴はもちろん、ソフトに掴みますが、これが麺類になると、グルテンにより、ツルツルした質感になります。 力を入れても麺が逃げてしまう / 切れてしまいますし、力を入れなくても箸から滑り落ちてしまいます。 適度な力が必要になってきます。

豆腐で

  • 点ではなく麺で挟む
  • 力の強弱

のコツをつかみ、麺類はさらに対象物の質感が変わるので、さらに上級といったところでしょうか。

麺類については、いきなりラーメン屋で実践すると、確実に麺が伸びてしまうので、冷凍うどんなどを買ってきて、家で練習することをおすすめします。

最後は魚です。

魚を食べる上で、これまでと決定的に異なる箸の使い方をします。 それは、箸を挟むだけではなく、広げて使うことです。

これまでの食べ物は挟むだけで食べることができましたが、 魚の場合は、

  • 皮やヒレなどを剥ぐ、破る、取る
  • 身をほぐす
  • 片方の箸の先についた骨をもう片方の箸で取る。

といったように、箸の特殊な操作により、うまく食べていくことになります。 特に、皮やヒレなどを剥ぐ、破る、取る動作は魚独特です。
弾力のある皮は、箸の挟む力だけでは、うまく破ることができません。 そのため、まず箸を閉じた状態で皮を破り、そこから広げる運動で、皮やヒレなどを取り除いて食べて行きます。

最難関といえど、これまで習得してきた挟む動きさえマスターしていれば、この広げる動作は、なんてことありません。
「あ、こういう使い方もあるんだ」ということさえ、認識していれば、スムーズに食べることができます。*1

まとめ

以上が、20歳を過ぎてから箸の持ち方を直そうと決めた人たちのための矯正方法です。 最初は食べにくいです。ツラいです。

しかし、箸の持ち方は習得は先天的なものではなく、後天的なものです。 つまり、習得、矯正は何歳からでも誰でも可能です。

基本的な原理を学んだあとは、5つの食べ物を通して、箸の使い方を学ぶだけです。たった5つの使い方を学ぶだけで、ほぼ全ての食べ物を箸で食べることができます。

*1:ただし、魚自体の食べ方(マナー)は別で覚える必要があります

【第二回】トスラブ箱根 和奏林で一人開発合宿をしてきました

概要

ひょんなことから雑誌の記事を執筆することになったので、集中して筆を走らせる為に、第二回一人開発合宿を実施しました。

合宿候補地はどんな感じで決めたの?

今回も前回と同様に、考えました。

  • 一人で活動できるか
  • すぐに充電が確保できるか
  • すぐにご飯を調達できるか
  • ネットワークが安定していて、かつ十分に早いか
  • 一泊二日を想定した場合、宿泊料は十分安いか(10,000円以下)
  • 作業時間を確保できるか(遠すぎないか?)
  • 楽しそうか

前回、食費で何気に1万円くらい飛んで行ったので、今回はコスパ重視で決めました。 せっかくITS会員なので、圧倒的コスパを誇るトスラブに行くことにしました。

こちらのトスラブは、一泊二日2食付きで5,400円です。行かない手はない…。 また、基本的には抽選で予約権を得なければならないですが、空き部屋検索で空き部屋があったら、そのまま予約ができます。

曜日 空室になりやすいか
月曜~木曜 だいたい空いてる
金曜日 1月に1日空いているか空いていないか。タイミング次第
土日 空くことはない。

ざっくりこんな感じなので、平日で勝負するか、運良く土日の抽選に当たるかの二択です。

今回は↓こんな感じで、金曜日が空いてたので、光の速さで申し込みをしました。

  • 有休がありあまってる(勤続年数がそれなりに経っているって意味で)
  • たまたま金曜日が空いてた

良かった点

非日常感

f:id:watasihasitujidesu:20170609124726j:plain f:id:watasihasitujidesu:20170609135319j:plain
小田原が良い感じに田舎だったので、一気に旅行気分になりましたw

f:id:watasihasitujidesu:20170609133600j:plain
食べログ3.59のアジフライ屋さん。 1.5時間くらい並びました。平日なのにどんだけだよ!! 味は、人生で食べたアジフライの中で一番美味しかったです。

トスラブ箱根 和奏林

小田原駅からさらにバスで50分くらいかかってやっと着きましたトスラブ!!

f:id:watasihasitujidesu:20170609145824j:plain
ばーーーーん!

客室

f:id:watasihasitujidesu:20170609150404j:plain f:id:watasihasitujidesu:20170609150401j:plain f:id:watasihasitujidesu:20170609150857j:plain

部屋がめちゃくちゃ広い・・・! 宿が、一人客を想定していないからか、普通にベッド2つあるし、コーナーソファもある。 居室だけで、だいたい35平米くらいあったと思います。こりゃ持て余すなぁ〜。

アメニティ

f:id:watasihasitujidesu:20170609150912j:plain
とりあえず、全部揃ってます。 前回の反省を活かして、歯ブラシとかは持ってこなかった!正解!

ラウンジ

f:id:watasihasitujidesu:20170609151203j:plain f:id:watasihasitujidesu:20170609151159j:plain f:id:watasihasitujidesu:20170610105913j:plain

広いラウンジ、コーヒーとお水もセルフサービスです! ネットワークもあります!

温泉

温泉については、写真がありませんでしたが、内風呂、露天風呂、サウナがあります。※水風呂はありません
内風呂は、日替わりでヒノキ / 岩風呂のどっちかになります。 温泉は硫黄泉でした。温泉入ってるなぁ〜って気分になりました。

食事

夕食

怒涛の食事写真ラッシュいきます! f:id:watasihasitujidesu:20170609180915j:plain f:id:watasihasitujidesu:20170611085023j:plain
富士燦燦というビールがあるのを知らずにプレモルを頼んでしまった・・・失態・・・ッ!

f:id:watasihasitujidesu:20170611085031j:plain
お造りがきてしまったので、箱根山という地酒を頼みました。しゃれおつ〜

f:id:watasihasitujidesu:20170611085043j:plain
おいしいやつ。

f:id:watasihasitujidesu:20170611085050j:plain
やきもの。

f:id:watasihasitujidesu:20170611085100j:plain
アナゴく〜〜ん

f:id:watasihasitujidesu:20170611085105j:plain
カツオの叩き。カツオより玉ねぎの方が美味しかった

f:id:watasihasitujidesu:20170609191016j:plain
魚沼産のコシヒカリ。ご飯だけでご飯が進んじゃう。

f:id:watasihasitujidesu:20170611085110j:plain
数ヶ月ぶりに果糖を摂取。

f:id:watasihasitujidesu:20170611085118j:plain f:id:watasihasitujidesu:20170611085121j:plain
部屋のみしたいからって言ったら用意してくれた!
白龍と、富士燦燦

この料理で5,400円かぁ。これはいけませんね〜。
飲み物の料金も普通の居酒屋の3割引くらいの値段です。プレモルの中瓶が350円とかです。いけませんねぇ〜

朝食

f:id:watasihasitujidesu:20170610070943j:plain

そうだ、オレは日本人だったんだ。と思い出させてくれました。
おかずの量に対してご飯が少なすぎる!
いっぱい食べてしまうじゃないか!

昼食

昼食は、予約制です。お隣のトスラブ箱根 ビオーレでも食べれるようなので、せっかくだしそっちにいきました。

f:id:watasihasitujidesu:20170611085439j:plain
例のごとく、価格設定がおかしい。
食前酒としてスパークリングワインを頼んでしまった。後悔はしてない。

f:id:watasihasitujidesu:20170610121315j:plain f:id:watasihasitujidesu:20170610121536j:plain

進捗どうですか?

なんの成果も!! 得られませんでした!!

進捗0です。はい。本当に0。30文字くらいしか書いてない。ツラい。

理由はいくつかあります。

箱根が非日常すぎた。

そのせいで旅行気分になってしまいました。 終わりの始まりです。

ご飯が美味しすぎた。

夕食が美味しすぎました。 「この状況で飲まないとかありえなく無いですか?」(真顔)ってなりました。 また、夕食前に温泉に入ってしまいました。温泉入ったあとのホクホクした状態で、あの食事を前にしたら意志力とかそんなもんなくなりました。 そして、お酒の価格設定がまずおかしいでしょ!っと、なってしまい、飲まないという選択肢が完全になくなりました。 むしろ、そもそも、お昼に小田原で夜の宴用のつまみを買ってしまいました。燻製祭りでした^q^

f:id:watasihasitujidesu:20170609212035j:plain

生しらすが最高に美味しくて、これが500円で買えるとか、小田原に移住しようかと本気で考えました

部屋にテレビがあった

テレビってやっぱり面白い。ずっとテレビ観てた。 と、同時に、オレの人生を潰す家電だと、再認識した。絶対にテレビだけは購入してはならないと、誓った。

宿までめちゃくちゃ遠い。

三軒茶屋~小田原まで2時間
小田原~宿まで50分
片道3時間でした。

自分の特性上、電車内で集中できないため、電車で作業はできないことはわかっていました。
バスでは、箱根山にやられました。廃れたバスだったので、人は少ないものの、 曲がりくねった道でPCで作業したら1分でバス酔いしそうになったため断念しました。

あと、昼食で1.5時間くらい待ったので、ご飯の時間含めて5時間は何もできてませんでした。

その他トスラブで良くなかった点

ネットワークが客室に届いていない。

これは致命的でした。ラウンジでしか作業できないので、やる気が削がれました。

水風呂がない

サウナがあるのに、水風呂がないとか、ナメてんのかと思いました。 なんのためのサウナなんだと受付に聞きたくなりました。

仕方ないので、シャワーの温度を一番低くして水風呂の代わりとして浴びたら、すごくぬるい。 一番低い設定でも20度くらいでした。体冷えないっての!

この際だから言わせてもらうけど、サウナが小さい。2人用でした。 サウナが小さいと何が起こるかというと、出入りする際にサウナ内の熱された空気の大部分が外の空気(冷たい空気)と入れ替わってしまいます。 つまり、サウナの温度が低くなってしまいます。 ドライサウナだけど80℃前後にしかならないので、身体が暖まりません。
これにはがっかり。

水圧が弱い

蛇口をひねってもちょろちょろとしか水がでません。 細かいところだけど、水圧が弱いと、手を洗うとき、石鹸の落ちが悪くなるから、頻繁に手を洗う人としては、ここは良くなかった。

まとめ

色々良くないことを書きましたが、トスラブ箱根 和奏林は良いところです! なんというか、100点満点中120点だけど、(個人的に思う)欠点があったから100点!みたいな感じ。

今回の合宿ですが、 合宿として評価すると0点でした。 次回に活かすならば、

  • 宿まで十分に近くなければならない(1時間くらい)
  • アクティビティ要素をなくす。非日常すぎるとダラけてしまうので。
  • お酒を飲んではならない。

ってところでしょうか。
お前は何しにここにきているんだ?ということを強く思わないといけませんね。自制心が弱すぎて情けない。

ただ、旅行として評価するならば、100点でした。 安い(むしろ交通費の方が高い?)、非日常感、温泉、飯がうまい、酒がうまい!

反省する部分が多くあるので、第3回は成功させたいです。*1

*1:旅行なら旅行!合宿なら合宿!と割り切らないとダメですね

AWS Rekognitionで画像内の物体名を取得する方法

概要

AWS re:Invent 2016で発表された新機能の中にAWS Rekognitionという画像内の物体、シーン、および顔を検出するサービスが発表されました。
今更感ありますが、Rekognitionで画像内の物体名を取得する方法を書きます。

Lambdaでの処理

'use strict';
const AWS = require("aws-sdk");
AWS.config.region = 'us-west-2';
AWS.config.apiVersions = { 
  rekognition: '2016-06-27',
};
const rekognition = new AWS.Rekognition();

module.exports.handle = (event, context, callback) => {

  var params = { 
    Image: {
      S3Object: {
        Bucket: "BUCKET_NAME",
        Name: "OBJECT_KEY"
      }   
    }   
  };  
  rekognition.detectLabels(params, function(err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else     console.log(data);           // successful response
  });
};

こんだけ!!
基本的にはS3のバケットとオブジェクトのキーをparamsに指定するだけです。
処理速度は2秒かかることもあるので、バッチ処理以外ではあまり使えなさそうです。
また、当たり前ですが、固有名詞は出てきませんし、返却されるラベルは全て英語です。
そのため、例えば、東京タワーの画像を解析した場合BuildingとかTowerというラベルが返却されます。

注意事項

Rekognitionは使用できるリージョンがとても少ないです。記事投稿時点では下記の3リージョンでしか使用できません。

  • us-east-1
  • us-west-2
  • eu-west-2

Tokyoリージョンに来ることを期待!

まとめ

たった数十行で画像内の物体を検出できるとは、未来に生きている気がしました。

Rekognitionは他にも、人物の顔を認識して傾きとかを検出したり、人物画像同士の比較をし、同一人物かを検出したり、アダルト画像か検出したりできます。価格も100万枚まで1,000枚あたり1.00USDだったり、低価格なのも魅力です。

一方GCPのVision APIはAWSと比較して高機能である代わりに1,000ユニットあたり$1.50 と多少割高になります。

Rekognitionに存在しない機能を使いたい時はGCPを使う感じですかね。

【ServerlessFramework】lambdaでgmを使って画像加工をする方法

概要

ServerlessFrameworkにおいて、Lambdaで画像加工をする場合、Imagemagickかgm(GraphicsMagick)を使用することになります。
AWS公式ドキュメントではgmを使用しているので、今回はgmを使用してサムネイル作成処理について、書こうと思います。

ハマりどころ

gmがrequireできなくてハマった

lambdaのコード中に

const async = require('async');
const gm = require('gm').subClass({ imageMagick: true });

といった感じでrequireしなければならないのですが、単純にこのように記述してデプロイしても、 module not found的な感じでデプロイしてすぐにエラーとなってしまいました。

lambdaをデプロイするとAWSの中で既にmoduleが用意されているものだと勘違いしていました。

改めてAWS公式ドキュメントを読むと.zipを作成しなければならないので、手順に従って回避します。

デプロイパッケージの作成

次にハマったのが、ServerlessFrameworkにおいて、デプロイパッケージの作成です。 AWS公式ドキュメントでは下記の通りにファイルを配置し、.zipを作成せよ。とあります。

CreateThumbnail.js
/node_modules/gm
/node_modules/async

上記の通り.zipを作るのは良いんですが、ServerlessFrameworkの枠組みからいきなり外れてしまうのが問題でした。*1

ただ、sls deploy後の.zipはS3の所定のバケットに配置されることに気づきました。 つまり、ServerlessFrameworkも実は単純を.zipを作ってlambdaにデプロイしているのだとわかりました。

そのため、単純にlambdaの処理が記述されているフォルダの直下で下記を実行すれば/node_modules/が出来上がります。

  • package.jsonを用意
  • yarn add async gm

その後にいつものようにsls deployをすれば完了です。

あとは
aws lambda gm とかで検索するとgmでの処理についての記事が出て来るのでそれを参考に!

まとめ

当たり前ですが、まずは、AWSのドキュメントをしっかり読むこと!!これが重要だと感じました。
他のブログではサムネイル作成処理については書かれているのですが、
ServerlessFrameworkと組み合わせた場合の方法は書かれていない印象だったので、この記事が参考になればと思います。

*1:単純にsls deploy だけで完結しなくなってしまう