ナチュラル @rch850

ナチュラル丼発祥の地、福井からお届けします。技術的な話題とか、雑談とか。デザイン変えました @ 2019/03/13

ふくもく会その51

ふくもく会その51でやったことまとめ。

Glide でふくもく会アプリを作る

Glide でなんか作ったろーと思ってたので、過去のふくもく会のリストを。4つぐらい入力したあたりで、これ手でやる作業じゃないなと思い、Google Apps Script から connpass の API 呼び出してスプレッドシートに転記してみることに。

Rust

時間が余ったので Rust で Hello World しました。それだけ。環境構築は以前 WASI やろうとしたときにできてました。

その他雑談

  • 午前中はだいたい競プロの話をしていました。PG-Battle という企業、学校対抗のコンテストがあるそうです。今年は9月末。ISUCON 本戦の前の週じゃん。
  • DP (動的計画法) 勉強会的なものが催されてました。AtCoderEducational DP Contest というのがあったそうで、それの問題を見ながら。

昨日と今日

昨日の夜は、カッとなって Elixir に手を出してみた。

Getting Started の「1. はじめに」から「4. Pattern matching」まで。= は代入演算子じゃなくてマッチ演算子。味わい深いですね。明日も頑張ろう!と、このときは思っていた。

今日は、昼間に「以前に Amazon Machine Learning で作ったサザエさんじゃんけん予想を SageMaker あたりで作りなおせるかなー」とか考えてたんだけど、気が変わるのは早いもので、AWS Amplify でのホスティングを試してみた。

➜ amplify --help

  █████╗  ██╗    ██╗ ███████╗ 
 ██╔══██╗ ██║    ██║ ██╔════╝ 
 ███████║ ██║ █╗ ██║ ███████╗ 
 ██╔══██║ ██║███╗██║ ╚════██║ 
 ██║  ██║ ╚███╔███╔╝ ███████║ 
 ╚═╝  ╚═╝  ╚══╝╚══╝  ╚══════╝ 

 █████╗  ███╗   ███╗ ██████╗  ██╗      ██╗ ███████╗ ██╗   ██╗
██╔══██╗ ████╗ ████║ ██╔══██╗ ██║      ██║ ██╔════╝ ╚██╗ ██╔╝
███████║ ██╔████╔██║ ██████╔╝ ██║      ██║ █████╗    ╚████╔╝ 
██╔══██║ ██║╚██╔╝██║ ██╔═══╝  ██║      ██║ ██╔══╝     ╚██╔╝  
██║  ██║ ██║ ╚═╝ ██║ ██║      ███████╗ ██║ ██║         ██║   
╚═╝  ╚═╝ ╚═╝     ╚═╝ ╚═╝      ╚══════╝ ╚═╝ ╚═╝         ╚═╝   

かっこE。(みやすさのために改行入れてます)

ホスティングの Getting Started では analytics とやらにデータを送るんだけど、それを見る手段が Amazon Pinpoint でびっくりした。Pinpoint 使ったことないっていうかちょっと記憶にない名前ですね、ごめんなさい。モバイルアプリでの Events とか Funnels とか、要は Analytics 系のもろもろができるみたいです。なんでも AWS で見られるようにしたい!ってときは使うとよさそう。

無事ホスティングできたので、次はまたぜんぜん違うことで遊んでみようと思います。

spacefish にした

ゴマンとある、いや、ゴジュウぐらいか?それぐらいありきたりな話だけど、個人的な作業記録として spacefish にした話を。

spacefish は fish shell 用のプロンプトで awesome-fish の Prompts にもリストアップされているものです。Prompts には5つのプロンプトがリストアップされていて、うち3つが Powerline 系、2つがシンプル系で、spacefish は後者のシンプル系です。なになに系っていうとなんだか🍜が食べたくなるのでこのあたりでやめます。

fish のパッケージ管理には fisher を使っているので、インストールは案内にある通り

fisher add matchai/spacefish

を使いました。これで fishfile にも追記されてゴキゲン。

が、これだけでは絵文字らしきものが豆腐表示(四角)だったので Requirements にある Powerline Fonts を入れました。Powerline 系じゃないけど Powerline Fonts です。あ、また🍜食べたくなってきた。

手順は "On other environments..." に書いてある通り実行しました。

# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts

が、これだけでは(ryだったので、もしや Hyper.js 固有の問題かなと思い、Issue を検索すると、そのものずばりの「For Hyper.app users...」という issue がありました。

そこに書いてある通り Hyper.app の設定で fontFamily"Meslo LG S for Powerline" を追加したら、無事に spacefish らしい画面になりました。

f:id:rch850:20190328003533p:plain
spacefish

めでたしめでたし 🚀

Mashup Summit 2019 と SPRESENSE ハンズオン

今年入ったあたりから、ようやく Scrapbox 多用し始めて、今日もプライベート Scrapbox にガシガシ書いてたんですが、外に出せるものを書いていきますね。

そもそも外に出せるもの、めちゃくちゃツイートしてたのですが、それはそのうち togetter に上がるでしょう。

Mashup Summit 2019

今年もやってきました Mashup Summit 2019

  • 伴野さんの「"オープニングセッション" ~最新IT技術と最新ツクリビト~」改め、MAを通じて見るツクリビト
    • 求める作品像が「作りたいもの、トガったもの、振り切ったもの」と明示されるようになったのはありがたいです。(今日が初出ではない話)
    • いつも出てくるハイプサイクルの話、今回初めてソースを見にいきました
  • SONY 小林さんの「Deep Learningのもたらすゲームチェンジとモノづくり」
  • パネルディスカッション
    • はい、モデレーターでした。
    • 昨年もモデレーターを務めたのですが、その後ある方から「学生、子どもとして接するのはあまりプラスにならないのでは?」といった意見をもらい、それを噛み締めての進行でした。という裏話。
    • 個人的には30分でも1時間でも話を聞いていたかったです。特にパネリスト同士で質問してもらうコーナー。パネリスト同士で自然と盛り上がってもらうのが良い。
  • 金子さんの「Facelot アイデアを包囲せよ」
    • Facelot
    • 消極性、意識決定に興味があるとのことで、個人的に興味があるところに近いなと感じました。僕が日々気にしているのは、アニメ画像が目に入った瞬間の人間は、眉をひそめる人間と、口角が上がる人間の二種類しかいないのではないかということです。無意識の意思表示です。消極的な意思決定とは離れているけど、重なるところがあるような気がする。
    • タイトルの「アイデアを包囲せよ」は、「問題意識のストック」と「技術のストック」で包囲しておくことで、アイデアが作品に昇華していくという意味だったようです。
  • 興梠さんの、作品を作ったら発表するといいぞという話
    • 承認VUI
    • 自分のために作った VUI ということで、自分が年末に取り組んだ Google Home でのゴミ分別に重なるところがありました。
    • 俺得俺得という語彙力無い状態から、VUI の良さを言語化して他人に説明できるようになったというのは、作って発表した成果なんでしょうね。
  • 山本大策さんの「MAKE 〜開発者にとっての「ものづくり」の意義とは」
    • 昨年の FESTA での発表のだいたい再演(当時の資料)。資料は当時と少し違っていました。
    • (個人的に)大事なことは、この2枚のスライドに詰まってる。たしか MA7 あたりのポスターの一言「あなたの中のエンジニア、眠っていませんか?」と通じるものがある。
    • f:id:rch850:20190317010731p:plain
      充実感のある働き方
    • f:id:rch850:20190317010512p:plain
      開発者としての生きがい

以上、最後の2枚だけでもお腹いっぱいなイベントでした。

SPRESENSE ハンズオン

Mashup Summit が午後で、午前中に SPRESENSE ハンズオンがありました。

このツイートから導入、ハンズオンの流れは追えるので、これをもって発表と変えさせていただきます。

以上、3月16日のイベント参加レポートでした。

Scrapbox に web-design-clipping を作った

最近、ウェブデザインのことを考えることが多くて、他者の事例をまとめておきたいなと思うようになりました。

どうやってまとめたものかなと考えた結果、web-design-clipping という Scrapbox を作って色々入れてみることにしました。

なんか見てるだけでも楽しいぞこれ。

  • MicroInteraction とか Skeleton とかタグ振って貼り付けてます
  • 動画は GIF に変換してから貼り付けてます。
    • ffmpeg -i screenshot.mov -vf fps=fps=30 screenshot.gif
    • ffmpeg -i screenshot.mov -vf fps=fps=30:w=iw/2:-1 screenshot.gif (大きすぎて半分にスケールするとき)

こう見てみると、一言にデザインといっても、画面全体よりはパーツのことを考えているなと思いました。

なんかうまいまとめ方が分かりませんが、気が向いたら上げていこうかと。

なぜ Scrapbox

あるスクリーンショットについて、複数の側面から見ることができます。

  • どのサイトのものか
  • どういう用途のものか
  • どういうキーワードで語られるか

これらについてタグ付けをして、まとめて見たいと考えていたので、Scrapbox を選びました。便利です。ありがとう Scrapbox

コミュニケーション手段何がいいかって話のメモ

高専カンファレンスのコミュニケーション手段が ML しかなくて、他に何がいいかって話をした時のメモ。Discord あまり使ってなくて万能なんだろうと思い込んでたんですが、Slack と比べて困るところが少しあると聞けて有益でした。自分が Discord 使うのって、ISUCON での連絡手段ぐらいなんですよね。

Slack:

  • ワークスペースごとにプロフィールを変えられて良い
    • Discord の話の裏返しです

Discord:

  • 新しいサーバに入るのにアカウント作らなくていいから楽
  • 全部のサーバでプロフィールが共通だから、あるサーバでネタが通じるアイコンでも他サーバでは謎ってことが起きる
    • 個人的に全く意識したことがなかったので、なるほどオブ・ザ・デーでした
  • スレッド無いのがつらい

Gitter:

  • 「「「知らない」」」
  • ログインしなくても会話が見える
  • 日本語対応してない!

Gitter 話しても分かってくれる人少なくて寂しいです。GitLab が買収した時にちょっと話題には上がったと思うんだけど。でも日本語対応してないのはネックですね。

M5StackからAITalkを呼び出してしゃべらせる

引き続き M5Stack ネタです。

先日の MA 作業回で AITalk Web API を試用させてもらえることになったし、せっかくだから M5Stack にしゃべらせてみるかーということで、やってみました。

あっさり簡単そうに書きましたけど、そこそこつまづきながら、なんとかしゃべらせるところまでたどり着きました。

  • M5Stack のサンプルには PlayMP3FronSDToDAC など、ストレージからの読み出ししかなく、HTTP 経由で取得するサンプルが見当たらない。
  • StreamMP3FromHTTP がそれっぽいと思いきや、微妙に違っていて、それが分からずしばらく詰まる。
    • このサンプルが使っているのは AudioFileSourceICYStream だが、これはストリーミング再生用らしく、普通に MP3 を取得するなら AudioFileSourceHTTPStream を使う。
    • このサンプルが使っているのは AudioOutputI2SNoDAC だが、M5Stack では AudioOutputI2S を使う。使い方は PlayMP3... のサンプルのほうにある。
  • この違いに気づかずに、さては MP3 がだめで AAC なら行けるのかと勘違いし、余計に迷い込んでしまう。違いに気づいて直してもうまく再生されなくて、もしかして MP3 に戻せばいいのかと試してみたら再生された。

ソースはこちら: M5Stack-sandbox/AITalk.ino at master · rch850/M5Stack-sandbox

ちなみにテキスト表示をセンタリングするのに M5.Lcd.setTextDatum(MC_DATUM) を使ってます。これを見つけるまでの流れは

  • M5.Lcd で使えるいい感じの関数を探しに M5Stack.h を眺める
  • LcdM5Display クラスとなっているので M5Display.h を眺める
  • M5Display クラスは TFT_eSPI クラスを継承しているので In_eSPI を眺める
  • drawCentreString という気になる名前の関数が見つかったが Deprecated, use setTextDatum() and drawString() と書かれている

という流れで、setTextDatum でセンタリングできそうだという事が分かったわけです。他にも M5.Lcd で使える色々な関数が In_eSPI にあったので、どんどん使っていきたいところです。