SlideShare a Scribd company logo
1 of 31
低レイヤー入門
でむら なりかず
つ部 Android 勉強会 2013年4月
2013/4/20
自己紹介
●
でむら なりかず
●
フリーランスなエンジニア
●
本書いたりしてます
●
低レイヤー(アセンブラ)が好き
●
過去に家庭用ゲーム機のプログラマをしてた
2013/4/20
富山県から来ました
2013/4/20
NDK本第2版
ちょっとだけ宣伝を。
数少ないNDK本の一つ。
書店にて好評発売中
買ってね
http://www.amazon.co.jp/gp/product/4798036307
2013/4/20
ここからが本編
2013/4/20
http://www.youtube.com/watch?v=-Y6zXnPL53E
2013/4/20
それは低レイヤーの世界
2013/4/20
「低レイヤー? 何それ? 意味分かんない」
http://www.youtube.com/watch?v=-Y6zXnPL53E
2013/4/20
アプリケーション
ブラウザ
OS
ハードウェア
Webアプリ
仮想マシン 低レイヤーな領域
ハードウェア制御~ソフ
トウェア動作を支えるソ
フトウェアレイヤー
低レイヤー =
(厳密な定義がある訳ではない)
高レイヤー
低レイヤー
2013/4/20
利用する言語も異なる
低レイヤー 高レイヤー
ネイティブコード(CPUが直接理解
できるコード)などを出力する言語
●
アセンブリ言語
●
C
●
C++
など
スクリプト言語など
●
Perl
●
Python
●
Ruby
●
JavaScript
など
2013/4/20
ADFDBDEBAFAB0205AB
BDEFEEABCDEEABDE
低レイヤーの世界では、よくバイナリーコードが
登場する。
そのため、その道を究めるとバイナリーコードで
会話できるようにも(個人の感想です)
2013/4/20
「私Pythonistaだから低レイヤーの知識なんて必要ないもん!」
「そんなことねーよ!」 http://www.youtube.com/watch?v=-Y6zXnPL53E
2013/4/20
スクリプト言語だけでできる仕
事も多い
しかし、低レイヤーの技術や知
識があると、いろいろと選択肢
が広がる
2013/4/20
ハンマーを持つ人には
すべてが釘に見える
古いことわざ
2013/4/20
高レイヤーからネイティブコードを呼び出す
– NPAPI(ブラウザから)
– AIR Native Extension(AIRから)
– Android NDK(Javaから)
低レイヤー技術を元にしたライブラリ
– asm.js
技術利用例(アプリ開発)
2013/4/20
Perl / Ruby / Python etc...
CPU
高速処理向け
ライブラリ 拡張ライブラリ
各種API
(C言語向け)
C/C++ C/C++
LLのみ
LL + 低レイヤー
カバーできる範囲が
全然違う
2013/4/20
「どこから手を出したらいいの?教えてっ」
http://www.youtube.com/watch?v=-Y6zXnPL53E
2013/4/20
ステップは4段階
2013/4/20
Step 0:
低レイヤーを習得する
理由を見つける
動機付け大事。技術習得より、まずは動機。
2013/4/20
Step 1:
C言語を習得する
●
C言語が標準
●
C++は使えるに超したことはないが無
理するな
●
言語の習得と同時に低レイヤーで必須
のハードウェアの知識もある程度は身
につく(すべてではない)
2013/4/20
Step 2:
ソースコードを読む
●
ソースコードを読んで雰囲気を掴む
– 興味がある箇所だけでOK
– 他人のソースが読めるのも大切なスキル
●
Linuxカーネル、各種ライブラリのソース
コードなど
2013/4/20
Step3:
コードを書いて動かす
●
たくさん書いて、たくさん試す
●
量をこなすことで質が向上する
– 結果をblogなどで公開するのがお勧め
2013/4/20
以降は各々の道で
●
OSの仕組みを理解する
– UNIX v6のソースコードを読む など
●
ハードウェアを極限まで使う
– コンパイラの仕組み、アセンブリ言語の習得
●
ハードウェア制御
– mbedなどのマイコンを利用
など
2013/4/20
そんな感じで、進めてみて
はいかがでしょーか
2013/4/20
2013/4/20
低レイヤーを学習すると、コ
ンピュータの根本が理解でき
て面白いですよ
うまく行けば、おちんぎんUP
にもつながるよ
2013/4/20
なお、本スライドで利用した映像は
2013/4/20
http://www.youtube.com/watch?v=-Y6zXnPL53E
2013/4/20
内容が気になる!という方は
2013/4/20
http://www.youtube.com/watch?v=-Y6zXnPL53E
2013/4/20
ご静聴ありがとうございました

More Related Content

What's hot

「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroiddemuyan
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかShunsukeNakamura17
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 

What's hot (20)

「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 

More from demuyan

ソフトウェア開発の歴史を振り返る
ソフトウェア開発の歴史を振り返るソフトウェア開発の歴史を振り返る
ソフトウェア開発の歴史を振り返るdemuyan
 
GDKとLLVM(横浜PF部向け)
GDKとLLVM(横浜PF部向け)GDKとLLVM(横浜PF部向け)
GDKとLLVM(横浜PF部向け)demuyan
 
組込Android本の執筆環境
組込Android本の執筆環境組込Android本の執筆環境
組込Android本の執筆環境demuyan
 
ゲーム屋的パフォーマンスチューニング
ゲーム屋的パフォーマンスチューニングゲーム屋的パフォーマンスチューニング
ゲーム屋的パフォーマンスチューニングdemuyan
 
Linuxカーネルから紐解くAndroid
Linuxカーネルから紐解くAndroidLinuxカーネルから紐解くAndroid
Linuxカーネルから紐解くAndroiddemuyan
 
Android&Web&Titanium
Android&Web&TitaniumAndroid&Web&Titanium
Android&Web&Titaniumdemuyan
 
Gdgd発表スライド
Gdgd発表スライドGdgd発表スライド
Gdgd発表スライドdemuyan
 
Android & BeagleBoardで組込入門
Android & BeagleBoardで組込入門Android & BeagleBoardで組込入門
Android & BeagleBoardで組込入門demuyan
 
AppBank 村井氏 講演資料
AppBank 村井氏 講演資料AppBank 村井氏 講演資料
AppBank 村井氏 講演資料demuyan
 
Androidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点からAndroidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点からdemuyan
 
いまさら聞けないRuby1.9
いまさら聞けないRuby1.9いまさら聞けないRuby1.9
いまさら聞けないRuby1.9demuyan
 
現在のCOM事情
現在のCOM事情現在のCOM事情
現在のCOM事情demuyan
 
Yet Another Development Language
Yet Another Development LanguageYet Another Development Language
Yet Another Development Languagedemuyan
 

More from demuyan (13)

ソフトウェア開発の歴史を振り返る
ソフトウェア開発の歴史を振り返るソフトウェア開発の歴史を振り返る
ソフトウェア開発の歴史を振り返る
 
GDKとLLVM(横浜PF部向け)
GDKとLLVM(横浜PF部向け)GDKとLLVM(横浜PF部向け)
GDKとLLVM(横浜PF部向け)
 
組込Android本の執筆環境
組込Android本の執筆環境組込Android本の執筆環境
組込Android本の執筆環境
 
ゲーム屋的パフォーマンスチューニング
ゲーム屋的パフォーマンスチューニングゲーム屋的パフォーマンスチューニング
ゲーム屋的パフォーマンスチューニング
 
Linuxカーネルから紐解くAndroid
Linuxカーネルから紐解くAndroidLinuxカーネルから紐解くAndroid
Linuxカーネルから紐解くAndroid
 
Android&Web&Titanium
Android&Web&TitaniumAndroid&Web&Titanium
Android&Web&Titanium
 
Gdgd発表スライド
Gdgd発表スライドGdgd発表スライド
Gdgd発表スライド
 
Android & BeagleBoardで組込入門
Android & BeagleBoardで組込入門Android & BeagleBoardで組込入門
Android & BeagleBoardで組込入門
 
AppBank 村井氏 講演資料
AppBank 村井氏 講演資料AppBank 村井氏 講演資料
AppBank 村井氏 講演資料
 
Androidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点からAndroidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点から
 
いまさら聞けないRuby1.9
いまさら聞けないRuby1.9いまさら聞けないRuby1.9
いまさら聞けないRuby1.9
 
現在のCOM事情
現在のCOM事情現在のCOM事情
現在のCOM事情
 
Yet Another Development Language
Yet Another Development LanguageYet Another Development Language
Yet Another Development Language
 

Recently uploaded

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Recently uploaded (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

低レイヤー入門