SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



コードを書かずに実装しよう、ruby-toolbox.com

なるべくコードは書かずにオープンソース・ソフトウェアを使う。MITライセンスのコードをフォークしてカスタマイズして使う。色々な方法でコードを書かずにさくっと実装出来る時代になってきました。

Rubyでコードを書かずにプロジェクトを進めるために、OSSライブラリを探す方法を3つほどご紹介致します。既にRubyエンジニアな人はご存知かと思いますが、改めて、「コードを書かない」事を意識するために、軽く読んで頂ければ嬉しいです。

「コードを書かない」メリット

書かなくて済むから早い

まず第一に、書かずにOSS(オープンソース・ソフトウェア)で書こうと思っていたコードを代替できれば、その分実装が早く終わります。だって、書かなくていい、実装しなくていいのですから当たり前ですよね。

例えば、先日ChatWorkというサービスのAPIをRubyで使おうとしました。実装にはだいたい200行程度かかります。。。

しかし、これには既にコードが書かれた、OSSライブラリで存在していました。chatwork-ruby

※上記はオリジナルのライブラリの要求するGemのバージョンが古かったため、弊社メンバーがforkして該当部分のみ修正したものです。

これはライブラリを使うと4行ほどで済みます。

コードの行数

圧倒的な開発工数の削減です!

人気のOSSはリーダブルでテストフルでドキュメント完備で使いやすい

コードは書くと保守しなければならなくなります。コードに不具合が見つかったり、脆弱性が見つかったり、機能拡張・仕様変更をする必要が出てきたり。書いたコードはそのコードが明らかに使われない状態にならない限り、「資産」として、そして「負債」として、ずっとついてきます。

極稀にしか使われていないけれども行数が多いコードなど、プロジェクトに新しいメンバーが参加したときなどに、そのメンバーはそのコードを読まないとプロジェクトを理解しづらかったり。後々に必ず何らかの影響を及ぼしてきます。

当然、ドキュメントの整備も求められます。読みやすいコードにするよう努める必要もあります。保守のために莫大な工数が必要になります。

たとえば、AWSのAmazon Simple Email Service (Amazon SES)を使ってメールを送ろうと思ったら?aws-sesライブラリがあります。これはドキュメント(README)だけで200行もあります!テストは600行!実装も700行!全部合わせると1500行もあります!

実装のみに700行掛かっているわけじゃありません。コメントがしっかりしてあって、変数名などがしっかり考えられていて読みやすい。テストがなるべくカバレッジが100%になるよう書かれている。非常に保守性の高いコードです。

コードカバレッジ100%、すぐに使える分かりやすいドキュメント、可読性の高いコード。 これを実現しようと思ったら大変な工数がかかります。(そう、1500行も!)

それがどうでしょう、OSSを使えば、ライブラリの呼び出しだけで済むのです!ライブラリの呼び出しが5行だとしたら、300分の1にコスト削減です!

コード&ドキュメントの行数

もはやグラフのOSS使用の棒がまったく見えません。

保守や機能拡張をみんなでするからすごく楽

OSSに必要な機能がなかったり、依存関係のあるGemが古かったりしても大丈夫。OSSのプロジェクトをForkして必要な部分を修正して使えばよいのです。さらに、修正したものはプルリクエストをオリジナルの開発者に送ると、あなたの頑張りが他の人の役にも立ちます。

そうして、OSSはたくさんのエンジニアによって支えられて開発されています。ある程度人が使ってくれるOSSであれば、保守コストが非常に低く済むのです!

OSS => Forkしてカスタマイズ => プルリクエスト コードを書く量はカスタマイズに要する分だけ。しかも、その書いたコードのプルリクエストが受け付けられれば、そのコードはあなただけで保守する必要はなくなります。みんなで保守すればよいのです!

OSSは保守がとっても楽!(潤沢なエンジニアリソース!)

どうやったらコードを書かなくて済むか?

OSSを見つけましょう。ネットでググってコードスニペットをコピペ、なんてことはやめましょう。それは自分でコードを書くよりも悪習です。コードを理解していないようなものですから。

コードスニペットではなく、OSSを探しましょう。

Rubygems.org

Rubyなら真っ先に思い浮かぶのがRubyGems.orgです。

RubyGems.org

Rubygems.org

RubyGems.orgに登録されているaws関連gem

AWS関連のRuby言語用のライブラリだけで180件以上も存在しています! この中から人気のものを探すと大体OKです。

ruby-toolbox.com

個人的にはruby-toolbox.comの方がRubyGemsより、Gemを探す場所としてはオススメです。 様々なカテゴリなどに分かれてRubyGemが登録されています。活発なコミュニティによって支えられているか?よく使われているか?どんなGemなのか?などがぱっと見でわかります。

The Ruby Toolbox

f:id:sideci:20140324232550p:plain

The Ruby Toolbox, Amazon Web Servicesカテゴリ

GithubやGoogleなどで汎用的な検索手法でマイナーなOSSも

中には、シャイな方やあまりメジャーでないAPIのラッピングライブラリなど、RubyGemsやruby-toolbox.comに登録されていないOSS資産もあります。これらはGoogleかGithubで検索すると見つけることが出来ます。

GitHub内で検索

GitHub内では言語やキーワード指定で検索することが出来ます。

GitHub内でのキーワード検索イメージ

Ruby x ChatWork | Github

お望みの機能に関係しそうなキーワードを入力、使用したいプログラミング言語で絞込。これで大体見つかります。

Googleで検索

GitHub内検索などだと、主にレポジトリ名などでの検索がメインになります。それでも見つからないOSSが中にはあります。分かりづらい名前のOSSがたくさんあるのです!

たとえば、Nokogiriなどは、XMLやHTMLをパースするライブラリとして非常に有名なのですが、xml parse + rubyなどでは見つけようがありません!(涙)

そういう時は、Google先生の出番です。

google検索イメージ

https://www.google.com/search?q=ruby+xml+parser

ほら、出てきました。Nokogiri。

やはりコンテンツの内部まで検索してくれているGoogle先生は神です。その他、Google先生経由でStackOverflow内でのQ&AによってオススメされたOSSライブラリに行き着くなど、Google先生経由での発見は非常に有用です。

機能に関連しそうな英単語で検索するだけでOSSライブラリが見つかる素敵な世の中です。

※Googleは英語設定で利用しましょう。日本語で検索しても対してひっかりません。日本語でググるのは辞めましょう。

おまけ

Ruby以外はどうなんだ!という人もいっぱいいるかもしれません。もちろん、それぞれの言語でたくさんあります。GitHubとGoogle検索はRuby言語以外でも応用が効く万能術ですし。

あまりメジャーではないものの、すごく便利だと思った、Objective-CのRubyToolbox的なものをオマケとしてご紹介します。

CocoapodsというiOSのライブラリ管理ツールのRubyToolbox的なやつです。日本のベンチャー、Wantedlyのエンジニアが作ったサイトです。

COCOAPODS SEARCH

COCOAPODS SEARCH

終わりに

いかがでしょうか?「コードを書かなくていいんだ!」「次からはググるようにしよう!」って思って頂けたでしょうか?

みんながコードを書かない & 書いたものは共有する & しっかりみんなで保守していく

そんな世の中が来ています。そして、それは私たちエンジニアにとって理想の未来、そしてもう目の前にある現実なのです。

コードを書かなくて済むんだったら書かないようにしましょう☆