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
APIとABIの違い
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
August 31, 2025
Technology
5
370
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
大人になるまでの道
sat
PRO
8
3.1k
ファイルシステムの不整合
sat
PRO
2
120
書籍執筆での生成AIの活用
sat
PRO
1
380
ChatGPTに従って体調管理2026
sat
PRO
0
160
eBPF
sat
PRO
1
120
waruiBPF
sat
PRO
0
120
eBPFとwaruiBPF
sat
PRO
5
4k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
110
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
210
Other Decks in Technology
See All in Technology
Serverless Agent Architecture on Azure / serverless-agent-on-azure
miyake
1
110
三菱UFJ銀行におけるエンタープライズAI駆動開発のリアル / Enterprise AI_Driven Development at MUFG Bank: The Real Story
muit
10
20k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.8k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
43k
dbt meetup #19 『dbtを『なんとなく動かす』を卒業します』
tiltmax3
0
130
LY Tableauでの Tableau x AIの実践 (at Tableau Now! - 2026-02-26)
yoshitakaarakawa
0
960
【SLO】"多様な期待値" と向き合ってみた
z63d
2
250
OCI技術資料 : 外部接続 VPN接続 詳細
ocise
1
10k
【PyCon mini Shizuoka 2026】生成AI時代に画像処理やオーディオ処理のノードエディターを作る理由
kazuhitotakahashi
0
200
Eight Engineering Unit 紹介資料
sansan33
PRO
1
6.8k
AIで 浮いた時間で 何をする? 2026春 #devsumi
konifar
16
3.5k
技術キャッチアップ効率化を実現する記事推薦システムの構築
yudai00
2
160
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
220
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
140
The SEO identity crisis: Don't let AI make you average
varn
0
400
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
59
50k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
240
Amusing Abliteration
ianozsvald
0
120
How to train your dragon (web standard)
notwaldorf
97
6.5k
The untapped power of vector embeddings
frankvandijk
2
1.6k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
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