2020-03-10に更新

GAS&Dropboxを題材にWeb APIについて理解してみる

はじめに

「APIってなんぞや」

そんな疑問をWebアプリ学習に取り組み始めてからずっと抱えていました。
ちょっと調べてみれば教科書的にはいっぱい出てくるのですが、仕組みや具体的にどんなものなのかが全く良くわからない。なんとなく使えるようになると便利そうだなーというくらい。

GASを使っていくつか実際に使ってみてイメージを掴むことができたので、今回はAPIについてどんなものなのか整理してみます。
具体的に「Dropbox API」を例に、言語はGASを使用して「Gmailに送られてきた添付ファイルをDropboxに保存する」という機能を作ってみるという想定の中で「APIとはどんなものか」「APIではどんなことができるのか」「APIを使う時の流れ」についてまとめてみました。

ちなみにこの記事には実際のコードや実装方法はなく、解説のみなのでご了承ください。あくまでAPIのイメージを目的としています。
また、わかりやすく書くことに努めましたが、不正確な点などあるかと思うのでその点もご了承ください。

Dropboxを使ったことない方はすみません、便利なアプリなので是非試してみてください!

対象者

  • APIの具体的なイメージを掴みたい人
  • APIを活用するとどんなことができるようになるのか知りたい人

そもそもAPIとは

そもそもAPIとは、一言でいうと「あるソフトウェアが外部からの機能を使えるように共有しているもの」。Application Programming Interfaceの略、なのですが、まあわからない状態だと正直何が何だかです。

今回の例では、Dropboxさんが開発者向けに「この機能を自由に使っていいよー」と公開している機能があり、その機能を外部である僕たち開発者が使わせてもらう形になってます。
その外部に公開している窓口となるのがAPIです。
このAPIにアクセスすることにより、例えば自分のDropboxにファイルを新しくアップロードしたり、入っているファイルを更新したりということがプログラミングで実装することができます。

Dropbox以外にもたくさんのアプリがAPIを公開しています。よく見かけるのが、ログインする際のSNS認証(facebook、twitter、lineアカウントなどでログインできるやつ)やBOTなど(twitterでの自動ツイートやLINEで自動返信されるやつ)。
これらはそれぞれのアプリが提供しているAPIを活用することにより実装されています。

APIを活用するとどんなことができるの?

前項で例を書いたように、自分のアプリと外部の色々なアプリを連携させて、より実装の幅を広げることができます。

さらにレベルアップしていくと、自分のアプリの機能の一部をAPIとして外部に共有することもできて、別の開発にも流用できたり他の開発者に使ってもらえたりとできるようです。作ったものを共有することで技術の発展にも繋がるので、このレベルまで行けるととても夢が広がりますね。

APIを使用する際の流れ

APIを使用する際の全体の流れを整理してみました。

(1)ベースとなるアプリのスクリプトを書く:
今回の例の場合、まずはGASで「Gmailの添付ファイルを取得する」という機能を実装するコードを書いておきます。この段階では外部と連携するためのAPIは使わず、GASの機能だけで実装できます(GASではGmailを簡単に扱えちゃいます)

(2)Dropbox側で、APIを使うためのアプリを制作しておく:
次に「ファイルをDropboxに保存する」という機能を実装するための準備として、Dropboxの開発者向けのページからAPIを使うためのアプリを制作しておく必要があります。
そもそもAPIとは外部から一部分の機能を使えるというものでしたね。ここでAPI用のアプリを制作しておくことで、自分専用のアクセストークン(一般にランダムな英数字がズラーっと並んだもの)というものが与えられます。

(3)スクリプトでDropbox APIに機能を使わせてもらうための命令を書く:
「ファイルをDropboxに保存する」というプログラムを書きます。この際に先ほどのアクセストークンを使用してDropbox APIのアプリに「機能を使わせてくださいねー」という命令を送るコードを書くことで、その機能を使うことができるようになります。
今回の例では取得してきた添付のファイルを「Dropboxの指定のフォルダにアップロードする」という機能を、APIを使って実装することになります。
このように外部アプリにAPIを使ってアクセスすることを、専門用語で「APIを叩く」と呼びます。

この全体の流れはDropboxだけでなくどのAPIを活用する場合でも基本的には同じです(多分)。もちろん具体的なコードの書き方やアプリの制作方法に関して変わりますが、やってるとととしてはこういう流れです。

色々な用語集(Coming soon..)

  • APIを「叩く」
  • エンドポイント
  • ヘッダー情報
  • アクセストークン
  • webhook

おわりに

今回はWeb APIのイメージを掴むために書いてみました。
自分で読み返しても、まだまだふわっとしていて理解が浅いなーと感じますね…。
徐々にこの記事に書き足してもっと理解を深めてみたいと思います。

新しい概念を理解するためには、実際にコードを書いて使ってみて、できることを体感してみるのがまず第一歩ですね。
余裕があれば次回、GASのコードで実際のDropbox APIを使った実装の仕方をまとめます

ツイッターでシェア
みんなに共有、忘れないようにメモ

Massa

北海道でアプリ制作に取り組んでるノンプログラマな農夫。仕事や日常生活で感じる小さな不便を解消すべく趣味と実益を兼ねてプロダクト作ってます。 ■Ruby/Rails ■GAS+LINE bot

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

コメント