Amazon Comprehend をNode.jsで使う

作りたいアプリケーションがあって、それのために AWS Lambda で APIからPOSTされたテキストを Amazon Comprehendのキーワード抽出にかけてからその結果をDynamoDBに登録する、というコードを書いていた。

AWS SAM でぼちぼち作っていて、DynamoDBへのPOSTはできるようになった。 とりあえず Comprehendを呼ぶ部分のコードだけメモ。

続きを読む

猫の朝帰り

午前中、ベランダへの窓を開けっ放しにしていたところ、気がつくとうちの兄猫である倫太郎が消えていた。

猫と暮らし始めて4年ほど経つけど、一緒に暮らしてわかったことは猫は消えるものであるということだ。

いつぞや玄関の外から猫の鳴き声がするなと思って開けみると、寂しそうに鳴いているのは弟猫の助六だったことがあった。

当たり前だけど猫には玄関のドアは開けられない。助六はドアをすり抜けて外に出て、家に入れなくなくなってしまったのだ。

ドアをすり抜けられるなら同じようにして入ればいいのに、そうしないのが猫のドジなところだと思う。

続きを読む

Amazonアフィリエイト

AmazonProduct Advertising APIを使いたくて調べてみると、いろいろ厄介な条件があることがわかった。

その一つが、アフィリエイトが実際に配置されてエンゲージメントが発生していること。

というわけでアフィリエイトリンクを設置することに。

WAVE 1/144 エンゲージSR3

WAVE 1/144 エンゲージSR3

  • 発売日: 2010/06/30
  • メディア: おもちゃ&ホビー

抜歯

右下の親知らずにできた虫歯を放置しすぎた。 その歯は半分以上歯茎に埋もれた状態だったので行きつけの歯医者では対応できず、病院を紹介され手術することになってしまったのだった。

遡ること2ヶ月ほど前、行きつけの歯医者歯医者からの紹介状を持って病院に行ったのものの、 その日に手術するものだとばかり思ってた自分はいささか拍子抜けした。”手術”というたいそうな響きにビビりつつ、そしてその日はやってきたのだった。

浜松医療センターは台地から少し降りた場所に建った、市内ではかなり規模の大きい病院だ。眺望が開けて建物全体が現れるといつも圧倒される。 周囲に高い建物も無く、青空を背景にそそり立つ姿にウルトラマンのダダが潜伏していた研究所を思い出してしまう。

9:30に手術受付に行ってそこから20分ほど待つ。緊張をスマホで紛らわせつつ過ごす。 10時手前くらいに僕の受付番号302番が呼ばれる。 担当のお姉さんに連れられて患者用のロッカーへ。上着を脱いで手術着を羽織る、下はそのまま。髪を隠す頭巾を被って 電子機器や貴金属を外し、手を消毒して準備完了。 すぐに手術室へ。

大きな自動ドアが開くと絵に描いたような “手術室” 。 既に執刀医や看護師の方が3名ほど待機していて「こんにちは〜」と挨拶される。 中央には手術台。シンプルに横に寝る感じの台なのか。歯医者で使う椅子のようなものを想像していたのだけど、違った。これは手術なのだ。 靴を脱ぎ、手術台に横になる。こうなってしまってはもうどうしようもない。

ここから先は全てシステマティックだった。 二の腕と指先に心電図と血中酸素濃度をモニタリングする機器を取り付ける。映画やドラマでみた「ピッ、ピッ…」という音が鳴り出す。 執刀医から名前、手術内容、所要時間を確認される。 口の部分だけ開いたカバーを顔にかけられ、ライトが点く。看護師の方がなにやら確認事項を読み上げ、全ての準備が整った。 20分ほどの(たぶん)簡単な手術だ。何もかもが滞りなく動いている。

消毒液を含んだガーゼで口の周りと口内を消毒。 その後は麻酔だ。「ちょっとチクっとしますよ〜」と執刀医。「あ、大丈夫です..」と気弱に返す僕。 こちらの動揺を察したのか「歯医者さんでやったことありますよね、あれと同じですよー」と看護師さん。 確かに歯医者でやるのと同じだった。最初チクっときて痛いと感じる間もなくその感覚も消えていく。 手術が始まる。

思ったより力技だ。なんだかよくわからないのもののゴリゴリとやられる。 奥歯を延々と押したり。感覚は残っているので何かが当っている感触はある。それが痛みに届く手前で消える。 血や唾液の混ざったものが喉の手前に溜まる。 視界が塞がれているので寝ているのか起きているのか、夢うつつのような感覚だった。 抜いた箇所を縫合してガーゼを噛まされて終わり。 あっという間だった。 ライトが消え、顔のカバーを外される。いつの間にか頭に被った頭巾も取れていた。 「抜いた歯見ます?持ち帰ることもできますけど」というので、見せてもらった。 思ったより大きい。僕の不摂生でど真ん中に大きく穴が開いてしまったのだけど、それでもなかなか立派な歯だった。

軽く挨拶してから来たときと逆の手順。着替えて終わり。 手術後の注意事項が書かれた紙をもらって手術エリアを後にした。

受付に行って会計を済ませる。¥6,110。1~2万くらいはするのかと思ったけどそういうものなのか。 処方された薬をもらって病院を後にしたのだった。

白十字 FC ガーゼ 10m [一般医療機器]

白十字 FC ガーゼ 10m [一般医療機器]

  • 発売日: 2004/10/04
  • メディア: ヘルスケア&ケア用品

NHKクローズアップ現代+の取材を受けた

いつもEvernoteに日記の下書きを書いているのだけど、日付を見て驚いた。 6/24に取材を受けてつらつらと書き始めていたが内容まとまらないうちに放送も終わって一ヶ月近くが過ぎようとしている!まずい!


浜松市版コロナ対策サイトを構築した関連でNHKクローズアップ現代+の取材を受けた。 テーマは「シビックテック」とのこと。コロナ禍に際して、市井のデベロッパーが行政と強調してテクノロジーでゴニョゴニョ〜って感じのお話になるそう。

取材を受けたのは僕をはじめ今回の浜松版covid19サイトの開発を手伝ってくれた4名ほど。

撮影場所はみんなばらばらで、自宅だったり街なかだったり。僕は職場の自席にて撮影をした。 カメラを向けられることなんてほとんど経験ないのでまぁ緊張したな。結局1時間くらいカメラの前で喋ったのだけど、終わってみると何喋ったか思い出せない。 自分の悪い癖なんだけど、考えながら話をすると(カッコ書き)的なものもすべて口に出してしまうので 編集するの大変だろうなーとか思いながら話していた。 あと、やっぱり取材が終わって数時間経ってから頭の中が整理されて、ああ言えば良かったーと後悔することも多かったな。

まぁなんやかんやあって、撮影終わったあともディレクターの方とチャットでやりとりしたり、コロナ第二波の影響で放送内容が大きく変わったと連絡を受けたり、にぎやかな1~2週間だった。 もともとは僕たちコミュニティについて大きく尺が割かれる予定だったそう。ディレクター氏からも謝られたのだけど、そういうもんだよなーとか思ってたので全く気にしてないです。 それより放送直前までギリギリまで問い合わせが来てたのがおかしかったな、ドタバタなのはどこの業界でも一緒ですね。

放送日がちょうどJAWS-UG浜松やHamamatsu.rbのオンライン勉強会の日程と重なったので、勉強会終了後に懇親会と称して参加者の面々とビデオチャットで繋いでワイワイ鑑賞した。

もともと放送予定だった内容はディレクター氏がWebの記事にまとめてくれた。 よかったらこちらも。

www.nhk.or.jp

VS Code Remote Containers でRuby 2.7の実行環境作り

VSCode Remote Containers が便利と聞いたので試してみました。

www.keisuke69.net

今回はRubyの実行環境を作ります。 RubyのDockerイメージが公式にリリースされているのでそれを使う。

hub.docker.com

作業ディレクトリを作ってDockerfileをtouch。

mkdir ruby27
cd ruby27
touch Dockerfile

Dockerfile

FROM ruby:2.7.1
WORKDIR /usr/src/app

f:id:jacoyutorius:20200611060610p:plain
左下の緑色になっている箇所をクリックするとRemote Containersのメニューが開く

あとは、Remote Containers のメニューから Reopen in Container を開いて From 'Dockerfile を選択。 Terminal => New Terminal でターミナルを開くとDockerコンテナ上のターミナルが開く。

f:id:jacoyutorius:20200611061045p:plain
ターミナルを開いた状態


バージョンを表示しただけでは味気ないので Sinatra を入れてみる。

Remote Containers を起動すると作業ディレクトリ内に.devcontainer というディレクトリができます。 その中のdevcontainer.json にポートフォワーディングするポートNoを追記。Sinatraのデフォルトポートの4567 を指定しています。

f:id:jacoyutorius:20200611061452p:plain
forwardPorts を指定

Remote Containersのメニューを開いて Rebuild Container を選択。 あとはRemote Containersのターミナルから作業してきます。

bundle init
# => Gemfile に `gem 'sinatra'` を追記
bundle install

app.rb

require 'sinatra'

get '/' do
  RUBY_VERSION
end

で、sinatraを起動。

ruby app.rb
root@2c10165ba652:/workspaces/ruby27# ruby app.rb 
/usr/local/bundle/gems/sinatra-2.0.8.1/lib/sinatra/base.rb:1526: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/usr/local/bundle/gems/rack-2.2.2/lib/rack/handler/webrick.rb:26: warning: The called method `run' is defined here
[2020-06-10 21:19:28] INFO  WEBrick 1.6.0
[2020-06-10 21:19:28] INFO  ruby 2.7.1 (2020-03-31) [x86_64-linux]
== Sinatra (v2.0.8.1) has taken the stage on 4567 for development with backup from WEBrick
[2020-06-10 21:19:28] INFO  WEBrick::HTTPServer#start: pid=591 port=4567
127.0.0.1 - - [10/Jun/2020:21:19:31 +0000] "GET / HTTP/1.1" 200 5 0.0080
127.0.0.1 - - [10/Jun/2020:21:19:31 UTC] "GET / HTTP/1.1" 200 5
- -> /

ブラウザから http://localhost:4567/ にアクセスするとこのように表示されているはず。

f:id:jacoyutorius:20200611062059p:plain

以上。

rbenvがあるとはいえ、参照ライブラリによってはビルドがコケたりして新バージョン試すのが億劫だったので、こういうs閉じた環境をかんたんに作れるのは嬉しいですねー。

プログラミング練習用のタイピングアプリを作った

自作キーボード作りにハマって約1年ほど。これまでに3台のキーボードを作ってきた。

けど、実際作ったはいいものの自宅のPC環境の都合もあり、これらのキーボードを使うのはもっぱらネットサーフィンのみで、プログラミングとか開発系の作業には使用していなかった。 で今年に入ってからPC環境を改修してやっとこさ自作キーボードを本格的に使うようになってきたのだ!けども、、、

キー、特に記号の配置が今までのものと全く異なるので、全然コーディングが進まない。

「`」「|」「」「%」「^」「~」とか開発中に頻出する記号の位置が全くわからず。

昨今流行っている自作キーボードは、一般で流通しているキーボードに比べてキー数が少ないものが多い。

今僕が使っているキーボード「Ergo42 Towel」は多いほうではあるものの、それでもキー数が56。 数字キーの行が無いデザインである。 こういう場合、レイヤーという機能を使って足りないキーが打てるように補うのだけど、キー配置を新しく覚える必要があるのに変わりはない。

f:id:jacoyutorius:20200304233357j:plain
年末に作って自宅で使用中の『Ergo42 Towel』

キー配置が自由に変えられるとはいえ、物理的に既存のものと配置が異なるので全く同じに設定することはできないのは見てもらえればわかると思う。 逆に、それぞれのキーボードの設計思想に体を合わせたほうがいい場合が多い。

例えば、↓のように。 EnterとかDeleteとかのファンクション系のキーや、レイヤーを親指でやらせて小指の負担を減らすレイアウトになっている。

f:id:jacoyutorius:20200304232925j:plain
『Claw44』、次作りたいやつ。(画像は遊舎工房のWebサイトより)

まぁとにかく、記号の配置を覚えるためのタイピング練習アプリをVueでザクッと作ってみたのが以下。デプロイはAWS Amplifyで。

https://tytytytytyping.yutoogi.com/

f:id:jacoyutorius:20200304231048j:plain

プログラミングとかの開発作業でよく使うキーを練習するためのアプリなので、「def hello」とか「git add .」とかがタイピング問題として表示される。 いまのところ数件しか問題を用意していないし、結果表示も寂しい感じだけど、まぁとりあえず。。

良さそうなタイピング問題があれば教えて下さい。