Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
「RubyでLチカ」に挑戦してみた
Amane
June 18, 2024
How-to & DIY
0
67
「RubyでLチカ」に挑戦してみた
2024.6.18開催のRubyKaigi 2024 Wrap PartyでのLT登壇資料です。
https://connpass.com/event/318501/
Amane
June 18, 2024
Tweet
Share
More Decks by Amane
See All by Amane
Rubyのふるまいを”具現化”してみた
isaka1022
0
73
エンジニアとして「事業」作りに関わるということ
isaka1022
3
1.1k
みんなで行う技術広報
isaka1022
0
420
GraphQLの型を分離させてチームごとの並列開発を加速させた話
isaka1022
1
180
マイベストグローバル化のすべて
isaka1022
0
270
技術広報について完全に理解した
isaka1022
1
310
現代のメディアと人間
isaka1022
0
60
GraphQL Rubyで スキーマ駆動開発を体感した話
isaka1022
1
410
新卒1年で磨いた「技術書まとめ」の作り方
isaka1022
1
240
Other Decks in How-to & DIY
See All in How-to & DIY
ITエンジニアにおすすめのゲームFactorio御紹介
zembutsu
PRO
1
810
ジョインして1ヶ月 緊急リリースを3度体験した話 〜そして改善へ〜
shibatadaiki
0
390
100回分は振り返りできなかったけど振り返り #iotlt vol101
n0bisuke2
0
260
【潔能講堂】 綠能科技動手做-磁生電燈 / 李薇平老師
learnenergy2
0
310
#技術を動画で伝える技術 〜 α シリーズを活用した技術紹介・プレゼン動画制作ノウハウ〜
1heisuzuki
4
600
ServiceNow Knowledgeの歩き方
manarobot
0
260
400人誰もやらんので私がやってみました社内でChatGPT LINE Bot
okinakagaikotu
0
210
Fraxinus1k 組立説明書 (Japanese, v. 0.9)
fukumay
1
4k
カフェでノートPCが盗難されたかどうかを検知するIoT #linedc #iotlt #obniz #protoout
n0bisuke2
1
200
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
1
220
担当アイドルを応援する傘を作ろう! (として失敗した話)
subroh0508
0
410
Invitation to Okinawa.rb in 2024
yasslab
PRO
1
550
Featured
See All Featured
Building an army of robots
kneath
301
42k
Code Reviewing Like a Champion
maltzj
517
39k
GraphQLとの向き合い方2022年版
quramy
36
13k
Leading Effective Engineering Teams 2024
addyosmani
3
280
RailsConf 2023
tenderlove
16
720
Six Lessons from altMBA
skipperchong
24
3.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
34
1.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
2.9k
Testing 201, or: Great Expectations
jmmastey
33
6.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
Designing for humans not robots
tammielis
247
25k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
Transcript
「RubyでLチカ」に挑戦してみた RubyKaigi 2024 Wrap Party
自己紹介 井上 周 (@isaka1022) Amane Inoue バックエンドエンジニア Opexミッション dev lead
| プロダクト開発部 社内のオペレーショナル・エクセレンスの実現にむけて試行錯誤中 https://zenn.dev/isaka102 https://x.com/isaka1022 https://speakerdeck.com/isaka1022
月間利用者 数 3,000 ユーザーの “選択”を サポートする 商品比較サービス 万人以 上 (2023年7月時点)
商品を自社で購入し、専門性を持ったメンバーが徹底検証 ユーザーに正確・詳細な情報を届けるために、各領域で専門性を持った人材が社内に在籍。 実際に商品を購入し、社外の専門家や施設とも協力しながら、相対比較や実測した情報に基づいたオリジナルのデータベースを制 作しています。
検証環境も自社で整備 自社内に倉庫やテストラボ、撮影スタジオまで完備。 スティックのりから洗濯機まであらゆる商品を自社内で保管し、検証しています。
十数名のエンジニアで “選択” という大きな課題に取り組んでいます! アピールポイント 国内3,000万人の月間利用者数、 海外8ヵ国にも展開 日本のみならず世界中のユーザーに使っていただけるサービスの開発ができます! 最新のRuby, Railsでの開発 Ruby3.3+YJIT、Rails7.1.3を使っており、積極的にバージョンアップを行っています!
GraphQLを全面採用 Production Ready GraphQLの輪読会をしたり、部内でルールやガイドを議論・整備してドキュメントにまとめています! US攻略、パーソナライズ、 モジュラーモノリス の検討、 LLMを活用した PoC、etc… プロダクトとしても技術面でもまだまだやりたいことが盛り沢山です!! 自社検証 したどこにもない商品データ あらゆるジャンルの商品を自社で購入して徹底的に検証し、実際に使ってみないとわからない商品情報をデータベースに蓄積しています!
だんだんとわかること、知り合い、興味関心が高まってくる RubyKaigiと私
KaigiEffect 2024
Rubyのみでラジコンカーを作ったという hachi (Hayao Kimura)さんの発表 https://speakerdeck.com/hayaokimura/drive-your-code-building-an-rc-car-by-writing-only-ruby Drive Your Code ~ Building
an RC Car by Writing Only Ruby
Displate 井上周・秋田純一, Displate:アンビエントな事前情報提示により食体験を向 上させる食器型デバイス, イ\ンタラクション2019予稿集, 2019.3. Asym-mekakushi A.Inoue, J.Akita, Asym-mekakushi:
Development and evaluation of augmented reality system to support face-to-face communication by asymmetric gaze information, ISID2021 Best Poster Award, 2021.3. 今はソフトウェアエンジニアとして働いているが、大学・大学院では HCI(ヒューマンインタフェース)の研究をやっていた →血が騒ぐ ハードウェアに触れていた時代
毎年RubyKaigiで思うこと ↓ コンパイラとかちゃんと 勉強しておけばよかったかな、、
しかし
Connecting the dots 米アップルの創始者スティーブ・ジョブズが、 2005年スタンフォード大学のスピーチで語った 言葉です。 過去の取り組みがどこかでつながる Connecting the dots
KaigiEffect 2024 for me ↓ Ruby × Hardware
マイコン マイクロコントローラやMCU(Micro Controller Unit)、マイクロコンピュータとも呼ばれていま す。 最近ではあらゆる電子器具に埋め込まれてい る。 パーソナルピュータやスマートフォン用の計算装置に比べて演算性能は落ちるが、安価で小型、実世界との連携が得意 ハードウェアを操作するのに欠かせない「マイコン」 PC
スマホ マイコン 演算性能 ◎ ◯〜◎ △ 大メモリ ◎ ◯ △ 小サイズ △ ◯ ◎ 低価格 △ △〜◯ ◎
Arduino (ハードウェアの)「Arduinoボード」、および(ソ フトウェアの)「Arduino IDE」から構成されるシ ステム 学生時代はArduino IDEでC言語のプログラムをマイコンに書き込んで動作させる、というようなことをやっていた。 MicroPythonも使用している人がいた。 https://blog.arduino.cc/2024/01/17/your-classic-arduino-ide-experience-now-in-the-cloud C言語でArduinoに書き込むということをよくやっていた
mruby(エムルビー) https://mruby.org/ ・組込み機器向けに最適化されたスクリプト言語 ・Rubyの開発者であるまつもとゆきひろ氏が主体となり、福岡県内の産学官が連携して開発 (リリース) ・組込み開発におけるプロタイピングや試行錯誤の必要な IoTシステム開発に適しています。 mruby/c(エムルビー・スラッシュ・シー) https://github.com/mrubyc/mrubyc ・プログラム実行時に必要なメモリ消費量が
mrubyより少ないソフトウェアの開発言語です ・小さなワンチップマイコンでも動作するように開発 ・センサーネットワークやウェアラブルデバイスなどの小型端末向けソフトウェア開発に適す PicoRuby(ピコ・ルビー) https://github.com/picoruby/picoruby ・mrubyの別実装でPicoRubyコンパイラとmruby/c VMを統合したもの ・ワンチップマイコンで Ruby言語を動かすための処理系 https://qiita.com/advent-calendar/2023/mruby-family Rubyをマイコンで動かす? mrubyファミリーの紹介
Lチカ プログラムでいうところの「Hello World」 電子工作でまずはやってみる最も簡単な実装 のひとつ。 最も簡易的にできそうな、 picoruby×Raspberry Pi Picoにて挑戦 まずは「Lチカ」からやってみる
Raspberry Pi Pico ジャンピングワイヤ 必要なものを揃えます。秋葉原の「秋月電子通商」「千石電商」「 Amazon」あたりで揃える 準備したもの Raspberry Pi Pico
イ��リスのRaspberry Pi 財団(非営利組織)と Raspberry Pi Ltd(営利組織)によって開発されて いるARMプロセッサを搭載したシングルボードコン ピュータ。 Picoはコンパクトかつ低価格で、電子工作に特化 したコントローラーです。 ジャンピングワイヤ ブレッドボード上で電子部品を結線するためのワ イヤ 電子工作キット 電子工作を始めるためのセンサや素子などの一 式が揃っている。3,000円前後で購入できる。
まずは「基板の内蔵 Lチカ」から raspberry Pi Picoには内臓のLEDがあるので、これを光らせてみる https://shimane.monstar-lab.com/hasumin/reiwa5-picoruby-l-chika
ファームウェアをダウンロード https://github.com/picoruby/r2P2/releases/
BOOTSELボタンを押しながら USB接続 USBモードとするには、ボードの電源投入時にBOOTSELボタンを押し続けます(USBを接続する間、BOOTSEL を押し続ける)。そうすると、Raspberry Pi PicoはUSBマスストレージデバイスとしてPC上に表示されます。 https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf
USBデバイスとして認識してくれる 次はPCからアップロード
しかし反応しない。。
USBケーブルには「データ転送用」「給電用」の 2つがあるので注意。 付属品などではデータ転送にしていないものがある。(今回はこちらを使ってしまっていた) ハマりポイント①
これでPicoRubyが使えるようになった! ドラッグドロップで書き込み!
screenコマンドでシリアル通信 screenコマンド Linuxのユーティリティでターミナルセッションを 作成して管理できる。 今回はマイコンにリモート接続している。
Raspberry Pi Picoでirbを使用できる! これでPicoRubyが使えるようになった!
しかし、LEDは反応しない。。
Raspberry Pi Picoファミリーは現在、 Raspberry Pi Pico(左端)、Pico H(左中)、Pico W(右中)、Pico WH(右端)の4つのボードで構 成されている。
https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html ハマりポイント②
買ってきてしまったのは Raspberry Pi Pico W 「(ちなみにラズパイピコ W(Raspberry Pi Pico W)のオンボードLEDはちょっと違う仕組みになっており、
PicoRubyがまだ対応して いません)」 https://shimane.monstar-lab.com/hasumin/reiwa5-picoruby-l-chika ハマりポイント②
追加で購入! Raspberry Pi Picoは1個800円前後なので、もし失敗しても何度でも(気軽に)やり直せる
無事にLチカができた!
Lチカ プログラムでいうところの「Hello World」 電子工作でまずはやってみる最も簡単な実装 のひとつ。 ブレッドボードで回路を組み、 LEDを光らせたい もう少し複雑な Lチカ
ブレッドボードを使用するためにピンヘッダと組み立てていきます はんだづけして準備
さあ、作ろう。 しかし
はんだづけしたところ、土台が傾いており派手に失敗。 ハマりポイント③
追加で購入! ※失敗したものについては、リカバリ方法があるのでちゃんと再活用しています
Raspberry Pi Pico H、Raspberry Pi Pico WHであればピンヘッダが付いているのではんだづけの必要なし はんだ付け不要なモデルも存在する
はんだ付けも完了 Raspberry Pi Picoが立った!
データシートを見ながら回路を組む https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#pinout-and-design-files 引用、参考にさせていただきました mm https://zenn.dev/ythk/articles/ythk-raspico-led01 https://zenn.dev/ythk/articles/ythk-raspico-led01
回路を組んで、 LED点灯! こちらも動作しました!
アクチュエータ 入力されたエネルギーもしくはコンピュータが出 力した電気信号を物理的運動に変換する、機 械・電気回路を構成する機械要素 電子工作の基本はセンサ+アクチュエータ センサからの入力をアクチュエータの出力として処理するプログラムを書いてマイコンで実行する もういっちょ! input output
CdS “硫化カドミウム(CdS)を主成分とする光導電 素子の一種で、光の当たる量によって抵抗値 が変化 光センサ(CdSセル)と接続して ↓のような回路を作成 もう少し複雑な Lチカ
ハードウェアをRubyでプログラミングするという不思議な感覚 Rubyプログラミング
動作完了! 周囲の明るさに応じて LEDの明るさが変わるという回路が完成!
これで冒険が始められる! Future Work • Rubyで回路を操作するという体験が良かった • これまでの知識をどんどん組み合わせていきたい ◦ まだまだできそうなことありそう •
「マイコン」という単位から Rubyの仕組みにせまれるかも? • これまで触っていたRuby以外の世界があることを知った • いざやってみると、理解があいまいな部分があるので補って行きたい �� 社内のオペレーション改善 ×IoT×Rubyの可能性あるか? • (生成AIとの相性がもしかしたらよいかも) このあと懇親会でデモするのでもしよければわいわいしましょう!