API Client の rubygem を作ってみた

これを作った。

GitHub - tanaken0515/cotoha-ruby: COTOHA API client for Ruby

中身について詳しくはここに書いた。

[自然言語処理 初心者向け] COTOHA API を Ruby で使いたくて gem を作りました - Qiita

この記事では作るに至ったきっかけや作りながらのお気持ちなどを記録しておく。

作るまでの話

去年、自分 gem についてよくわかっていないな〜と思って勉強し始めた。

勉強といっても、公式ドキュメントに書いてある通りに実際に作ってみる、というだけの話だけど。

一人でやっても鳥が少ないので、みんなで学びたいな〜と思って2019年9月から社内勉強会(全8回)を開催した。

読んだドキュメントはこの辺。

いくつかの gem のコードリーディングもした。

この勉強会を経て、同僚の harashoo さんが https://github.com/harashoo/fujitatsu (詳しくは はじめての自作Gem - シンプルなGemを作成して公開する - Qiita 参照) を作ったり、

自分自身も https://github.com/tanaken0515/suri_lang (詳しくは 忍者スリスリくんの影武者を作っている - tanaken’s blog 参照) を作るなど、アウトプットにつながったので良い感じだった。

gem 作るの簡単だし楽しいな〜、という気持ちになっていて、なんとなく「次は API Client の gem を作りたいな〜」と思っていた。

作るきっかけの話

直近半年くらいは自然言語処理に興味があって scrapbox に調べたことをまとめたり、方言をテーマにして鹿児島Ruby会議01で発表したりした(発表の中身はほぼディープラーニングの基礎、みたいな内容になってしまったのだけど)。

そんな中 Qiita で↓の記事を読んでCOTOHA APIの存在を知り、この API の Client gem を作ることにした。

「メントスと囲碁の思い出」をCOTOHAさんに要約してもらった結果。COTOHA最速チュートリアル付き - Qiita

脱線するけれど、この記事を書いた youwht さんは自然言語処理関連の楽しい記事をたくさん書いてくださっている。

個人的に特に好きなのは

で、記事の構成がうまくて文書が面白いのに加えて、試行錯誤して物事を進めていく様子がすごく勉強になった。

記事を読んだ時の感想を残していたので貼っておく。

作ってるときの話

そんなこんなで COTOHA API の Client gem を作ることにしたのだけど、API Client を作ったことがなかったのでまずは参考になりそうなものを探した。

真っ先に思い浮かんだのは RubyKaigi 2019 で発表されていた @sue445 さんのこの資料。

この資料と、この資料で紹介されていた https://github.com/asonas/chatwork-ruby , https://github.com/sue445/pixela のコードを読み、「キーワード引数を使う」「独自のエラークラスでwrapする」などを取り入れた。この発表に関しては同僚の @tsummichan さんが RubyKaigi2019 Vol.2 - ペパボテックブログ に分かりやすくまとめてくれている。

実装の全体的な方針は同僚の @shimoju_ さんが作った https://github.com/shimoju/metabase-ruby を参考にした。読みやすくてありがたかった。

作ったあとの話

実装したあと Qiitaの記事 を書いたら、↑で紹介した youwht さんからコメントを頂いて嬉しかった(自分の記事内に youwht さんの記事のリンクを貼ったから通知がいったのかも?)。

COTOHA API の Slack コミュニティでこの gem を紹介したら「この界隈Pythonが多くてRubyの記事は個人的にとても嬉しい」「これからRubyで使ってみようかと思っていたので助かります」といったコメントをもらえて嬉しかった。

作ってよかった。

この gem の todo は直近2つある。

1つ目は未対応のエンドポイントに対応すること。「固有名詞(企業名)補正」「音声認識」「音声合成」のエンドポイントがあるんだけど、有料の for Enterprise プランに申し込まないと利用できないので、現時点(cotoha v0.2.0)では対象外としている。動作確認できないけど実装だけしようかなぁ、というところ。for Enterprise プラン、月額13万なんだよなぁ、、、。最初の3ヶ月無料とのことだけど、契約期間の縛りは無いのかな?などの調査を含めて todo だな。

2つ目はコードコメントの整備。なんも書いていないので質素な感じになってる。 https://www.rubydoc.info/gems/cotoha

適宜やっていきたい。


せっかくだからこの gem を使ってなんかやりたいな。アイデア待ち〜。

おしまい。