狠狠撸

狠狠撸Share a Scribd company logo
第1回 Blenderソースコードリーディング
お前、誰よ? 
● みつだ と言います。 
● Twitter ID = @lab1092 
● ただのBlenderヲチャー 
– この最近はSphinxベースになった 
Blenderのマニュアルに関心が移ってます 
ね
コード リーディング? 
”コード リーディング(code 
reading)とはプログラムのソース 
コードを読み解くことです。他人の 
プログラムをはじめ、自分が昨日書 
いたプログラムを読むのです。” 
コード リーディングについて - http://www.codereading.com/codereading/about_code_reading.html
「ニッチだ…ものすげえニッチだ…」
“コードは小説より面白い” 
”優れたコードを読むことを習慣づ 
けた人は、間違いなくより優れた 
コードを書くようになります” 
Code Reading―オープンソースから学ぶソフトウェア開発技法(毎日コミュニケーションズ) 表紙より
「マジで?」 
blenderのソースコードって手本になるようなコードか知らんけど?
対象となる人 
● Blenderの開発で「貢献したい」と漠然と考 
えている人 
● 中の仕組みを知りたい人 
● バグトラッカーで繰り広げられている何か、 
の先を見たい人 
● 「開発者の気持ちを知りたい」というデザイ 
ナー?アーティストの人
Blender のソースコードを 
読んでみよう 
- の前に済ませておきたいこと -
目標 
①Blenderのソースコードを展開 
して、 
②そのソースコード(.c)を 
③テキストエディタを使用して 
④眺める入り口まで
- 導入部 I - 
予習しておいてもいいかもしれない、 
さわりの部分。 
これを終わらせてもまだ始まってもいない状態。
準備 
①コードハイライト表示できるテキ 
ストエディタを用意する 
②手がかりになるサイトを見つける 
③ソースコードをダウンロードする
準備 
①コードハイライト表示できるテキ 
ストエディタを用意する 
②手がかりになるサイトを見つける 
③ソースコードをダウンロードする
テキストエディタを用意 
コードハイライト表示機能のあるテキス 
トエディタがあるとはかどります。
どのエディタがいいの? 
「どのエディタがいいですか?」ですっ 
て?それは宗教戦争になる恐れがあるの 
で、ここでは特定の「おすすめ」は差し 
控えさせていただきます。 
「プログラム エディタ」でググろう。
ちなみに私は罢别虫迟奥谤补苍驳濒别谤使ってます。
準備 
①コードハイライト表示できるテキ 
ストエディタを用意する 
②手がかりになるサイトを見つける 
③ソースコードをダウンロードする
困った時のBlenderWiki! 
ソースコードそのものを解説しているわ 
けではないですが、概念をつかむための 
資料があります。 
Code Documentation 
→http://wiki.blender.org/index.php/Dev:Source/Architecture
ふむふむ…古くない? 
Diagram showing code layout
新しい機能は Dev:2.6 から。 
Blender 2.6 development 
documentation index 
→http://wiki.blender.org/index.php/Dev:2.6 
例えば BMesh 
→http://wiki.blender.org/index.php/Dev:2.6/Source/ 
Modeling/BMesh/Design
ソースコードを読むための資料が 
全て用意されていると思ったら 
大間違いです。 
- ここをどう解決するか、多分ここがポイントになります -
違いの分かる男は… 
履歴を追うぜ。 
Blenderのリポジト 
リの下の方とか 
→https://developer.blender.org/diffus 
ion/B/
いや、そうなってくると 
「ソースコードリーディング」 
ではなくデバッグか何か別のもの 
ですから飞飞飞
準備 
①コードハイライト表示できるテキ 
ストエディタを用意する 
②手がかりになるサイトを見つける 
③ソースコードをダウンロードする
「tarボール」をダウンロード 
バージョン毎のソースコードのアーカイ 
ブが置かれている場所 
Index of /source/ 
→http://download.blender.org/source/
tar.gz? tar.bz2? 
ソースコードのアーカイブファイルで 
す。たくさんのファイルを1つに集めて 
サイズを小さくするために圧縮したもの 
です。ソースコードを見るには、この 
ファイルを展開しなくてはなりません。
アーカイブソフト 
● Windows – Lhaplus など? 
● Mac OS X - アーカイブユーティリ 
ティ(標準機能) 
● Linux – コマンドラインでなんとか 
してください?(GUIのものもあったは 
ず)
ファイル展開、できましたか? 
● *.c *.h などのファイルとディレクトリ 
がそこにできていると思います。 
●ぶっちゃけ、どこに展開してもらっても 
構いません(この段階では)。 
●ここからはじまります。
git clone? 
● ああ、そんな方法ありますね。 
● このスライドでは「ソースコードのtar 
ボール」で済ませちゃってます。 
● とりあえず「読むところ」まで、ですの 
で。
というマエフリ。
- 導入部 II - 
これでコードを読めると思ったのかい? 
HAHAHA!!甘い、甘いぜ。 
金平糖並みだぜ。
最初に見るものは? 
●??Dみたいな、コレ読んどけ、 
「れどめ」的なものはあるの? 
●ありますよ。(その振りおかしいw) 
いくつか。ビルド関連からかな? 
● えっ、いくつか?
Linuxだと 
● build_files/cmake/exampl 
e_scripts/cmake_linux_ins 
tall.txt 見るとビルドの流れがわ 
かるかと。 
●ん? cmake?
叠濒别苍诲别谤ソースコート?リーテ?ィンク?
CMake 
●ソフトウェアのビルドの自動化 
ツール 
●「ビルド環境情報」と「ビルドに 
必要な処理」の面倒を見てくれま 
す(configure,make)。 
●大まかにわかってればいいよ?
doc/build_systems/cmake.txt 
● cmakeするときのビルド手順のガイド 
だね。 
● scons.txtっていうのもあるけど? 
●どちらもビルドするときの文書だね。 
●ビルド?
「ビルド」知らないヤツはさすがに、ここにいな 
いだろうということで、書いてきませんでした。 
必要があったら口頭で。
CMakeLists.txt 
● CMakeの設定とか書くところ 
●「何の機能を入れる?」ってとこ 
ろですね。
最初に见ておくファイルはここまで。
2.72フォルダツアー。
TextWranglar 
● 必要のある時にエディタで見せようと思いま 
す。 
● (自分的備忘)フォルダ表示モードは View> 
Go Here in Disk Browser
ルートフォルダ
GNUmakefile 
●これ、なんだろう?liteとか 
headlessとかあるけど? 
● cycles単体で、とかコンパイル 
するとか、その辺だと思います 
よ?
externフォルダ 
●ライブラリ類ですね。 
● externフォルダは、あまり気に 
しなくてもいいでしょう…?
internフォルダ 
●いろいろありますね。 
● 'ghost'っていうのがウィ 
ンドウマネージャだったと 
思います。 
●あと'cycles'とかもありま 
すね。
诲辞肠フォルダ
mystery_of_the_blend.html 
● doc/blender_file_format 
にあります。 
●ブラウザで開いてみてください。
source/blender 
フォルダ
本日のメインディッシュ? 
●ソースコード(*.cとか*.h)は機能 
別に分けられて格納されているよ 
うですね。 
– ./<機能名>/*.h 
– ./<機能名>/intern/*.c
Blender のソースコードを 
読んでみよう 
- もうそろそろじゃね? -
始めましょうか。 
● blenfont/intern/blf_dir.c 
● *blf_dir_search() を見よう
さてここで悲しいお知らせ 
● “BLI_join_dirfile”ってなんね? 
●かんすう? 
●このファイルには無いとよ? 
●他のファイルも見んといかんと? 
テキストエディタだけじゃ太刀打ち出来ない…
そこに颯爽?と現れる「黒い画面」 
●「コンソール」とか「ターミナ 
ル」とか「コマンドプロンプト」 
とかいろいろ呼ばれます。 
●コマンド入力してみよう。
grepコマンド 
● “cd source/blender” 
● “grep -rn BLI_join_dirfile”
関数があるところを確認 
.//blenlib/intern/path_ 
util.c 
ファイルパス 
1904 行数 
void 
BLI_join_dirfile(char 
*__restrict dst, const 
size_t maxlen, const 
char *__restrict dir, 
const char *__restrict 
file) 
関数の型宣言していると 
ころ(常にvoidが来ると 
は限りませんよ?)
叠濒别苍诲别谤ソースコート?リーテ?ィンク?
他にもいろいろありますけど 
● 大まかにこんな感じです。流れを追っ 
ていくのが大体の感じ。 
● 他にもおぼえることありますよ? 
– if文の分岐などの制御文
そういえば関数名の「BLI」って? 
●関数名の名前に規則を付けていま 
す。 
●どのモジュールで定義されている 
かがわかるようになっています。 
–blenlib → BLI 
–blenkernel → BKE
ctags 
● ああ、そういえば「関数宣言している 
ところに飛べる機能」とか持っている 
テキストエディタ、あるね。 
● “ctags”でググってみよう。
まとめ
● ソースコードリーディングの定義 
● 読むための準備 
– テキストエディタ/サイト/ソースコード 
● Blenderのソースコード 
● 最初に見るもの 
● 関数? 
● grepコマンド 
● ctags?
おまけ 
● ん? blenderって Cなの?C++な 
の? 
● 2.72だと 
– “find ./ -name *.c | wc -l” 1142 
– “find ./ -name *.cpp | wc -l” 1213
おまけ2 
● 新しいBlenderのマニュアル 
– http://www.blender.org/manual/ 
● スマホでも見てね 
● Wiki→Sphinxベースに。 
● ただし英語(国際化の話はまだ?) 
● bf-docboardで何かやってるよ
叠濒别苍诲别谤ソースコート?リーテ?ィンク?
Thanks4Watching 
& 
Happy Blending!!

More Related Content

What's hot (20)

PPTX
竞技プログラミングのための颁++入门
natrium11321
?
PPTX
Sql server 2017 からはじめる graph データベース
Oda Shinsuke
?
PDF
距离まとめられませんでした
Haruka Ozaki
?
PDF
効果測定入門 Rによる傾向スコア解析
aa_aa_aa
?
PDF
Chapter9 一歩進んだ文法(前半)
itoyan110
?
PDF
オブジェクト指向プログラミングの现在?过去?未来
増田 亨
?
PDF
静的型つき組版処理システムSATySFi @第61回プログラミング?シンポジウム
T. Suwa
?
PDF
第126回 ロボット工学セミナー 三次元点群と深層学習
Naoya Chiba
?
PDF
Prml6
Arata Honda
?
PPTX
単纯パーセプトロン
T2C_
?
PDF
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング?ラボ)
?
PDF
PRML 8.2 条件付き独立性
sleepy_yoshi
?
PDF
PyMC mcmc
Xiangze
?
PPTX
惭痴笔パターンによる设计アプローチ「あなたのアフ?リ报连相て?きてますか」
U-dai Yokoyama
?
PDF
オブジェクト指向エクササイズのススメ
Yoji Kanno
?
PDF
距离と分类の话
考司 小杉
?
PDF
深層学習 勉強会第5回 ボルツマンマシン
Yuta Sugii
?
PDF
狈耻尘笔测闇入门
Ryosuke Okuta
?
PDF
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
torisoup
?
PDF
20190307 visualslam summary
Takuya Minagawa
?
竞技プログラミングのための颁++入门
natrium11321
?
Sql server 2017 からはじめる graph データベース
Oda Shinsuke
?
距离まとめられませんでした
Haruka Ozaki
?
効果測定入門 Rによる傾向スコア解析
aa_aa_aa
?
Chapter9 一歩進んだ文法(前半)
itoyan110
?
オブジェクト指向プログラミングの现在?过去?未来
増田 亨
?
静的型つき組版処理システムSATySFi @第61回プログラミング?シンポジウム
T. Suwa
?
第126回 ロボット工学セミナー 三次元点群と深層学習
Naoya Chiba
?
単纯パーセプトロン
T2C_
?
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング?ラボ)
?
PRML 8.2 条件付き独立性
sleepy_yoshi
?
PyMC mcmc
Xiangze
?
惭痴笔パターンによる设计アプローチ「あなたのアフ?リ报连相て?きてますか」
U-dai Yokoyama
?
オブジェクト指向エクササイズのススメ
Yoji Kanno
?
距离と分类の话
考司 小杉
?
深層学習 勉強会第5回 ボルツマンマシン
Yuta Sugii
?
狈耻尘笔测闇入门
Ryosuke Okuta
?
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
torisoup
?
20190307 visualslam summary
Takuya Minagawa
?

Similar to 叠濒别苍诲别谤ソースコート?リーテ?ィンク? (20)

PDF
20120706-readablecode
Masanori Kado
?
PDF
PHPカンファレンス関西 2011
Takako Miyagawa
?
PDF
WEBデザイナーのためのエディタ入門 先生:金澤 直毅
schoowebcampus
?
PDF
奥别产デザイナーのためのエディタ入门
Naoki Kanazawa
?
PDF
Android Framework Code Readingのしおり ver 1.2
Shinobu Okano
?
PDF
NGN2012B 発表資料
Kenji Nagase
?
PDF
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
?
PDF
リーダブルコードを読んだ后
Kouhei Sutou
?
PDF
フ?ロク?ラミンク?講座 #3 コート?を書く
ZOIdayo
?
PDF
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
Yuki Tanaka
?
PDF
顿箩补苍驳辞のススメ
Alisue Lambda
?
PDF
Htmlコーディングの効率化 前編
Yasuhito Yabe
?
PDF
贬辞飞迟辞よいデザイン
Hiroki Yagita
?
PDF
ソフトウェア設計原則【SOLID】を学ふ? #2 インターフェイス分離の原則.pdf
耕二 阿部
?
PDF
叠濒别苍诲别谤とコード
Tetsuo Mitsuda
?
PDF
捕鲸!详解诲辞肠办别谤
雄哉 吉田
?
DOC
パッチを书いてみよう(第17回狈蝉别驳勉强会尝罢)
Masahiro Yamada
?
PDF
鲍苍颈迟测でオニオンアーキテクチャ
torisoup
?
PPTX
20100324 勉強会資料(ドメイン駆動)
Masayuki Kanou
?
PDF
Programming camp code reading
Hiro Yoshioka
?
20120706-readablecode
Masanori Kado
?
PHPカンファレンス関西 2011
Takako Miyagawa
?
WEBデザイナーのためのエディタ入門 先生:金澤 直毅
schoowebcampus
?
奥别产デザイナーのためのエディタ入门
Naoki Kanazawa
?
Android Framework Code Readingのしおり ver 1.2
Shinobu Okano
?
NGN2012B 発表資料
Kenji Nagase
?
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
?
リーダブルコードを読んだ后
Kouhei Sutou
?
フ?ロク?ラミンク?講座 #3 コート?を書く
ZOIdayo
?
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
Yuki Tanaka
?
顿箩补苍驳辞のススメ
Alisue Lambda
?
Htmlコーディングの効率化 前編
Yasuhito Yabe
?
贬辞飞迟辞よいデザイン
Hiroki Yagita
?
ソフトウェア設計原則【SOLID】を学ふ? #2 インターフェイス分離の原則.pdf
耕二 阿部
?
叠濒别苍诲别谤とコード
Tetsuo Mitsuda
?
捕鲸!详解诲辞肠办别谤
雄哉 吉田
?
パッチを书いてみよう(第17回狈蝉别驳勉强会尝罢)
Masahiro Yamada
?
鲍苍颈迟测でオニオンアーキテクチャ
torisoup
?
20100324 勉強会資料(ドメイン駆動)
Masayuki Kanou
?
Programming camp code reading
Hiro Yoshioka
?
Ad

More from Tetsuo Mitsuda (15)

PDF
叠濒别苍诲别谤で和柄をつくるお话
Tetsuo Mitsuda
?
PDF
20170210 security talos
Tetsuo Mitsuda
?
PDF
叠濒别苍诲别谤アーチストに捧げる10の言叶
Tetsuo Mitsuda
?
PDF
20150829 buturi
Tetsuo Mitsuda
?
PDF
273new
Tetsuo Mitsuda
?
PDF
flip the chabudai
Tetsuo Mitsuda
?
PDF
From A to B
Tetsuo Mitsuda
?
PDF
“Blender初心者が知っておくべきこと” のいくつか
Tetsuo Mitsuda
?
PDF
フ?レンタ?ーを顿颈蝉ってみる
Tetsuo Mitsuda
?
PDF
Submitwordpresspy
Tetsuo Mitsuda
?
PDF
20120915 Pythonは本当にBlenderの役に立っているか?
Tetsuo Mitsuda
?
PDF
Podiff20120127
Tetsuo Mitsuda
?
PDF
20111112 kofblender
Tetsuo Mitsuda
?
PDF
20110802proporsal bljpnze
Tetsuo Mitsuda
?
PDF
Blenderde Qr Code
Tetsuo Mitsuda
?
叠濒别苍诲别谤で和柄をつくるお话
Tetsuo Mitsuda
?
20170210 security talos
Tetsuo Mitsuda
?
叠濒别苍诲别谤アーチストに捧げる10の言叶
Tetsuo Mitsuda
?
20150829 buturi
Tetsuo Mitsuda
?
flip the chabudai
Tetsuo Mitsuda
?
From A to B
Tetsuo Mitsuda
?
“Blender初心者が知っておくべきこと” のいくつか
Tetsuo Mitsuda
?
フ?レンタ?ーを顿颈蝉ってみる
Tetsuo Mitsuda
?
Submitwordpresspy
Tetsuo Mitsuda
?
20120915 Pythonは本当にBlenderの役に立っているか?
Tetsuo Mitsuda
?
Podiff20120127
Tetsuo Mitsuda
?
20111112 kofblender
Tetsuo Mitsuda
?
20110802proporsal bljpnze
Tetsuo Mitsuda
?
Blenderde Qr Code
Tetsuo Mitsuda
?
Ad

叠濒别苍诲别谤ソースコート?リーテ?ィンク?