60002


素朴な疑問なのですが、APIはなぜ「叩く」と言われるのでしょうか？  
先日あるカンファレンスで、シカゴ生まれのアメリカ人エンジニアが若干たどたどしい日本語で、

「APIヲタタク…」

と呪文のように言っていた様が、妙に頭に残ってしまいました。  
一体いつ頃からAPIは「叩か」れ出したのでしょうか？  
また、誰が「叩き」始めたのかもご存知の方がおられましたらお教えください。

由来もわからず口にのぼせるのが、どうしても性に合いません。。


CC BY-SA 4.0
2019-10-26T17:50:43.667
60000
2019-11-05T16:41:14.770
2019-10-27T02:27:39.873
3060
36023
question
専門用語
APIはなぜ「叩く」のですか？


英語圏のエンジニアが使う`hit api`の和訳だと思います。  
個人的には、ＡＰＩをたたいたことはないです。コマンドを「たたく」ことはありますが、ＡＰＩは「呼ぶ(call)」ことが多いです。  
「たたかれる」ものはコマンドのように新たにプロセスが生成されるイメージがあり、ＡＰＩに使うのはなじみません（あくまも個人の感想です）。コマンド名をキー入力し、リターンキー(今はENTERキー？)をたたくのが由来だと勝手に思っています。  
なお、`ping`は「たたく」のではなく。「打ちます」。「撃つ」のかもしれません。

[不思議の国のSE用語](https://qiita.com/t_nakayama0714/items/478a8ed3a9ae143ad854)を見つけました。けっこう面白いですが、あまり一般的ではないと思いました。

【追記】  
「WebAPIを叩く」という表現をみつけました。こちらはあまり違和感がありません。「背後に重い処理が動くから」かなと自己分析しています。

このような「言い回し」は個人が、その人となじみのある周囲の人たちと会話するときに使用するもので、「よく知らない人」には使わないようにしています。


CC BY-SA 4.0
2019-10-26T23:01:13.937
60002
2019-10-26T23:10:58.710
2019-10-26T23:10:58.710
35558
35558
60000
answer


この場合の「叩く」は、こちらからの呼びかけに応じてなにか返事があることを期待しての『叩く』で、個人的には「中に誰か入っているか確認するため
**ドアを叩く** 」が一番イメージが近いです。

「ポートノッキング」などの用語/手法もありますが、APIに対して英語では call や callback が一般的かと思います。

* * *

他の方の回答と同じく、これらの"口語"は知ってる人には伝わるけど書き言葉としては不適切だと感じています ("エラーを吐く" 等)。


CC BY-SA 4.0
2019-10-27T01:38:21.963
60004
2019-10-27T01:38:21.963
3060
60000
answer


[叩く／敲く(タタク)とは - コトバンク](https://kotobank.jp/word/%E5%8F%A9%E3%81%8F-560722)

> ８ （「門をたたく」などの形で）教えを請うためにたずねる。「師の門を―・く」

日本語の意味の「教えを請うためにたずねる」が近いのではないかと考えます。

個人的には

  * 実装が完了したばかりで動作確認をしたい場合は、「動くことを確認したいので、APIを叩いてみてください」
  * テストもおわり、実務で使うようになった場合では「APIを呼んで（callして）いただければ値が返ります」

というようにどちらかというと「確認」という意味合いを含みたい場合に「叩く」を使って表現する傾向があるように思います。

冒頭に記載した辞書の別の箇所を引用しますが、  
この「確認を含んだ意味」をやはり叩くはもっているようです（ようすを探ったりするの部分）。

[叩く／敲く(タタク)とは - コトバンク](https://kotobank.jp/word/%E5%8F%A9%E3%81%8F-560722)

> ４ 相手の考えを聞いたり、ようすを探ったりする。打診する。「先方の意向を―・く」

* * *

なので、本来持っている日本語の意味を応用して（もしくはただのスラングとして）使っているだけなので、いつからか？というのに回答するのは難しそうに感じます。

経験としてはWebAPIをスマホアプリ側から呼び出す際や、AjaxによるWebAPIを呼び出す際には耳にするようになっていた記憶があります（2010年頃）。


CC BY-SA 4.0
2019-10-29T23:47:36.000
60095
2019-10-30T00:18:50.457
2019-10-30T00:18:50.457
9008
9008
60000
answer


「APIは」とか API「だけ」ではなく、昔からいろんなものが「叩かれ」ているのだと思われます。

コンピュータ関連で言えば、初期の入力装置がキーボードを使う「パンチカード」や「テレタイプ端末」で、以後も現在までずっとキーボードを使っており、また同時期に普及した電卓でキーを操作する様子が、共に「
**叩く** 」と表現されるからでしょう。

ただし「叩く」APIと「呼ぶ」APIの区別があるかもしれません。

APIに限らず色々なものが「叩かれ」ますが、その時に前置きとして付くことが多いのが、「直接」(あるいは少ないですが「低レベル」)です。

普段はライブラリ/フレームワーク/サービス/システムに覆われていて間接的に使われている「低レベルな」ものを、「直接」使うから「叩く」で表現する感じです。

普段の使われ方では遅かったり大まかだったりするものを、早く細かく動かすために「直接叩いて」勢いを付ける感じでもあります。

こう考えると、「 **いつ頃** 」かは何かのAPIが直接は使われなくなった頃、「 **誰が**
」は直接は使われなくなったAPIを使った/使う必要があった人、と見なすことも出来ます。

働いてきた分野にもよりますが、業界に経験の長い人間は、低レベルの機能しか無かったころのやり方で
BIOS/ポート/ハード等を叩いているので、その対象にAPIが増えても、「叩く」といった言葉に大して違和感は無い感じですね。  
そうした経験者の言動を普段から見て、言い回しを引き継いでいると言ったことも考えられます。  
新人でも一度聴いたら、色んな所に応用したくなるものでしょう。

* * *

**なお、APIと言う言葉の普及だけなら、早くても1980年代後半、実質的には1990年代後半から。**  
「叩く」対象の名前が普及していないので、言われだすのはその普及後でしょう。  
初出はとても昔ですが、それからの要点は後ろに追記しておきます。

* * *

たまたま見つけました。  
**MFCとかVCLが普及したから、「API直叩き」という言葉が出てきたということの裏打ちですね。**  
[ソフトウェア開発実践セミナーWindowsプログラミングとネットワーク...2002年12月4日（第8回）](http://www.misojiro.t.u-tokyo.ac.jp/~tutimura/sem3/sem3-1204.pdf)  
27ページ

> ５．Windowsネットアプリ開発  
>  各開発環境に依存  
>  WinSockをカプセル化したクラスライブラリ  
>  （MFC→CSocket、Delphi→TSocket）  
>  内部でのネットワーク処理はWinSock  
>  結局最後はWinSock API直叩き

* * *

**何かを「叩く」表現が使われている、古い年代への懐古記事(日付は無し)**

思い出話ですが、当時やっていたことを、どう呼んでいたか、というのはそれほど変わっていないでしょう。何かを呼び出す・実行する・操作するといったことを叩くと言うのは昔からあったことだと思われます。  
[ホーム Lab.について
代表のひとり言](https://dnki.co.jp/lab-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/%E4%BB%A3%E8%A1%A8%E3%81%AE%E3%81%B2%E3%81%A8%E3%82%8A%E8%A8%80/)

> ...1986年頃...  
>
> OSが提供する機能（APIと言います）では互換性がありましたが、APIでは速度が遅いし、機能は貧弱、バグはあるわで実用的なアプリを作ろうとするとBIOSを叩くか、ハードウェアを直接叩く必要がありました。

これも思い出話です。「こじつけ」とか言われそうですが、キーボード(テレタイプ端末)からコンピュータを扱う諸々のことは、「叩く」に結びついて説明されるわけです。  
[テレタイプ - 漢字情報研究センター -
京都大学](http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/IEICE2010-1.pdf)

> 4ページ 図10「PDP-11」でUNIXを開発するデニス・リッチーとケン・トンプソン(11)
> 2台の「テレタイプ・モデル33」のうち1台をトンプソンが叩いている.

* * *

**「叩く」が使われて日付の記載があるもの**

日付の記載があって、今検索して一番古そうなのはこれでしょうか。  
[叩く - 通信用語の基礎知識](https://www.wdic.org/w/TECH/%E5%8F%A9%E3%81%8F)

> 2001/10/05 作成  
>  2013/04/22 更新  
>  (APIやI/Oポートに)アクセスすること。コマンドを発行すること。  
>  概要  
>  APIを利用したり、I/Oポートを制御したりするようなシーンでは、技術者スラングで、使う、アクセスする、といった意味で「叩く」または「たたく」という。  
>  例えば、「ポートを叩く」「GPIOを叩く」「非公開APIを叩く」「サブルーチンを叩く」「標準出力を叩く」などと表現する。  
>  「突く」(つつく)という人もいる。

更新日に追加されたのでは？という向きにはこちらでしょうか。  
[詳解UNIXプログラミング - bkブログ](http://0xcc.net/blog/archives/000127.html)

> 2006年8月 2日  
>  ...システムコールを直接叩く機会がなくても、...

[telnet経由でHTTP叩くとき用メモ](https://gallu.hatenadiary.jp/entry/20070110/p1)

> 2007-01-10  
>  telnetで80番叩いてから

[インテルがBIOS代替のシステムを発表](https://srad.jp/story/03/02/25/0510206/)

> 2003年02月25日 14時07分  
>  これが流行ると、BIOSを直接叩くようなOSやツールはもう使えない…かな。

[ある家電メーカーの社員と話していて、
「Ｉ／...](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q132653833)

> 2005/1/23 00:47:39  
>  「Ｉ／Ｏポートを叩く」という言葉を聞きましたが、どういう意味ですか？
>
> マイコンのプログラム側から信号を出してやる場合とか、外部から入力を受け取るような場合に、「叩く」と言うこともあります。

* * *

**他に日付は無いが「API(システム)を叩く」記載があるもの**

[「シェル」と「端末(ターミナル)」の違いと詳細](https://chienomi.org/archives/livewithlinux/2022)

> 最近は端末デバイスを直接叩くといったことを
>
> 別にシステムコールを直に叩くわけではなく

[叩く- 誰も教えてくれない用語集](https://seesaawiki.jp/w/nobo_i0902/d/%C3%A1%A4%AF)

> UNIXサーバや、Windowsサーバで、任意のコマンドを実行させたいときにコマンドを叩くと表現します。
>
> UNIX系で言うと、作成したシェルを実行させたい場合にシェルを叩くといいます。
>
> サーバ系のエンジニアはコマンドを「叩く」と表現する場合が多いが、ネットワークSEはコマンドを「打つ」と表現することが多い。
>
> プログラミングの世界では「APIを叩く（＝呼び出す）」なんて表現もあります。

[低レベルAPIを叩いてプログラムすることの醍醐味](https://blogs.msdn.microsoft.com/aonishi/2006/08/16/api/)

> 低レベルAPIを叩くことの意義というか、
>
> 確かに低レベルAPIを叩くことは容易ではないでしょう。

* * *

ちなみに不具合調査などのために「叩く」場合はこちらのアナロジー(直すため)もあるでしょう。  
[パソコン、IT周辺機器も叩けば直る？叩いて直るわけと、そのリスクとは](https://mbp-japan.com/saga/pc-
pro/column/4008599/)

* * *

**API初出から普及までのトピック**

  * APIの初出は1968のコンファレンス記事  
1968:初出 [Application programming
interface](https://en.wikipedia.org/wiki/Application_programming_interface)

> The term API seems to appear for the first time in the article of Ira W.
> Cotton, Data structures and techniques for remote computer graphics,
> published in 1968.  
>  [Data structures and techniques for remote computer
> graphics](https://dl.acm.org/citation.cfm?id=1476661)

  * 文書としては1973-1977くらいのMultics  
1973:Multics仕様書 The Multiplexed Information and Computing Service:
Programmers' Manual  
[PART I INTRODUCTION TO
MULTICS](http://www.bitsavers.org/pdf/honeywell/multics/redell/MPM_Part1_Sep73.pdf)
/ [PART II REFERENCE GUIDE TO
MULTICS](http://www.bitsavers.org/pdf/honeywell/multics/redell/MPM_Part2_Nov73.pdf)  
`Interface Module`という記述が多数あり  
1977:Multics仕様書 [Multics Technical Bulletin
MTB-333](https://multicians.org/mtbs/MTB-333.pdf)

> APPLICATION PROGRAMMER INTERFACE

  * ただし広く認識されだしたのは1988制定POSIXの検討段階から  
元になったUNIXや同時期のMS-DOS/(Windowsも3.x系まで)はシステム/ファンクション/スーパバイザ コール等と呼ばれた  
[POSIX - Wikipedia](https://en.wikipedia.org/wiki/POSIX)

> POSIX defines the application programming interface (API), along with
> command line shells and utility interfaces, for software compatibility with
> variants of Unix and other operating systems.  
>  Year started 1988; 31 years ago

  * 商品としては1987のOS/2、1993-1995のWindowsNT 3.1-3.51、1995のWindows95  
[Microsoft® Operating System/2 Programmer's Toolkit Programmer's Reference
Versionl.O](http://www.os2museum.com/files/docs/os210ptk/os2-1.0-ptk-
prgref-1988.pdf)  
2.19 Family Application Programming Interface  
[Microsoft Windows NT](https://ja.wikipedia.org/wiki/Microsoft_Windows_NT)  
[Windows API](https://ja.wikipedia.org/wiki/Windows_API)

> 特に32ビットプロセッサで動作するWindows 95以降やWindows NTで利用できるものはWin32 APIと呼ばれる。  
>  Win16は、16ビットプログラム用の実装である。ただし、Win16という語自体はWin32が登場してから用いられるようになったレトロニムである。


CC BY-SA 4.0
2019-10-30T01:03:00.800
60098
2019-11-05T16:41:14.770
2019-11-05T16:41:14.770
26370
26370
60000
answer