PMF(Pepabo Maker Festival) - 徒然日記
通勤で使う電車に大幅な遅延が生じていたので、家をでる時間を大幅に遅らせて向かったのだけれども、そこそこの混雑にであってしまいもう少し遅らせればよかったと多少後悔しつつ通勤。とはいえ、座って本を読みながらなので貴重な時間ではある。
業務終了後からGMOペパボの有志による自由な作品展示会、通称 PMF(Pepabo Maker Festival)に「ネットショップへのアクセス、またはSlack上のコミュニケーションに関する一表現 (仮)」と題した展示をした。行っていることはシンプルでSlack上で自分が参加しているチャンネルにおいて何らか発言が行われるとサーバーにリクエストが飛び、そこからブラウザや手元で待機しているスクリプトがフックを受動し、同期してLEDが点滅したりブラウザ上で花火が上がるという一表現を行ってみた。同様に自分が持っているネットショップにリクエストを発動させるためのIMGタグを置く仕組みも作り、ネットショップにアクセスされても同様のインタラクションが発動する様にしたものである。
ただ、重大なことに展示をして気づいた。このイベント自体が定時後に行われているため、そもそもSlack上でのコミュニケーション量は日中に比べて大幅に減っており、この表現が発動しないのであった。自分のネットショップもテスト用でありアクセスは少ない。致命的であった。(気づくのが遅い)
とはいえ、久しぶりにちょっとした展示やそれに向けてコードを書くのは楽しかったし、同僚の展示を見るのはとてもおもしろかった。次回も機会があえば何かを展示したいと思う。
徒然日記
訪問先へ直行だったので、電車を朝から乗り継ぐ。相変わらず東京の電車慣れない。
ストーリーとしての競争戦略 優れた戦略の条件 (Hitotsubashi Business Review Books)を読み始める。
外出, 餃子, 順番を変える - 徒然日記
連休3日目。朝から起きて外出する。人混みが苦手なので朝の開店時間に併せて移動する様にしているのだけれども、店員さんも丁寧に対応してくれたりするのでこれはこれでよい。お昼前には用事を済ませてすぐに帰宅する。
晩ごはんに餃子を作った。哀川翔がテレビで紹介していた餃子のレシピ*1で焼売の皮を使って三角形に折りたたむ形で作るものでホットプレートでまとめて焼いて食べる。ひとつあたりの大きさが小ぶりでたくさん食べられるので稀にこの形式も試しているのだけれども美味しいのでお薦めできる。
昨日書いたshutter、キャッシュにスクリーンショットが無いときに puppeteerでスクリーンショットの画像を撮る → クライアントに返す
と実装していたのだけれども、キャッシュが無い場合はひとまずすぐにレスポンスをNo image的な形で返す→そのままそのプロセスでスクリーンショットを撮影
とすれば次回アクセス時はキャッシュが参考されてすぐにスクリーンショット画像が返せるということに今更ながら気づいたので少しだけコード書き換え始めた。永続性とか考えたらキューに入れるものをきちんと設けるのが正解なのだけれども、このプロダクトの特性ならこれでよいのではないだろうか。
参照
GitHub - hideack/shutter: puppeteerによるスクリーンショット取得するシンプルなAPIを提供
徒然日記
連休2日目。引き続き寝付きが悪くてあまりぐっすり眠れずに9時過ぎに起床。そのまま少し寝ぼけたままラジオを聞き始め「安住紳一郎の日曜天国」を聞く。昨日からテレビの音楽番組だったりで出ずっぱりの安住アナは偉大だと思う。てっきりひたすらリクエスト曲が流れ続ける日になるかと思いきいや、ナチュラルハイな感じがあって面白かった。
ずっと今週読んでるBANK4.0 未来の銀行を読む。本の種類によるのかわからないのだけれどもなかなか読み進められないことが本によって稀にある。翻訳された日本語だと何かしら違う様に受け止めてしまうのか、はたまた読んでいるジャンルによるのか自分でも切り分けできないのだけれども不思議な感覚。
昨日、ふらりと書いた https://github.com/hideack/shutter にheroku button付けた。なるほどこうやってすぐデプロイできるものが提供できるの面白いなぁ。と今更ながら気づく。
晩ごはんは手抜きをして出前を頼んでモヤモヤさま~ずをビール飲みながら見る。ユニコーンの民生さんと川西さん出てて驚く。そのままノーサイド・ゲームへ。いつもの日曜日が過ぎる。
スクリーンショットを取るAPI的なもの - 徒然日記
連休一日目。昨日、どうも心持ちがすっきりしない出来事があり、夜もあまり熟睡できない感もあってすぐ目が覚めてしまい気分を紛らわしたい気持ちになったので久しぶりにいちからコードを書いた。こういうときの自分の解決策は
- プログラムを書く
- 写経をする*1
- 料理を作る
の三択になる。
GitHub - hideack/shutter: puppeteerによるスクリーンショット取得するシンプルなAPIを提供
大した内容ではなく、やってることはpuppeteerを使ってクエリパラメータで渡されたURLのスクリーンショットを撮り、そのPNGを返し、その撮影した内容はファイルキャッシュしてくれるといったものになる。実際に使うにはPaaSにカジュアルにおいて使うことを想定して書いてみた。
これで何ができるのかというと具体的な用途としてはスプレッドシートに書いたURLのスクリーンショットをセル中に差し込むみたいなことができる様になる。世に同様のサービスはいくつもあると思うのだけれどもそれなりの契約の手間だったりコスト感だったりを考えたときに使えるケースもあるのではないかなと思っている。*2
ただ、スプレッドシートでそれなりの数のURLが列挙されている状況でこのスクリーンショット参照用のURLを並べるとそこそこのリクエストが並行してサーバーに飛ぶのでここは使い方次第かもしれない。ちなみにherokuの無料プランだと5行くらいURLを書いた各セルの横にこのスクリーンショットを参照するURLを記載したときは捌けるくらいだった。もっとも、今回の実装、オンザフライ方式*3で本当は多分キューイングして端からスクリーンショットを撮るとかするのが正解なのかなとビールを呑みながら思っていたりする。
他の用途としては例えばSlackのボットにスクリーンショットを撮らせる際に使うみたいなこともできそうだなというのは思ったりした。
コード、こういう書き方がベストなのかさっぱり見当がつかないので、識者の方で気づいたところがあったらコメントもらえると嬉しい。
ロリポップ!マネージドクラウドでFastify
FastifyというオーバーヘッドがExpressに比べて小さいと言われているサーバーをロリポップ!マネージドクラウドで動かしたときのメモ。 www.fastify.io
Fastifyのサンプルで書かれているものを以下のところだけ書き換えた。
待機ポートの指定
- 手元で立ち上げたときは5000番使って環境変数
PORT
があったらこれを利用する様にした - ロリポップ!マネージドクラウドの場合はコントロールパネルに「環境変数の設定と管理」という項目があるので、そこから変数を設定する*1
ホスト名の指定
サーバーをlistenさせるときの記述の第2引数で渡すbind先がデフォルトでは 127.0.0.1
になっているので、これを 0.0.0.0
で明示した。
fastify.listen(PORT, '0.0.0.0', function (err, address) {
上記2点を踏まえて以下の様に書いてデプロイすることで動かすことができた。最初、後者の指定に気づかず数度デプロイして躓いていたので、もしかしたら誰かの役に立つかもしれないのでメモとして残しておく。*2
const fastify = require('fastify')({ logger: true }) const PORT = process.env.PORT || 5000 // Declare a route fastify.get('/ping', function (request, reply) { reply.send({"ping":"pong"}); }); // Run the server! fastify.listen(PORT, '0.0.0.0', function (err, address) { if (err) { fastify.log.error(err) process.exit(1) } fastify.log.info(`server listening on ${address}`) })
2019年6月に読んだ本を振り返る
6月は9冊。
『血族の王: 松下幸之助とナショナルの世紀 (新潮文庫)』(岩瀬達哉)の感想(8レビュー) - ブクログ、以前ここで書いたとおり違う人間像を知ることができてこれもまた真実。
『天才の思考 高畑勲と宮崎駿 (文春新書)』(鈴木敏夫)の感想(3レビュー) - ブクログ、かぐや姫の物語を除く過去公開したスタジオジブリ作品が全て振り返られていて、まさに歴史。映画の作り方の遍歴やマーケティング方法の変遷もしれていろいろな視点で読める本ではないかと思う。