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
小さな疑問を大事にすると成長に繋がる
Search
Satoru Takeuchi
PRO
June 09, 2024
Technology
3
200
小さな疑問を大事にすると成長に繋がる
以下動画のテキストです
https://youtu.be/g0OOIDM23oI
Satoru Takeuchi
PRO
June 09, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
3.3k
ファイルシステムの不整合
sat
PRO
2
120
書籍執筆での生成AIの活用
sat
PRO
1
390
ChatGPTに従って体調管理2026
sat
PRO
0
160
eBPF
sat
PRO
1
130
waruiBPF
sat
PRO
0
120
eBPFとwaruiBPF
sat
PRO
5
4.1k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
110
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
210
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
LINEヤフーにおけるAI駆動開発組織のプロデュース施策
lycorptech_jp
PRO
0
390
Digitization部 紹介資料
sansan33
PRO
1
7k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
7
7.1k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
110
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
7
2k
バクラクのSREにおけるAgentic AIへの挑戦/Our Journey with Agentic AI
taddy_919
2
990
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
340
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
130
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
480
The Cost Of JavaScript in 2023
addyosmani
55
9.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
260
Art, The Web, and Tiny UX
lynnandtonic
304
21k
New Earth Scene 8
popppiees
1
1.7k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
130
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
80
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
870
Transcript
小さな疑問を大事にすると 成長に繋がる Jun. 9th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
はじめに • はなすこと ◦ ソフトウェア技術者として成長する考え方の一つを紹介 ◦ 参考書をじっくり見る、大きなソフトウェアを作るといった大がかりなことではない ◦ 日々のちょっとしたことが後で役立つことを過去の経験をもとに紹介 •
主なターゲット ◦ 技術者として成長したいが、うまくいかないと思っている人 ◦ それでいて、なんとなく日々を過ごしてしまっている人 2
基本的な考え方 • やること ◦ 日々の小さな疑問が生まれたときに、そのままにせず調べる • 効果 ◦ 調べたこと自体で知識が増える ◦
達成感が得られる ◦ その後思わぬところで役立つこともある 3
概念図 もとの状態 4 既存知識
概念図 もとの状態 好奇心が湧く 5 既存知識 ここがわからん… 既存知識
概念図 もとの状態 調べて理解 好奇心が湧く 6 既存知識 新たな 知識 ここがわからん… 既存知識
既存知識 完全理解!
概念図 もとの状態 調べて理解 好奇心が湧く 別の時に… 7 既存知識 新たな 知識 ここがわからん…
既存知識 既存知識 完全理解! 新たな 知識 既存知識 ここがわからん… 別の機会に 得た知識
概念図 もとの状態 調べて理解 好奇心が湧く 別の時に… 8 役立った! 既存知識 新たな 知識
ここがわからん… 既存知識 既存知識 完全理解! 新たな 知識 既存知識 ここがわからん… 新たな 知識 既存知識 新たな知識 別の機会に 得た知識 完全理解!
実例 • 疑問 ◦ lsblkというブロックデバイスをリストするコマンドの仕組みが気になった • 調査結果 ◦ lsblkの仕組みが明らかになった •
数か月後 ◦ lsblkの実行結果を利用する別コマンドの挙動で困ることがあった ◦ 過去の知見を生かして対処できた 9
疑問に至るまでの流れ • 背景 ◦ 自分は業務でRookというCeph(分散ストレージ)を管理するツールのメンテナをしている ▪ https://github.com/rook/rook ◦ RookはCephが使うOSDというデータ構造をブロックデバイス上に作る ▪
1. lsblkコマンドを実行してデバイスのタイプ (e.g. disk、part)を調べる ▪ 2. Cephがサポートしているタイプであれば、 OSDを作る • 疑問 ◦ lsblkコマンドはTYPEフィールドの値をどこから持ってきているのか ? 10
調査した 1. 気になるから調べてみよう(ここ重要) 2. ソース見ればわかるやろ a. 見るべきところは数十行なので 30分くらいで読み終えられた 3. 完全理解してスッキリ
• 📝 lsblkの挙動を詳しく説明している過去動画 ◦ lsblkのtypeフィールドのしくみ ◦ https://youtu.be/x_QSV1tM3qY 11
それから数か月後… • ブロックデバイスのI/O障害をエミュレーションするという発表をした ◦ これは仕事じゃなくて趣味 ◦ blkidのソースを見たことは忘れていた ◦ 📝 発表資料
▪ device mapperによるディスクI/O障害のエミュレーション ▪ https://speakerdeck.com/sat/ozhang-hai-noemiyuresiyon • 発表後にLTをしたくなった ◦ I/O障害のエミューレーションが実際に役に立つことを紹介したい ! ▪ 発表は機能紹介だけに留まっていて、実例が無かった ◦ イベント中にライブで LT資料を作ることにした ▪ Cephのデータの一部を壊しても、元の状態に復旧できることを示そうとした 12
問題発生 • おさらい: RookはCephが使うOSDというデータ構造をブロックデバイス上に作る 1. lsblkコマンドを実行してデバイスのタイプ(e.g. ディスク、パーティション)を得る 2. Cephがサポートしているタイプであれば、OSDを作る •
I/O障害エミュレーション機能を使うと、ブロックデバイスのタイプが、Cephによって サポートされないものになってしまう 13
解決策 • デバイスマッパー設定時にパラメタをうまく設定すると、I/O障害を発生させる対象 のブロックデバイスのタイプを任意のものにできる ◦ lsblkのソースを読んでなければわからない実装依存のハック ◦ 実運用ならやらないが、今回はサンプルのデモなので OKと判断 •
パラメタを設定してブロックデバイスのタイプをCephがサポートするものに見せか けたところ、うまく動いた ◦ スカッとした&「あのときのことがこんな形で役に立つとは」と感動 • 📝 技術的な話 ◦ 分散ストレージはすごいぞ ◦ https://speakerdeck.com/sat/fen-san-sutorezihasugoizo-4af53638-99ea-416b-9841-66ccbc7e4 5cd 14
まとめ • 日々生まれる小さな疑問を放置せずに調べてみることで新しいことがわかる ◦ 疑問は小さければ小さいほど楽 ◦ やってるうちに一筋縄ではいかないとわかったら中断するのも手 • これを繰り返せば技術者としての引き出しの数はどんどん増えていく ◦
調べた当時は小さなことがわかるだけでも、将来につながる • 書籍などで体系的に学ぶのが苦手な人にはとくにお勧め • 注意 ◦ 常に成長し続けなくてはならないわけではない ◦ ずっと成長成長言ってると疲弊してしまうのでほどほどに 15