Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
小さな疑問を大事にすると成長に繋がる
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoru Takeuchi
PRO
June 09, 2024
Technology
220
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
小さな疑問を大事にすると成長に繋がる
以下動画のテキストです
https://youtu.be/g0OOIDM23oI
Satoru Takeuchi
PRO
June 09, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
74
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
100
あなたの知らないバージョン命名規則
sat
PRO
3
910
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
67
Machine Check Exception
sat
PRO
2
68
バイナリダンプの模様を読む
sat
PRO
0
93
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
93
114-ファイルのshallow_copy.pdf
sat
PRO
2
59
113-Btrfsのスナップショット.pdf
sat
PRO
0
42
Other Decks in Technology
See All in Technology
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
100
猫でもわかるKiro Web
kentapapa
1
160
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
600
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
270
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
180
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
150
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
290
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
280
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
230
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
170
DORA_Metrics.pdf
wagnerfusca
1
140
企業の現実世界をグラフで写し取る
sansantech
PRO
0
230
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Curious Case for Waylosing
cassininazir
1
550
The agentic SEO stack - context over prompts
schlessera
0
950
My Coaching Mixtape
mlcsv
0
330
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Designing for Timeless Needs
cassininazir
1
510
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
The Invisible Side of Design
smashingmag
301
52k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Become a Pro
speakerdeck
PRO
31
6.3k
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