Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
APIとABIの違い
Search
Satoru Takeuchi
PRO
August 31, 2025
Technology
5
290
APIとABIの違い
以下動画のテキストです
https://youtu.be/T-01LJnqdyg
Satoru Takeuchi
PRO
August 31, 2025
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
97
waruiBPF
sat
PRO
0
92
eBPFとwaruiBPF
sat
PRO
4
2.7k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
89
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
180
様々なファイルシステム
sat
PRO
0
320
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
410
ソースを読むプロセスの例
sat
PRO
22
17k
メモリマップトファイル
sat
PRO
1
170
Other Decks in Technology
See All in Technology
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
3.7k
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
230
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
200
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
150
ハッカソンから社内プロダクトへ AIエージェント ko☆shi 開発で学んだ4つの重要要素
leveragestech
0
110
LayerX QA Night#1
koyaman2
0
250
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
200
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
360
Claude Codeを使った情報整理術
knishioka
0
100
Identity Management for Agentic AI 解説
fujie
0
460
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
19
7.5k
AI駆動開発の実践とその未来
eltociear
1
480
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
120
Statistics for Hackers
jakevdp
799
230k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
4 Signs Your Business is Dying
shpigford
186
22k
GraphQLとの向き合い方2022年版
quramy
50
14k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Facilitating Awesome Meetings
lara
57
6.7k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
22
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Designing for Timeless Needs
cassininazir
0
93
Transcript
APIとABIの違い Aug. 31st, 2025 Satoru Takeuchi X: satoru_takeuchi 1
はじめに • ソフトウェア技術の文脈で「API」と「ABI」という言葉がよく出てくる • どちらも異なるプログラム(関数含む)間で情報をやりとりするためのインタフェース だがレイヤが異なる ◦ API(Application Programming Interface)
▪ ソースコードレベル ◦ ABI(Application Binary Interface) ▪ バイナリレベル • これだけではよくわからないので、2つの違いを具体例を使って説明 • 話を単純化するために、以下の例を考える ◦ Linux環境である ◦ C言語で書かれたソースコードをコンパイルして足し算をする関数を呼び出す 2
足し算をするplus関数のAPI • 書式通りにソースコードを書いてコンパイルすると、plus関数を呼び出して結果を受 け取る機械語コードを出力してくれる ◦ 言語が違うとAPIも違う事が多い 3 c = plus(1,
2); printf(“%d\n”, c); ソースコード aaabbbccc xxxyyyzzz コンパイル x86_64機械語コード ARM64機械語コード 書式: int plus(int x, int y); 説明: xとyを足した結果を返す APIを使って呼び出す
ABI • バイナリレベルで、関数を呼び出して戻り値を受け取る方法を定める • x86_64 LinuxでC言語で書かれた関数を呼び出す場合に通常使用するABI ◦ 第1,第2引数はCPUのrdi,rsiレジスタを使って渡し、 call機械語命令を使って呼び出す ◦
戻り値はCPUのraxレジスタを使って返す • ソースコードをバイナリ(機械語コード)にコンパイルする時、した後の話 ◦ プログラマは通常ABIを気にする必要はない 4 aaabbbccc x86_64機械語コード dddeeefff x86_64のplusのコード ABIを使って呼び出す
📝 役に立つページ • 一般的な話: wikipediaの「呼び出し規約」のページ ◦ https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84 • x86_64の話: System
V Application Binary Interface AMD64 Architecture Processor Supplement Draft Version 0.99.7(とくに3.2が役立つだろう) ◦ https://www.uclibc.org/docs/psABI-x86_64.pdf ◦ Linux上のC言語で書かれた関数は通常この ABIを使う 5
プログラマがABIを気にする場合の例 • go-sqlite3 ◦ https://github.com/mattn/go-sqlite3 ◦ libsqlite3ライブラリを使うための Go言語用ライブラリ • 課題
◦ Goのソースコードから直接 libsqlite3の関数を呼び出せない • 解決策 ◦ ユーザにはGo標準の”database/sql”APIを提供 ◦ APIを実装する関数の中で、 libsqlite3の機械語コードをABIを使って呼び出す ▪ cgoというしくみを使う 6
まとめ • APIとABIはどちらもプログラム間で情報をやりとりするインタフェース • レイヤが違う ◦ API: ソースコードレベル ◦ ABI:
バイナリレベル • プログラマは通常APIについてだけ考えればよい • 別言語のライブラリを呼び出すようなときにABIを意識することも 7