この記事ははてなエンジニア Advent Calendar 2020の9日目です。
昨日は id:kouki_dan さんの iOSのネイティブアプリでWebRTCを使ったビデオチャットを実装する - Lento con forza でした。
『〜〜ははてな〜〜』って文章読みづらいですね。
さて、はてなエンジニア Advent CalendarはWeb系のITエンジニアが書いていることもあって、IT技術に関した記事が多い。
自分も『最近作ったボットでこんな要素技術を使った』のようなことをかっこいい構成図とともに示そう! と考えていたのだけれど、そのボットには飽きてしまったのでそんな飽きっぽい自分の趣味でのプログラムの楽しみ方について書きたいと思う。
去年も似たような方向で技術じゃ無い記事を書いてる(大規模IT技術系イベントの歩き方 - koudenpaのブログ)。何かしらのIT技術を掘り下げるのは苦手らしい。
三つ子の魂四十路まで
ITエンジニアは仕事だけでなく趣味もプログラムであることがある。自分もその一人だ。
しかし、人によってどういうプログラムが趣味なのかは大分違う。
目立つのはOSSを作ったり貢献したりしてる人だろうか。
自分はそういうことは殆どなくて『これ面白そうだな』『こういうの作りたいな』というものをその場その場で作って楽しんでいる。
最近ふとそれはブロック遊びみたいなものかもなぁ。などと思った。
数十年前、子供だった頃はダイヤブロック*1を使っていろんなものを作っては壊して遊んでいた。今もその嗜好はあまり変わっていないのかも知れない。
プログラムにおける面白そうなブロックのパーツ……新しいサービスやガジェットを見かけると試してみたくなるし、作って少し遊んだらすぐに興味がなくなってしまう。
最近はボットを作るときに色んなパーツを使って面白かった。それには早くも飽きてM5Stackという新しく触れたパーツで遊び始めている。
最近の遊び
リアルダイスボット
Twitterで話しかけるとサイコロを振った結果を動画とともに返信するボット。
1d6 = 6 !
— RealDiceBot (@RealDiceBot) 2020年10月20日
(Score: 0.5136400461196899)
> @RealDiceBot 奇数ならおやつ買いにいく pic.twitter.com/yTz4VTP7vN
使った主なパーツ
- 電動ダイス + モータードライバ
- Raspberry Pi + カメラモジュール
- OpenCV
- ffmpeg
- Azure IoT Edge
- Custom Vision
- Azure Functions
- Azure App Service
- ASP.NET Core
- Microsoft Bot Framework
- Twitter(Tweetinvi)
- YouTube Live
色々使ってると言っていいと思う。昨今は魅力的なパーツが無限にある。目移りしてしまう。しかも少し遊ぶ分には殆どお金もかからない。良い時代だと思う。
プラモデルライトアップ
M5Stackという液晶やボタンがついためちゃくちゃ便利なマイコンボードがある。それを使って昔やって飽きたプラモデルのライトアップを懲りずにやっている。
GitHub - 7474/NeoPixelChikaChikar
全景。
— 光電/7474 (@koudenpa) 2020年12月7日
キレイに光らせるならエフェクトの根本にLEDなり分配した光ファイバー仕込んだ方かいいのだろうけれど、プログラマブルに色々したいので照らしてる。
パターンと音声変えればV-Maxもいける、はず。 pic.twitter.com/zA17cUEW9I
今回はBGMもついたので進化はしている。
前はインターネットに繋いでブラウザから操作できた(はず)なのに、今回は繋いでいないので退化もしている。
何も意識していなかったが昔も今もライトアップの題材はスーパーサイヤ人。やりたいことが何も変わっていない。
使っている主なパーツ
(ボットでは挙げてない)ソフトウェアのライブラリを挙げてもこんなもん! 少ない!!
少ないブロックで小さなものを作るのも良い。これはもう少し形にしたらまた記事にしたい。M5Stackアドベントカレンダーに登録してしまったので(かなり近い*3)締切がついている。
ちなみに、M5Stackにはレゴブロック互換の穴が開いていて、追加のモジュールを物理的なブロックで形にすることもできるらしい。そうしていればいい感じの記事のオチになったのだけれど、残念ながらタミヤのユニバーサルプレートを使ってしまった。勿体ないことをした。
パーツも多少作る
少しパーツが足りないな、と思ったらにブロックのパーツ自体を作ったりもする。
- GitHub - 7474/BotFrameworkTwitterAdapter
- Twitterの返信とBot Framworkのアダプタ
- リアルダイスボットのUIに使っている
- GitHub - 7474/M5BGMPlayer
- M5StackでSDカード内のmp3ファイルを再生する際のファイルと状態管理のライブラリ
- 自分が必要な機能を作ってる
- mp3の再生自体は既にあるものを使っている
他人が再利用できる形になることは稀。
何を楽しんでるのか?
色々作っているけれど、作ったらすぐ飽きる。ちょっとしたやりたいことを実現する過程を楽しんでいるのだろうと思う。
数十年後も同じような感性で遊んでいたい。
明日は id:utgwkk さんのGitHub Actionsのプロファイラです。
この記事とは違って実用的な予感がする! 乞うご期待!!
大事なことなので最後に書いておきます! 趣味ではめちゃくちゃ飽きっぽいけれど、仕事はそれなりに粘り強くやってます!! 多分一緒に働いてくれる人は常に募集中です!!!