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
RustでShell作ろう
Search
tera
December 17, 2016
Programming
0
940
RustでShell作ろう
平成28年12月17日(土): 第二回 帰ってきたhojiroLT にて話しました
tera
December 17, 2016
Tweet
Share
More Decks by tera
See All by tera
ピッてやるとシュッてなるやつを作った話
tera
0
260
Pythonを読む
tera
0
220
importを理解したかった
tera
0
660
HTTPをしゃべろう~Firefoxになるために~
tera
0
240
Other Decks in Programming
See All in Programming
2026年 エンジニアリング自己学習法
yumechi
0
130
Grafana:建立系統全知視角的捷徑
blueswen
0
330
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
dchart: charts from deck markup
ajstarks
3
990
AtCoder Conference 2025
shindannin
0
1.1k
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
190
Implementation Patterns
denyspoltorak
0
280
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
270
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
MUSUBIXとは
nahisaho
0
130
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
810
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
55
Building an army of robots
kneath
306
46k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
700
The Invisible Side of Design
smashingmag
302
51k
A designer walks into a library…
pauljervisheath
210
24k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
The Limits of Empathy - UXLibs8
cassininazir
1
210
Transcript
RustでShell作ろう
自己紹介 • 正弦波・レポート手書き学科16生 • S E C C O N
0 点 • Twitter:@tera_3939
Shellとは
Shellとは • シェル (shell) はオペレーティングシステム (OS) のユーザーのた めにインタフェースを提供するソフトウェアであり、カーネルの サービスへのアクセスを提供する。それだけではなく、この用語 は非常にゆるやかに応用され、特定のコンポーネントの周辺に構
築された任意のソフトウェアを含むこともある。例えば、ウェブ ブラウザや電子メールクライアントはHTMLレンダリングエンジ ンの「シェル」といわれることがある。OSの内部(カーネル) とユーザーの間にある外殻であることから、このように呼ばれる。 - 引用:https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB
Shellとは • シェル (shell) はオペレーティングシステム (OS) のユーザーのた めにインタフェースを提供するソフトウェアであり、カーネルの サービスへのアクセスを提供する。それだけではなく、この用語 は非常にゆるやかに応用され、特定のコンポーネントの周辺に構
築された任意のソフトウェアを含むこともある。例えば、ウェブ ブラウザや電子メールクライアントはHTMLレンダリングエンジ ンの「シェル」といわれることがある。OSの内部(カーネル) とユーザーの間にある外殻であることから、このように呼ばれる。 - 引用:https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB
例えば • cmd.exe • PowerShell • bash • fish •
MATE • Unity(Unityではない)
Rustとは
Rustとは • MozillaがC++の代替のために開発したプログラミング言語 • メモリ安全 • 並列 • はやい •
コンパイラがあたまいい
今回やったこと • “Tutorial – Write a Shell in C”のlshをRustで書いてみようとした •
https://brennan.io/2015/01/16/write-a-shell-in-c/ • 脱線したら終わらなかった • 許してほしい
lshの構造 builtinの関数 lsh_launch lsh_execute lsh_split_line lsh_read_line lsh_loop
lsh_read_line
lsh_read_line &&lsh_loop
lsh_split_line
lsh_split_line
lsh_execute
None
ビルトインコマンド • lshではcd, help, exitの三つを実装している
ビルトインコマンド • lshではcd, help, exitの三つを実装している •絶対必要なコマンドが無い
SLコマンド
SLコマンド • slはUnix系オペレーティングシステム (OS) のコマンドの一つ。 コンソール画面をアスキーアートで描かれた蒸気機関車 (SL) が 走り抜ける。 •
1987年に歌代和正によって開発され、ニュースグループの fj.sourcesに投稿された物を嚆矢とする[1]。以来、「作者不 明」として流布し、さまざまな改変バージョンが製作された。 現在Linuxなど各種Unix系OSのディストリビューション用とし て公式に採用されているものは、1993年当時東京工業大学の学 生であった豊田正史(現・東京大学准教授)によって、より派 手に改造されたバージョンである。 -引用:https://ja.wikipedia.org/wiki/Sl_(UNIX)
None
Rustで書こう • ソースコードはGitHubにある • https://github.com/mtoyoda/sl • ncursesというライブラリを使えばOK • だけど……
入れられない…… • WindowsでもUbuntuでもダメだった • Windowsはlink.exeがNon-UTF-8云々のエラーで死 • Ubuntuは今朝やったら普通に入った
代案 • SLはC言語で書かれている • RustにはC言語で書かれた関数を呼ぶ仕組みがある • RustからSL走らせる関数を呼べばOK
FFI • Foreign Function Interface (他言語関数インターフェース) • RustからC言語で書かれた関数が呼べる
やりかた
ディレクトリ構造
Cargo.tomlを編集 • build=“build.rs” • gcc=“0.3” • などを追加
build.rsを書く
よぶ
はしる
課題 • 実はデータをうまく渡してやれてない • 文字列配列の渡し方がわからない
まとめ
たすけて • 今回作ったやつのソースコード • → https://github.com/tera3939/rust_shell