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
frontend_to_cli_tool_by_rust
Search
Wataru Morita
September 13, 2019
Programming
0
550
frontend_to_cli_tool_by_rust
Wataru Morita
September 13, 2019
Tweet
Share
More Decks by Wataru Morita
See All by Wataru Morita
thanks_react_router_v7
tascript
0
130
5-things-for-front-end
tascript
0
9.7k
legacy_code_fukuoka_js
tascript
1
390
svelte_typescript_fukuoka_ts
tascript
1
440
enjoy_mruby_2021
tascript
0
97
TypeScript_BFF
tascript
4
4.7k
nestjs_typeorm
tascript
0
640
Asyncで 非同期処理を 少しだけ楽に書く/ ruby_with_async
tascript
0
180
Other Decks in Programming
See All in Programming
エンジニア向け採用ピッチ資料
inusan
0
160
C++20 射影変換
faithandbrave
0
520
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
140
XSLTで作るBrainfuck処理系
makki_d
0
210
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
560
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
330
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
330
ニーリーにおけるプロダクトエンジニア
nealle
0
100
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
Effect の双対、Coeffect
yukikurage
5
1.4k
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
140
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
210
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Pragmatic Product Professional
lauravandoore
35
6.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Designing Experiences People Love
moore
142
24k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Balancing Empowerment & Direction
lara
1
360
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Scaling GitHub
holman
459
140k
Producing Creativity
orderedlist
PRO
346
40k
Transcript
3VTUͰϑϩϯτΤϯυ͔Β $-*πʔϧͷ։ൃ·ͰͬͯΈͨ @tascript Fukuoka.rs
;͋Έ 森田 亘(@tascript) GMOペパボエンジニア(フロントエンド) Rustは初心者(お手柔らかに)
3VTUͰԿΛ͢Δ͔
3VTUͷकඋൣғ WebAssembly (ほんの少しお話します) FireCracker (もう少しネタ増えたらお話したい) CLIツール (ほんの少しお話します) Webフレームワーク (Rocket) エンジニアのジャンルにとらわれず開発の幅が広い
͍͢͝ʂ
3VTUॻ͖͍ͨʂ
ͬͯΈͨ͜ͱ ͭΛհ͠·͢
ᶃ:FX
:FX Rust製のフロントエンドwebフレームワーク 最終的な成果物をWebAssemblyにコンパイル 独自の仮想DOMを所持 ReduxのようにUIの状態管理が可能 気軽にWebAssemblyを体験
:FXͷجຊ Model(状態管理) Update(状態変更) View(画面表示) 6QEBUF 7JFX .PEFM "DUJPO
:FXͷجຊ ॱ൪ ①viewのactionにより ②updateが実施され ③modelを変更し ④viewに反映する 6QEBUF 7JFX .PEFM "DUJPO
ᶆ ᶅ ᶄ ᶃ
① 構造体に表示に必要なプロパティを用意 ② トレイトでプロパティを変化 .PEFM
①イベントとイベントハンドラを定義 ②matchでイベントを選択 ③イベントハンドラを実行 6QEBUF
①html!マクロを使用してコンポーネントを作成 ②リアクティブなデータとイベントでコールされる関数をRustで記述 7JFX
ͪͳΈʹ .wasmファイルの大きさはリリースビルドで169K + グルーコード31K 計算もしたいし描画もしたいものを再利用しておく場合有効的かも 詳しくはQiitaにも(https://qiita.com/wataru-script/items/ 2918ff21772a805930f1)
ᶄ$-*πʔϧͷ։ൃ
ESBHPOUBJM tailコマンドで特定のキーワードに色を付ける nao-kobayashiさんのrtailから着想 https://github.com/wataru-script/dragontail usage書いてなくてすみません…
ͬͯΔ͜ͱ (rtailでtailの実装はできていた) ①キーワードごとに1行ずつ文字列をsplit ②分割された文字列がキーワードと一致したら色付け(6色をループ) ③splitによる文字列型の配列をループ ④write(最後の要素以外)とwriteln(最後の要素)で出力
໘ͩͬͨ͜ͱᶃ 特定のキーワードで文字列を分割して配列化する処理 (一文字だけならバイト文字列で取り扱えばいいけど2文字以上のキーワードに関する splitが簡単にできなかった) [‘hello’ , ’fukuoka’, ‘.rs event!’] (fukuokaがキーワードの場合)
໘ͩͬͨ͜ͱᶃ ①行内にkeywordが存在すれば一致した箇所のindexの早い順にソート ②行に対しkeywordの一致したindexとkeywordの文字数分の長さでsplitする ᶄ ᶃ
໘ͩͬͨ͜ͱᶄ 複数のキーワードを指定した場合、あるキーワードが他のキーワードに含まれる場合は内包す る側のキーワードを優先する処理 (単純にループ処理が面倒) [‘a’ , ’fukuoka’, ‘.tenjin’, ‘e’] =>
[‘fukuoka’, ‘tenjin’]
໘ͩͬͨ͜ͱᶄ 複数キーワードの場合2つのキーワードを比較し、 相手に含まれているか、含んでいるかを確認(書き方がなんかイケてない)
ৼΓฦΓ とにかく自分の興味のある領域でRustに関するものから手を付ける(守備範囲広め) なにか作ってみたほうがいい(最初はコンパイラにかなり怒られます) コンパイラに怒られてもひたすら書く(緩やかな成長はないのかも) 型が完全に合うと気持ちいい! CLIツールは標準入力に対して色付けするものでもよかったなー(作成中)
5IBOLZPV @tascript Fukuoka.rs