Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「RubyでLチカ」に挑戦してみた
Search
Amane
June 18, 2024
How-to & DIY
0
120
「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
オペレーショナルエクセレンス実現のための管理画面改修の仕組み
isaka1022
0
1.8k
Rubyのふるまいを”具現化”してみた
isaka1022
0
100
エンジニアとして「事業」作りに関わるということ
isaka1022
3
1.3k
みんなで行う技術広報
isaka1022
0
470
GraphQLの型を分離させてチームごとの並列開発を加速させた話
isaka1022
1
210
マイベストグローバル化のすべて
isaka1022
0
320
技術広報について完全に理解した
isaka1022
1
330
現代のメディアと人間
isaka1022
0
73
GraphQL Rubyで スキーマ駆動開発を体感した話
isaka1022
1
460
Other Decks in How-to & DIY
See All in How-to & DIY
drumstick_jacket.pdf
lyh125
1
520
在宅フルリモートワークを可能にするスキルと知識n連発! / how to more effective remoteworking
masaru_b_cl
3
830
さらなるアウトプットに、Let's ライトニングトーク! ― LTのやり方
ma2shita
2
520
【技術カンファレンス運営の裏側】Iwaken Lab 技術好き学生の近況報告 & ことみんさんに技術カンファレンス運営の裏側を聞いちゃう会
kotomin_m
4
220
コロナ後の世界メイカーフェア事情 高須正和@Nico-Tech Shenzhen #KMMF2024 #KariyaMMF2024
takasumasakazu
0
250
ついにiPaaSでobnizが動くかも?! #iotlt #pipedream #obniz
n0bisuke2
0
320
enebular Update for the second half of 2023
taokiuhuru
0
150
JAWS-UGから学んだコミュニティの成功要因 (Success Factors)
awsjcpm
3
320
安全に失敗するための手遊び-未定義動作を引き出そう-
zilmina
0
450
BVEと連動する誤自宅運転台のススメ!
usashirou
0
590
苦いビールを避ける冴えたやり方
watany
2
150
ServiceNow Knowledgeの歩き方
manarobot
0
300
Featured
See All Featured
Building Your Own Lightsaber
phodgson
103
6.1k
4 Signs Your Business is Dying
shpigford
180
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Thoughts on Productivity
jonyablonski
67
4.3k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Rails Girls Zürich Keynote
gr2m
94
13k
Statistics for Hackers
jakevdp
796
220k
Navigating Team Friction
lara
183
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
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との相性がもしかしたらよいかも) このあと懇親会でデモするのでもしよければわいわいしましょう!