Ruby 天気予報編 (8) gem の使用 【計算数学 I】

更新日時:

後半のロードマップ

後半の目標は、ズバリ、前半で作成した文章を Twitter に投稿することです。 手動で投稿する訳ではなくて、 Ruby プログラムを書き、実行することで、投稿します。 そのほとんどの内容は、 Twitter API を利用するということに集約されます。

すなわち、後半も「 API を利用する」という意味では、ある意味前半と共通しています。 しかし、その概要は、以下の点で異なっています。

  1. 前半の「天気予報 API 」は、自分で API 仕様書を読み、 JSON を取得し、 Ruby 上で加工しました。確かにライブラリを使用していますが、 ほとんどの作業を「自分でやった」と言っても良いかと思います。 しかし、後半の「 Twitter API 」は、 ほとんどの作業を 他人が作ってくれたライブラリに任せます
  2. 前半の「天気予報 API 」は、利用のためには地域を指定するだけでした。 ユーザー登録すらありませんでした。後半の「 Twitter API 」は、 この点が複雑です。 ほとんどの作業をライブラリに任せる場合でも、 Twitter 社の定める developer 登録は自分ですることになります。 また、単に登録するだけでは不十分で、 「発行された文字列は何のために使われるのか」 「アカウントからソフトウェアにどのように権限が移譲されるか」 という 仕組みの理解が鍵 となります。

この 2 つは、言語仕様としての Ruby とは全く関係のない話です。 しかし、どちらも一般性の高い話題です。 Ruby 以外の言語を使用して、 Twitter 以外の Web サービスを利用する場合も、共通して求められる知識かと思います。

「こういうコマンドを打って、こうやって書けば動くんだよ」という表面的な解説ではなく、最低限これだけはわかっていた方がいいよという内容を重視したいと思います。

ロードマップは、以上の話から十分想像がつくと思いますが、分割すると以下の通りです。

  1. Twitter API を利用するライブラリをインストールする
  2. その利用の仕方を理解する
  3. Twitter の developer 登録をし、権限の移譲について理解する
  4. 上の 2. と 3. を合わせてプログラムを書き終える

このうち、1. については RubyGems のインストールの仕方を学ぶだけで終わります。2. は、 twitter gem の仕様を学ぶことになります。今回は文字列を投稿するだけですので、ごくわずかで終わります。

厄介なのは 3. です。現在の Twitter クライアントは OAuth 認証のみサポートしています。 developer 登録とは何か、クライアントとは何か、 OAuth 認証とは何か、その認証を行うことで何ができるようになるか、という風に話が進んでいきます。一般論と Twitter の個別の事情が重なります。これが終われば 4. です。ここでは実は他のファイルの読み込みが必要になります。これはやったことのない操作ですが、実は今まで出てきたメソッドの組み合わせてできるようになります。

プログラム的にはわずか数行ですが、説明することはたくさんあります。

RubyGems ライブラリの利用

多くのスクリプト言語では、「自分の作ったライブラリを簡単に公開できる」かつ「他人の作ってくれたライブラリを簡単にインストールして使える」ような仕組みが備わっています。 Ruby の場合、それは RubyGems です。簡単のために Gem や gem と呼ばれることが多いと思います。

他人の作ってくれたライブラリを使うことの重要性

この教材のはじめにも書きましたが、他人の作ってくれたライブラリを使うことは重要です。数学科の学生ですと、初めは抵抗がある人が多いようです。何事も仕組みから理解したいという数学科の学生の姿勢は素晴らしいものです。しかし、他人の作ってくれたプログラムを利用することもまた、プログラミングでは同じくらい重要なことであります。

今回は Twitter API を自動で利用してくれるライブラリを使用します。天気予報 API で既に経験した通り、 API を利用することは、結局、 他人の決めた仕様に合わせているだけ です。そこにクリエティブな部分はありません。何せ向こうが全てを決めているのですから、誰がやっても同じ「決まりきった部分」です。

そういう「決まりきった部分」を、ライブラリを作る意欲のある人が Ruby で書いてくれていると、普通のプログラマは Twitter で投稿する中身に集中することができます。分業化ができており、とても良いことです。特に今回の場合、今言った「決まりきった部分」の中身を知らずに困ることもありません。ならばこの分業化にはデメリットがありません。大事な部分に時間を割きましょう。

gem ライブラリのインストールの仕方

ターミナルで gem install (パッケージ名) と書くだけです。 Ruby をインストールした権限によっては sudo gem install (パッケージ名) と書く必要があるかも知れません。この部分は環境により異なるので、深入りしません。

今回の場合、 twitter gem (The Twitter Ruby Gem) のパッケージ名は twitter ですから、 gem install twitter とします。

gem の仕様書

せっかく労力・時間短縮のために他人の作ってくれたライブラリを利用するのですから、ソースコードを読まずに使いたいものです(普通は読みません)。 gem の場合、クラス・モジュールとメソッドを解説したドキュメントが、有名なものなら大抵用意されています。さらに、サンプルや簡単な機能を解説したイントロダクションもあることが多いです。リンク先は twitter gem のものです。

注意点:一般論ですが、ドキュメント・サンプルを過信してはなりません。ライブラリがアップデートされた結果、ドキュメントが古くなり、そのままでは正しく動かない場合がよくあります。実際、 twitter gem でもドキュメントは古いです。最新版では追加されている重要なメソッドでも、まだドキュメントに載っていません。例えば、ツイートの写真の取得方法などです( 2017/06 現在)。

こういう時も、怒ったりしないことです。ドキュメントが古くてユーザーが混乱するのはよくないことです。しかし、開発は有志の無償奉仕です。ソースコードはバグなくかけていても、ドキュメントを更新する労力は取れないかもしれませんから。こういう時は、私は irb で classmethods などのメソッドを実行しながら、手探りで進むことが多いです。

ナビゲーション

この教材は、東京大学理学部数学科専門科目「計算数学 I」のために執筆されたものです。 このサイトに掲載する際に、記事を分けてあります。 他の回はRuby 天気予報編 一覧 #ks1-ruby-forecastから御覧ください。

Ruby 入門 (計算数学実習資料集)には他の TA が書いた教材があります。

コメントする