よもやま話β版

よもやま話を書きます。内容はぺらぺら。自由に書く。

RubyKaigi2023備忘録

松本で開催されたRubyKaigi2023に参加しました。 現地でお世話になったみなさま、ありがとうございました!!! 自分もせっかくブログがあるからという理由で備忘録を書きます。 隙間時間で書いてたら遅筆もあって1週間以上経ってました。光陰矢の如し。

Day0 夕方着・宿泊

松本には前乗りしましたが、猫様の様子をギリギリまでみたかった、荷造りをギリギリまで引き伸ばした(ズボラ)などの都合により夕方の到着となりました。松本駅にRubyKaigi歓迎の幕がかかっていてとても感動したとともに、松本に集まりつつあるRubyistたちを炙り出すためのリトマス紙になっていて面白かったです。一般の方は特に気にも留めずに歩き去る傍ら、足をとめて写真を撮ったり「おっ、すごい」と思わず声を漏らしてしまう人はRubyistだな〜と思っていました。そんな自分ももちろん写真を撮らざるを得なかったのでした。

松本駅にかかったRubyKaigi歓迎の垂れ幕1
わ〜すごい

松本駅にかかったRubyKaigi歓迎の垂れ幕2
垂れ幕!

宿泊先として今回はエモリハウスにお世話になりました! 初日から最終日まで、エモリハウスのメンバーのみなさまのおかげで楽しく・快適に過ごすことができました。感謝…🙏

https://emori.house/

自分はコロナ禍以降、習慣的にラジオ体操をしているのですが、一緒にしてもらったりしました! 📻 ありがとうございました!

エモリハウスTシャツ、かわいい〜

参加方針を決めておいた

過去の京都(2016)、オンライン(2020,2021) を体験して思ったこととして、「全部知りた〜い!」と思っていると個人的にかなり大変な気持ちになってしまうという気付きがありました。そのため、今回は「全部聞けなくてもいいや!」精神でのぞみました。また、平日木/金はどーーーしてもtodoが発生しがちなので、心がもやもやしてるよりもサッと済ませてスッキリした気持ちでセッションを聴くことにしました。個人的な精神衛生上、この作戦はかなりよかったです。同様の問題として、全部記録したい vs レポート的なものを書くのが苦手なのでしんどい、ということがあったのですが、記録感想をさっぱりとした箇条書きにするということで解決ということにしました。まぁ具体の内容については、こんな辺鄙なチラ裏ブログよりも、公式が例年用意してくださっているアーカイブビデオ( 感謝…! )がこれから公開されたり、英語とRubyの理解度が深い方がまとめてくださったりしているので、そちらをご覧いただくとよいのではないかと思います。あらかじめよろしくお願いいたします。

Day1

会場は松本駅から15分程度のところにある「まつもと市民芸術館」でした。旗とか階段とかがRuby一色に装飾されていて、改めて感動しました。

RubyKaigi2023ロゴの旗

圧巻の階段

Matz Keynote

  • Rubyの歩みを世界的事件をおりまぜながら振り返っていくお話だった
  • joy というキーワードがたくさん出てきたように感じて印象的、Rubyはたのしい〜
  • 型を書かない話を聞くことができて「あ〜RubyKaigiに来た〜!」と思いました。I'm flat earth believer.

ハックスペース (by Helpfeelさま)

参加直後からTODOが発生してしまい、早くも1日目から 4F ハックスペースのお世話になりました。 畳と机と座布団と電源、そして目の前に芝生と遠くに見える山々。最高の作業環境でした。Helpfeelさま、ありがとうございました〜! 恥ずかしながら Scrapbox の運営会社さまということを今回初めて知りました、お世話になっております 🙏 ※このあと Day2, 3 も電源難民になりお世話になりました。感謝。

芝生エリア よかった…

UTF-8 is coming to mruby/c

  • UTF-8 が先頭bitで全体のbyteを示す、などの仕様を初めて知りました
  • sizeとかのメソッドが思った通りに動くのは、こういう着眼点でcommitを重ねていってくれている方々のおかげなんだなぁとしみじみ思いました
  • unicode code points、grapheme cluster、なるほど 📝

DIY Your Touchpad Experience: Building Your Own Gestures

  • Environment Improvement Geek #=> "環境改善オタク"
  • 30分前に新しいプラグインを2つリリース(!?) → thumbsense, remapper
  • 自分で使うツールを自分の手で作ってさらに楽しい! ってサイコーですね!

Lightning Talks

  • Building Ruby Native Extention using RubyRubyでCompiler作る、サポートする/しないを割り切って作るというのは動かす時にとても大事だなと。Nice Demo!
  • RBS meets LLMs - Type inference using LLM|Matzと被ったというツイートをお見かけしておりました…! でも新しい手段としてめっちゃ面白いですね。鍛え甲斐がありそう。
  • Customize your Vim/Neovim directly with Ruby|自分もVimめっちゃ好きなのですがこんなことができるんですか!なるほど https://github.com/okuramasafumi/rspec-current.vim
  • mruby VM|まさかのMatzによる優しい CRuby と MRuby の話、Matzトークおかわりできるのは単純に素晴らしい。
  • Natsukantou the XML translator|ゼリーの例など、やわらかい感じの図が理解のために助かりました。これか https://gitlab.com/lulalala/natsukantou
  • BINGO! | 社長の重要な仕事(くじ引き)をするためのWebビンゴカードをRubyで作った、そのためにもwasmやstack問題の対応など学びが色々あったとのこと、良いな〜。
  • Adding custom rule for Rubocop in the 2 month of employment | やりたいことを周りに言うと叶う、というのがとても素晴らしかったです…!
  • Unexplored Region - parse.y - | 「世はまさにparser時代」面白すぎました。parse.yについてチョットワカリました(すみません嘘ですムズカシイです)
  • Ultra-fast test-driven developmentrspec-daemon チョーハヤイ、サイコー!! 使ってみたいと思います。速いは正義。
  • Optimizing Ruby’s Memory Layout: Variable Width Allocation|メモリのスピードアップ、一利用者としてありがたいの一言です。頭の良い人に助けてもらって生活している…。
  • Dividing and Managing: The Cops Squad of RuboCop RSpec Dept | gemへ切り出されているのすごく助かります。後方互換性など考えていてもらい感謝!! ​- Serverless IdP for small team | RubyKaigiで活用されているものがOSSとして公開されてるの素晴らしい〜。会場Wi-Fiとても助かりました! 本当にありがとう!!

Official Party

ポスターデザインかわいい〜

ホテルの宴会場に大量にいるRubyistたちが圧巻でした。 自分はFjordBootCamp( https://bootcamp.fjord.jp/ )のメンター業をさせていただいているのですが、普段オンライン上でやりとりさせていただいている他のメンターのみなさん、受講生のみなさんと始めてオフラインでお会いできてなんだか感動しました。( あっ…これってある意味オフ会というやつか…!? ) 特に受講生の方からは自分のコメントが励みになったと言ってくださる方もいて、とても嬉しかったです。引き続きがんばっていきたいと思います! 他にも久しぶりに会う知り合い・お世話になった方が元気そうにしている姿を見ることができて、コロナ禍を経てということもあり、なんだか in-person の大切さをひときわ実感した時間でした。
最近VlogPodcastの視聴にハマっている身としては、生やんちゃさん( やんちゃクラブ - YouTube ) や 生じゅーんさん ( ‎Apple Podcast内のキマグレエフエム、そしてお久しぶりでした、お元気そうでなにより〜!) とお会いできて嬉しかったです。

Day2

How resolve Gem dependencies in your code?

  • specification の複雑さによるバグのお話でした(という理解)
  • specification の派生クラスがたくさんあってワァ…ァ…ッてなっちゃったな…。
  • --conservative オプション 知見! 勉強になりました

The Resurrection of the Fast Parallel Test Runner

  • 「まず金を手にいれる」 くっ…確かに…! 本質はもっと別のところにありますね
  • Rails6〜7、テストの数が50超えるとパラレルでやってくれる、というのは知りませんでした
  • 遅いテストはモデルの責務が大きすぎるかも、見直しのきっかけになるかもしれない、なるほど

Reading and improving Pattern Matching in Ruby

  • つじもとさんが素晴らしい
  • そこにチャンスがあれば、機能をちょっとだけ良くできる
  • 何気なく使っているパターンマッチングの裏側について、図を拝見しつつ聞けたので勉強になりました!

Tips and Tricks for working in the MRI Codebase

  • bug解決の例をとって、CRubyの深掘り方を丁寧に教えてもらえました
  • たぶんちゃんと順を追って手を動かすと実際に試してみれそうなレベル感、とてもありがたい
  • 便利TIPS: https://gem.wtf/gem_name にアクセスするとそのgemのリポジトリにリダイレクトされる

Optimizing YJIT’s Performance, from Inception to Production

  • YJIT Project として目標だけではなく捨てることも明示されていて、地に足をついてやってくれていることがめちゃわかる、すごい
  • 関わるメンバーの紹介からも、Shopifyさんの本気度が伺えた、すごい
  • ( 頭文字Dがお好きなのかしら… 🤔 )

夜ご飯

WNB.rb ( https://www.wnb-rb.dev/ ) の方と、エモリハウスメンバーでの夜ご飯が発生してたので参加! しかし、英語に自信がなく、上手くコミュニケーションを取っていけなかったので、反省のある一夜でした。 せっかくその日に聞いたセッションの発表者がお二人も参加されていたのに、テンパってしまって全くもって感想をお伝えできなかったのが心残りです。英語勉強しようと強く思いました。 コミュニケーション面で諸々助けてくれたMishに感謝します! ありがとう!! ❤

これはいつの間にか撮られていた食い意地がはっている瞬間の自分

Day3

Ruby Committers and The World

正直なところ英語のリスニングがてんでダメなので、字幕とTwitterの翻訳ツイートに大変助けられました。感謝…! 話題はこんな感じでした → YJIT, Garbage Collection, Parsing, (topic)継続についてのcommunity design, Types, Threading, Miscellaneous, Other Ruby Implementations(TruffleRuby,etc), Regex Optimizations(ReDoS), 型注釈コメントについて(discussion)

Ruby Committers and The Worldの様子

Build Your Own SQLite3

  • 読み方問題(自分は "エスキューライト" 派です)
  • SQLiteマイコン上で動くのはいろんな世界が広がりそうですね
  • 応用のkeymap、HJKL( vim でよく使うcursor key )が主要地を占めてしまった とのこと…なるほどな〜

Ruby vs Kickboxer - the state of MRuby, JRuby and CRuby

  • 絶対面白いでしょと思って拝見しましたが実際面白かったです
  • 「拍手してください」「デモを見たい人はいますか?」(機械音声) が事前に用意されていた
  • チャレンジの中でできたこと、できなかったことがまとめられていてよかった! 遠近法デモ最高でした! ​

Ruby JIT Hacking Guide

Rethinking Strings

  • TruffleRuby 10th anniversary! 🎉
  • TruffleRuby での String の拡張を "Rope" と呼ぶ、という認識 (理解不足かも)
  • String.new #=> ASCII-8BIT「''」は UTF-8 、ゆえに String.new != '' ということらしい、なるほど〜

Parsing RBS

  • 普段意識してなかったけど、木構造とかに知らず知らずに助けられているんだなぁ (あんまり普段、仕事では使わないので…)
  • ひとつひとつの壁を解決して今があるんだな〜。ありがたい!
  • 最後に出てきた過去との差分がすごい、進化だ

After Party (Sponsored by STORES, Inc.)

最後のセッションを見る直前にチェックした時は補欠だったので、まぁ無理かな〜と思っていたところ、宿泊所に帰ってチェックしたら超ギリギリで繰り上がっていたので慌てて飛び込み参加させていただきました。ビル1階のフロア全体が飲み屋さんになってるところが貸し切られていて、Rubyistがたくさんひしめきあってるのが圧巻でした。京都の時にお世話になった台湾の方とも思いがけず再会でき、ご挨拶できて良かったです。お互いに人間としての顔は実はあんまり覚えてなかったのですが、名札のアカウント名で気付けたので、名札効果のすごさを実感しました。

RubyMusicMixin 2023 (Sponsored by pixiv Inc.)

自分はこれまでの人生で「クラブイベント」なるものに行った覚えがなかったのでちょっとソワソワしながら入場。DJうなすけ氏に事前にHowToを求めておいたところ「楽しめばオッケー」なる回答をいただいたので、とりあえず勢いじゃ、と思ってDJブースから2〜3列目のあたりで揺れてみました。元々音楽は好きなので、すごく楽しかったです! うなすけくんDJ → オブレゴニアさんDJ を通して揺れてたら、完全に体力を使い果たしました。踊ってる人たち、すごい。After Partyでそこそこ食べたと思うのですが、食べた分のカロリーを使い果たした気がします。kickboxing の発表のお二人もいたので、発表すごく良かったですと叫んでみましたが、マスク越しだったし音楽もあったのでたぶん聞こえなかっただろうな…😅

Events

スポンサーブースのスタンプラリー

スポンサーブースを回るスタンプラリーがありました。順番に回るというより、セッションの合間や部屋に入り損ねたタイミングでランダムにウロウロして、ノベルティやスタンプを貰いました。

ノベルティ多すぎでは??? (ありがとうございます!)

机に乗り切らなかったステッカーもいっぱい。スポンサーブース以外で貰ったものもある。

スタンプを全部集めると、特製ピンバッジが貰えました。デザインがまさかの5種類あり、かなり悩みましたが、林檎ロゴのものが大変カワイかったので持ち帰らせていただきました。

スポンサーブーススタンプラリー台紙と特典のピンバッヂ
スポンサーのみなさまありがとうございました〜! & りんごRubyピンバッヂ本当にかわいい

Rubyist Book Authors Stamp Rally

技術本の著者にハンコをもらう #authorsrb のイベントもありました。なかなか広い会場でAuthorのみなさんにお会いするのが難しく、ハンコはコンプリートできませんでしたが、4つのノルマは達成して素敵なユウちゃんの付箋をもらうことができました。また、いくつか購入書籍にサインを入れてもらいました✍️ 本当は「研鑽Rubyプログラミング」も現地販売されていたので購入を狙っていたのですが、一手及ばず完売となっておりました。改めて物理本を買ったので、完全読了した上で、またどこかの機会でサインいただきに突撃できるようにしたいと思います!

Authorsrbスタンプラリー台紙

はじめてつくるWebアプリケーション 〜Ruby on Railsでプログラミングへの第一歩を踏み出そう

宿泊先のエモリハウスの家主・江森さんと、やださん、こばちえさんの新刊! ちょっとフライングして、早めにサインをいただいてしまいました✨

やった〜! 1✌️

ブラウザのスクショがたくさん掲載されていて、初学者の方にとって「ちゃんと自分が進めているかどうか」がとても分かりやすい構成になっていて素敵です。自分がFBCでアドバイスする時の参考にさせていただきます! インストールのところも WindowsmacOS それぞれの説明が載っていてとても丁寧…助かる…!

はじめてつくるWebアプリケーション 〜Ruby on Railsでプログラミングへの第一歩を踏み出そう | 江森 真由美, やだ けいこ, 小林 智恵 |本 | 通販 | Amazon

ユウと魔法のプログラミング・ノート

ユウと魔法のプログラミングノートにサインをいただきました!
やった〜! 2✌️

「ルビィのぼうけん」シリーズの訳者である鳥井さんが今回刊行された「ユウと魔法のプログラミングノート」、先行販売本をゲット&サインもいただきました! ユウちゃんの日常がプログラミングによって少しずつ進化していく様子が素敵でした。また、ゼロ英語かつ、プログラミングに必要な概念(変数、入力/出力、真偽、配列etc…盛りだくさんだ)が自然と織り交ぜられていて、ここを出発点にどの言語に向かっても通用するお話になっていると感じました。会社にちょうど適齢(小学校高学年)のお子さんがいるメンバーも多いので、おすすめしていきたいです。 あとこれは物理本でしか味わえない感動なのですが、なんとカバー下が…! うわ〜〜〜素敵〜〜〜!!! 📖

ユウと魔法のプログラミング・ノート (O’REILLY KIDS) | 鳥井 雪, 鶴谷 香央理, 打浪 文子 |本 | 通販 | Amazon

RubyRailsの学習ガイド2023

RubyとRailsの学習ガイド2023にサインをいただきました!
やった〜! 3✌️

いがいがさんからもサインいただきました! こちらの学習ガイドは「旅のガイドブック」ということで、RubyRailsに収まらず、関連書籍/DB/HTTP(S)/Gitなど、一通りの知識が網羅されています。しかも2023年版ということで、発売されたばかりの上記2冊の名前もすでに掲載されていました。あ、圧倒的速さッ…!!! 「ゼロからわかる Ruby 超入門」のキャラクターも描かれているべこさんの素敵な表紙・旅マップが、内容のガチさとのうまい中和剤(?)になっているため"カワイイ"寄りの印象が強い冊子ですが、内容は網羅性・説明内容ともにスゴいです。流石いがいが先生〜! ありがたい〜! 残念ながら一般流通してないと思うのでRuby超入門のリンクを載せます。Ruby超入門は初学者の方に説明する上でたくさん引用させていただいたりしていて、とても重宝しております! いつもありがとうございます!

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座) | 五十嵐 邦明, 松岡 浩平 |本 | 通販 | Amazon

ご飯・観光の話(後日別記事)

松本のグルメをもちろん堪能してきたのですが、すでにここまでで文字を書くパワーが欠け気味なので、後日あらためて旅の備忘録をつけたいと思います。美味しかったな…!

kaigieffect

今回の参加の課題として、(いや毎回思うことでもあるのですが、) 英語力がマジでピンチだなと痛感しました。RubyMusicMixinで大倉さんから英語に関するアドバイスを伺って、まず第一歩と思ってDuolingoを続けてみています。9日目で「そろそろログインするか〜(※ズボラが災いして未ログイン状態で続けていた)」と考えてアカウント登録したところ、N年前に作った過去アカウントが復旧扱いになったために連続学習記録がリセットされてしまいました。うぉぉ…つら…でもめげないッ…! 今日からまたやります。あとラジオ英会話も聴こうと思います。あれはラジオ体操(NHK第1・6:30〜6:40)の後に開始する(NHK第2・6:45〜7:00)ので、ラジオ体操とセットでやっていけばなんとか習慣化できませんかね…まぁちょっとやってみて考えよう…。

また、来年の沖縄開催、そしてその前に秋に島根でRubyWorld Conference がありますね。20代の頃はお家にこもってるのが大好きだったので、あんまりどこにもいかなかったのですが、30代を迎えて思うところとしては、元気があって身の回りの社会が平和なうちに、まぁ人生何が起こるかわからないという意味も含め、行けるチャンスは行っとくべきかな…と考え始めたところです。島根、Rubyの聖地だけど、まだ巡礼してないしな。しときたいな。予定と予算の調整できるかな…!?

さらにその前に Kaigi on Rails もありますね!自分は Rails にとてもお仕事でお世話になっているのもあり、楽しみです〜。

おっと、そうだ、ハンダゴテやらハンダやらの注文をせねばならなかった。いただいたコレを組み立てなければなので。

数量限定配布されたキーボード基盤
これが噂の沼の入り口か…。

学生の時に実際基盤を見つめすぎて手元がおろそかになり、人差し指と親指に水玉模様の水ぶくれをこさえたことがある身としては、今度は誤らぬように細心の注意を払っていきたいと思います。

や〜〜〜 RubyKaigi 2023、楽しかったです!ありがとうございました〜〜〜!!! 👏👏👏

RailsGirlsTokyo 15th

先日実施された RailsGirlsTokyo15th (2023/04/07-08) に、コーチとして参加しました!久しぶりのオフラインイベント、とても楽しかったです〜🌸

railsgirls.org

担当させていただいたミモザチームは、同チームコーチ陣のパワー、そして参加してくれたGirlsの方が元々学習をされていたということもあり、かなりスムーズな進捗で目標のRailsアプリデプロイまでを完了できました。yay! 🎉

また、LT発表の時間をいただけたので、色んなNextStepがあるよというのを(すでにスポンサーLTで案内がたくさんあったのでN番煎じというところではありますが)ご紹介させていただきました。松田さんからも同様のお話しがありましたが、コミュニティは新しい人が入ってきてくれるというのがとても大事なので、また他の集まりでぜひGirlsのみなさんとお会いしたいです!

speakerdeck.com

LTで紹介したデイリーポータルZの記事。めっちゃ好き…。

dailyportalz.jp

↑ かなり前(2015年)のお話ですが、この時から Rubyist のマインドが変わってないの、ステキだな〜と改めて思いました。enjoy programming!

初心者がはじめる Raspberry Pi 4B (3) OpenCVの導入

次の目標として、ラズパイでカメラを扱ってみたい。そのためはOpenCVが必要らしい。 参考: ラズパイにOpenCVをインストールして、画像・カメラ表示、文字・図形描画

インストール

諸々進めていく。ラズパイでは「LXPanel」が、macでいうターミナルということになる。操作( ls, cd, mkdir, ほか)については割愛するが、このへんがわからない方はopencv導入前にもうひとつ学習の山がありそうだ。*1

$ sudo apt install -y libatlas-base-dev
$ pip install numpy --upgrade
$ pip install opencv-python==4.6.0.66

※欲張ってopencv-python の最新4.7.0.72 (2023/02/23)を入れようとしてみたが、インストール中に止まったまま20分経過したので流石に終了させた。4.6.0.66は一瞬で入った。そういうこともある。

念の為環境をおさらいする。

$ uname -a
Linux raspberrypi 5.15.84-v7l+ #1613 SMP Thu Jan 5 12:01:26 GMT 2023 armv7l GNU/Linux
11:31

$ dpkg -l | grep libatlas-base-dev
ii  libatlas-base-dev:armhf                3.10.3-10+rpi1                   armhf        Automatically Tuned Linear Algebra Software, generic static
11:32

$ pip list | grep numpy
numpy             1.24.2

$ python
Python 3.9.2 (default, Mar 12 2021, 04:06:34)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2._version_
'4.6.0'

画像の表示

作業用ディレクトリ ~/dev/opencv_showimg の中に、以下を準備し、実行した。

  • サンプル画像 sample01.jpeg
  • プログラムファイル showimg.py
# showimg.py
import cv2

img = cv2.imread("sample01.jpeg")
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

これを保存して、こうじゃい

$ pwd
/home/betachelsea/dev/opencv_showimg

$ ls
sample01.jpeg  showimg.py

$ python showimg.py

動いた! ウワ デカイ…

ディスプレイ一杯に展開されるウチの猫様のおみ足

※元画像はこう↓

子猫の時点ですでに野生の欠片も無い。

画像サイズはともあれ、表示はできたので今回はこの辺で。

TIPS・スクリーンショットの保存先

PrintScrボタンで撮れるスクリーンショット画像について、調べると /home/pi に保存されるとあって一生懸命「pi」フォルダを探していたが、「pi」フォルダは存在せず、いわゆるユーザー名フォルダのことを指していた。ラズパイ初心者なので、こういう機微がまだ分かっていない…。勉強になった。

*1:そもそもコマンドラインなどを知ってるひとでないと、こういう遊びに手を出さない、という説はある…。

SwitchBot ハブミニをconsoleから動かす(v1.0)

目標: 電灯のON/OFFをやってみたい。

APIはv1.1があります! (2023年10月時点)

beta-chelsea.hatenadiary.jp

参考

すみません、基本的に下記見ていただいた方がよいです!二番煎じです!

SwitchBot アプリの開発者用トークンを得る

SwitchBotのアプリを立ち上げて、プロフィール > 設定 > アプリバージョンを10回タップすると「開発者向けオプション」が表示され、そこからトークンを取得できる。

アプリ画面のスクショ
普段は隠れてるけどバージョン情報を連続10回タップすると出てくる

curlでデータを取ってみる

トークンを使ってcurlで尋ねると、jsonが返ってきました。

# MY_TOKENには取得したトークンを挿入する
$ curl -H 'Authorization:MY_TOKEN' https://api.switch-bot.com/v1.0/devices

{
  "statusCode": 100,
  "body": {
    "deviceList": [
      {
        "deviceId": "******",
        "deviceName": "ハブミニ AD",
        "deviceType": "Hub Mini",
        "hubDeviceId": "000000000000"
      }
    ],
    "infraredRemoteList": [
      {
        "deviceId": "02-LIGHT-DEVISEID",
        "deviceName": "電気",
        "remoteType": "Light",
        "hubDeviceId": "************"
      }
    ]
  },
  "message": "success"
}

deviseIdを使ってPOSTする

電気のON/OFFをしたいので、remoteTypeが Lightの項目の deviseId を使用して POST を送ってみる。

# 点灯
$ curl --request POST "https://api.switch-bot.com/v1.0/devices/02-LIGHT-DEVISEID/commands" \
--header "Authorization: MY_TOKEN" \
--header "Content-Type: application/json; charset=utf8" \
--data-raw '{ "command": "turnOn", "commandType": "command" }'

# 消灯
$ curl --request POST "https://api.switch-bot.com/v1.0/devices/02-LIGHT-DEVISEID/commands" \
--header "Authorization: MY_TOKEN" \
--header "Content-Type: application/json; charset=utf8" \
--data-raw '{ "command": "turnOff", "commandType": "command" }'

無事動いた。

commandについて

GitHubに書いてあるAPIを見て確認できる。 SwitchBotハブミニについては、 Command set for virtual infrared remote devices の項目を見ると良いらしい。

OpenWonderLabs/SwitchBotAPI: SwitchBot Open API Documents

  • turnOn → 全ての家電製品に対するON
  • turnOff → 全ての家電製品に対するOFF
  • brightnessUp → Light のデバイスの明るさを上げる
  • brightnessDown → Light のデバイスの明るさを下げる

とりあえず動いた!

初心者がはじめる Raspberry Pi 4B (2) 再セットアップ

亀の歩みでやっていくぞ。続き。

前: 初心者がはじめる Raspberry Pi 4B (1) - よもやま話β版

microSDカードを再セットアップする

参考: ラズパイ初心者がRaspberry Pi 4 Model BのOSを不注意で起動不良としてしまったので復旧させた話 | DevelopersIO

動かない理由は、microSDカードのRaspberry Pi OSがダメになっていると判断し、上記を参考に再セットアップを試みます。

microSDカードをMacBookにマウント

さあやるぞと思ったときに、MacBookmicroSDカードを接続する手段が無いことに気づいたが、キット(TRASKIT)の中をよくよく確認するとType-C Card Readerが同梱されていることに気付いた。初心者あるあるを救ってくれるキット、購入してよかった…。

microSDカードとカードリーダー
救われましたありがとう

ちゃんとPCに認識された

Raspberry Pi Imager をインストール

https://www.raspberrypi.org/software/

Download for macOS から.dmgをダウンロードして実行。(v1.7.4)

削除

  • OSを選ぶ > 削除(カードをFAT32でフォーマットする)
  • ストレージを選ぶ > 刺したカードを選択
  • 「書き込む」を押す
  • 全部消えるけど本当に続けますか?と聞かれるので はい を選択
  • 体感3秒くらいで完了

書き込み

  • OSを選ぶ > RASPBERRY PI OS (32-BIT)
  • ストレージを選ぶ > 刺したカードを選択
  • 「書き込む」を押す
  • 全部消えるけど本当に続けますか?と聞かれるので はい を選択
  • しばらく待つ。書き込み後に確認も走っていた。17分かかった。

再度OSを確認したい(まだ組み立てはしない)

改めてmicroSD、ディスプレイ、マウス/キーボードのレシーバ(USB)、電源(OFF状態)を差した。

ラズパイ基盤(表)

ラズパイ基盤(裏)
microSDは裏側からこんな感じに挿す

スイッチON!!!

ラズパイOS画面が点灯したディスプレイ

表示された!!! 表示されるまで十数秒程度のラグがありましたが、じっと我慢して待つのが正解なようです。 操作にはやっぱりキーボードとマウスが必須でした。買っておいてよかった。

ロジクールのUSB無線でつなぐやつ

Amazon | ロジクール マウス キーボード セット MK245nBK 無線 ワイヤレス コンボ ソリッドブラック MK245 国内正規品 | Logicool(ロジクール) | 家電&カメラ

その後、ちゃんと初期のログイン操作を終えて、GUIのメニューからシャットダウンしました。 起動中に点滅していた緑色のランプが完全に消えたのをみてから電源を落としました。赤色のランプは電源を落とすまで点いたままでした。 不意の電源断はNG、覚えました。

余談・空冷ファンの違い(わからない)

左右に並んだ空冷ファンのパーツ
右側が青く光るほう

散々睨めっこしましたがあんまりわかりませんでした。強いて言えば、青色LEDで光る方が、隙間から見える基盤色がやや明るい緑な気がしましたが、サンプル数1なので関係ないかもしれません。 サイゼの間違い探しと同じくらい強い。接続して点灯するかどうかチェックした方が早そうです。

次の目標としては、自宅にSwitchBotハブミニがあるので、それと繋げてみたいと思います。

初心者がはじめる Raspberry Pi 4B (1) 購入した

ふと思い立つことがあり、Raspberry Pi (ラズパイ)を触ってみることにしました。

ひとくちにラズパイと言えど、購入にあたって色々と調べる部分があったので備忘録しておきます。

まとめ

  • 【※重要】結局まだ動かせてない
  • ケース組み立て前に動作確認したほうがいい
  • USBキーボードとマウス買っておこう

バージョン

Raspberry Pi を購入しようとすると、色々種類があって困りました。ざっくりいくつか調べました。

  • Raspberry Pi Pico
    • 小さいし安い、代わりに色々付いてない。Linux OS が入らない。電子工作向けらしい。小さいほうが玄人向け、よくある話ですね。
  • Raspberry Pi Zero
    • こちらも低価格帯で小さく、何かするならハンダ付けしてねという感じらしい。さらにWi-Fi付き(W)、ピンヘッダー付き(H) とかもあるらしい。
  • Raspberry Pi 4 Model B
    • 2019年6月販売開始のもの。2023年02月現在時点、スタンダードな「ラズパイ」のラインナップの中では、これが最新モデルの様子。

今回、やりたいこととしてはOpenCVを使って画像処理とかをしてみたかったので、電子工作のラインナップよりもスタンダードなところで Raspberry Pi 4 Model B を調達することにしました。ちなみに名前が長いため、いろんなところで 4B と略されているようです。

何を買うか?

こちとら超初心者、基盤だけ買っても途方に暮れることになるのは明らか。なので、できれば色々付属品とセットで欲しいと思いました。調べた結果、高価だが手堅いのものとして TRASKITのスターターキットというものが存在しているようです。

Traskit JP @ Amazon.co.jp: Traskit

TRASKIT の 4B の中でも、性能差で価格が異なりました。

SDカードのサイズでやや増額、メモリサイズでかなり増額、という感じの様子。この辺りは普通のPCの考え方と一緒みたいですね。やりたいことに適切な性能として、ブログ情報を参考にして 4GB のものにしました。またSDカード容量でそんなに価格変わらなかったので、64GB-4GB を購入。( sozorablog さんがすごく詳しくて参考にさせていただきました。感謝…! )

【徹底比較】Raspberry Pi 4は2GB、4GB、8GBどれを選ぶ? | sozorablog

使ってみる

届いたので開封してみます。

四角い箱が届きました。うちの猫様が興味津々です。

色々入ってる!ありがたい。

TRASKIT内容

取扱説明書

日本語の取扱説明書、感謝…。typoや文字間違いがあるのはご愛嬌ですね。

説明に従って進めます。当方初心者、説明書があっても詰まりながら進みます。合言葉は「まぁいいか」です。社会人生活も10年超、3万円の出費がパァになっても泣かない精神でやっていきます。

MicroSD スロットがどこかわからない

裏面のここかなと思って挿しました。裏表あってる? まぁいいか…。

基盤裏面

ちなみに素手で掴んじゃダメとかある? まぁいいか…。静電気には気をつけたつもりです。

USB キーボード と マウス はついていない(それはそう)

取扱説明書に当然のように「USBキーボードとマウスを Pi に接続します」と書かれていましたが、さすがに付属していません。たまたまUSBキーボードは持っていたので良かったです。*1

放熱ファンが2つある?

LED付きとLED無しで、好きな方を選んでよいらしい。取り付け方向はネームプレートのあるほうが内側とのこと。また、ピンの挿す位置によって低冷却モードと高冷却モードの2つがあるようだったが、説明書のおすすめは高冷却モードだったので、それに従った。 また、蓋の方向と、ピンとケーブルの配置がうまく収まるようにということを考えておかないと、蓋を閉めようとしたときに困ってしまった。2回くらいやり直して、収まりがよくなった。

ケースの蓋が開いた状態
ツメがちゃんと対応しているので、蓋には方向がある

ケースの蓋を閉めた状態
閉めた(※ゆるく噛ませたくらいで、完全には閉めていない)

蓋を完全にしめない(個人的都合)

ケースを完全に閉めると、外に何かをテロンと出しておく口がまったく無い。あとでカメラモジュールをピンに刺したいので、最終的に蓋は微妙に浮かせて使うことになりそうです。

電源ON 〜 そして動かない

ある程度形になったところで、意気揚々と電源ONにしてみたところ、青色LEDが点灯してファンが回ってテンションあがりました。ただ、刺したHDMIの先のディスプレイには何も映らず…。電源をON/OFFさせたり、一旦組み立てたケースを無理やり解体してMicroSDの抜き差しなども試みましたが、結局OSの画面は拝めませんでした。

ラズパイ初心者がRaspberry Pi 4 Model BのOSを不注意で起動不良としてしまったので復旧させた話 | DevelopersIO

上記URLを参考にして、MicroSDを抜いた状態で電源を入れたところ緑ランプの点灯は確認できたので、MicroSDに再度OSイメージを書き込むところから次回やりなおしていこうかなと思います。

反省点としては、組み立てはOS動作確認が終わった後の方が良いというところです。組み立ててしまうとMicroSDカードの抜き差しがかなり困難になるので、一旦全部バラす羽目になりました。ケースもかなりきっちりハマる作りなので、取り外すのにかなり苦労しました。

道のりは遠い…。まぁちょっとずつやっていきましょう。

その他参考

*1:結局オチとしてOSが立ち上がらなかったので動作確認できておらず。心配なのでちゃんと動きそうなやつ調べて買おうと思います…。

さよならICカードリーダー/ライター(2022年度確定申告完了の備忘録)

freeeさんに頼り切りですが、今年も無事に副業関連の確定申告・納税が終わりました。過去に自分が書いたメモ記事によると、2018年度からチクチク頑張っているようです。我ながら、よお継続してやっとるなぁと思うところ。

初めての確定申告2019 by freee - よもやま話β版

確定申告も4回目ともなると、なんとなく、こなす為のパターンが出来てきたような気がします。ちなみに節税のために書類で疲弊するくらいならおとなしく税金払っちゃえ派なので、最低限のことしかしていません。そのため、節税のコツとかは何にも書けません。やり方がわからないという理由でふるさと納税すらやっていません。そろそろ挑戦はしてみたいけどなぁ…。

自動タグ付けできるようにしておく

freeeとPayPay銀行*1 の口座を紐づけていて、銀行に入出金があると自動で取引データが作成されるようになっている。副業に関係して使っているツール類、それこそfreeeそのものとか、Microsoft 365 の月額契約とかをPayPay銀行から落ちるようにしておくと、毎月料金が引き落としされましたよという記録がfreeeに溜まっていくという塩梅である。 取引には自動でタグをつけることができる。月に一回は請求書発行のためにログインするので、そのタイミングで未処理のデータをざっと流し見して、タグがついていない場合は自動タグ付けルールを見直していたりする。 また、銀行とのAPI連携期限が切れていたりしたら、接続しなおす。

盆と正月に棚卸しする

夏のお盆、冬の正月休みのタイミングで、半日くらいかけて未処理の記録に対して領収書PDFを一気にダウンロード・添付の作業をする。年1でもいいけど、個人的には半年分ずつほうが比較的気持ちが楽だし、やり方を忘れ切っていなくてちょうど良い。副業の口座は、本業の収入・日常の生活口座とは完全に別で管理しているので、入出金記録は基本的には副業の収入 or ツール系の出費、として判別できる。ごく稀にまとまった出費が必要になった時に使う時もあるが、それは「プライベート出金」扱いで無視する形で登録する。

確定申告は自宅から

マイナンバーカードとスマホを使って、自宅からWebで確定申告が完了できる。ありがたいことに税務署さんに行ったのは青色申告の申し込みをした時だけで、それ以降はずっとオンラインで手続きを完結している。

昨年までICカードリーダー/ライターの機械をPCに接続して、マイナンバーカードを読み取らせていたが、今年はスマホiPhone)から読み取りできた。

環境

前提

書類の準備はfreeeさんの確定申告ガイダンスにしたがって完了させる。
今回、freeeさんのアプリを使ったが電子証明書周りでうまくいかなかったので、「国税庁e-Taxソフトを使う場合」の項目から完成した書類をダウンロードして利用した。

ダウンロードを押すと、拡張子.xtx のファイルが落ちてくるので持っておく。

e-Taxソフト(WEB版)を使う

1.まずWeb版の入口を探すのに苦労した。 https://www.e-tax.nta.go.jp/ の「ログイン」を押すと「メッセージボックスの確認」というページに飛ぶ。思わず『違う、そうじゃない』を歌い出したくなってしまうが、落ち着いて下部にスクロールすると『e-Taxソフト(WEB版)へログインする』ボタンがあるので、そこから開始することができる。

落ち着いてチェックすれば発見できる

2.WEB版にログインしようとすると「環境チェック結果」のダイアログが出る。MacOSGoogleChromeは推奨環境外とのことで、次の準備をしてアクセスした。詳しくはこちら → e-Taxソフト(WEB版)を利用するに当たって | 【e-Tax】国税電子申告・納税システム(イータックス)

  • 上記のページの「Macintoshをご利用の方」の項目に置いてあるセットアップ用のdmgをダウンロード、実行してインストールする。
  • Safari > 環境設定 > 機能拡張 から、e-TaxソフトをONにした。念の為に再起動もした。

もしかしたら、去年ほかの設定作業もしてたかもだけど忘れた。「環境チェック結果」がブラウザだけ△だったが、×にはなってないのでよしとした。ログインは昨年の利用者識別番号/暗証番号を保持していたのでそれで入った。

3.申請や更新など、マイナンバーカードが必要なタイミングになると、ICカードリーダーライター もしくは スマホでの読み取りの選択肢がでる。去年まではICカードリーダーライターを選んでいたが、今年からスマホでの読み取りを選び、QRコードを表示させる。(令和2年(2020)からスマホからの読み取りの話題があった*2けど、なんでこれまで自分はスマホでの読み取りを選んでなかったんだろう…謎。)

4.iOSのマイナポータルアプリで、Safariに表示されているQRコードを読み取る。 自分はマイナポータルアプリの右下のQRコード読み取りボタンに気づくのに15分を費やした。

マイナポータルアプリの画面
もっと存在感出してくれてもええんやで

5.カード読み取りしますと案内が出るので、マイナンバーカードにスマホをかざす。 この時、カードの天辺とスマホの天辺を合わせるのではなく、カードの真ん中あたりにスマホの天辺がくるようにすると成功しやすかった。

スマホとマイナンバーカードの位置関係の図示
こうやったらうまくいったの図

6.読み取りが完了すると、Safari側の画面でも成功した旨が表示される。

今年はカード内の証明書が昨年のものから更新されていたらしく(そういえば2022年春先に更新しなさいというお知らせが来て、手続きしたかも…? うーん、うろ覚え。)、何回か証明書不一致のエラーと遭遇してしまった。行政サイトから証明書の紐付けをしなおしてから提出したらうまく行った。今年、freeeさんのアプリは最終的には使用しなかった。とはいえ毎年freeeさんに頼り切りの申請である。大感謝…。

納税もクレジットカード払いで完了させてひと段落。2023年もどうぞよろしくお願いします〜。