Rails開発におけるライブラリ選定で大事なこと

多分同じような記事を書いている人もいると思うし,そっちの方が僕の書いたものより良くまとまっていると思うけど,自分の考えを整理する上で書いておきます.
あと,別にRailsに限った話ではないです.

基本は,安定した保守・運用が可能であるかという軸と,本当にそのライブラリを使うべきか,の二つです.

安定した保守・運用が可能であるか

gemやcpan,pear等でインストール可能なOSSライブラリの多くは日曜プログラミングの成果だったり,どこかの組織のコードの一部分だったりします.なので,常に

  • ある日を境にメンテされなくなる(Rails等のバージョンアップに追随しなくなる)
  • ある日突然仕様変更でインターフェースがごっそり入れ替わる

というリスクがつきまといます.他にも最近のOracle
MySQL問題みたいに,企業がOSSプロジェクトを買い上げて囲い込んでしまうなんてリスクもあります.

この辺り,100%回避する手段は無いので,リスクを低減する方法はあります.

  • githubなら,fork/watchされている数,commitの周期などを見て活発なプロジェクトであるかを確認する.活発なプロジェクトの場合,最悪元の開発者がサポートしなくなっても,forkから誰かがどうにかすることが期待できる.
  • 「英語圏のサイトを」ぐぐってどれくらい利用されているかをチェックする.直近1年以内に記事があるか無いかで世の中的に使われているかどうかの判断基準の一つとなり得る
  • ざっくりソースコードを眺めておき,いざというときに自分で不具合修正できるかどうかを確認しておく.不具合修正したらgithubの自分のforkで公開したり,pull request出すのが理想

メジャーなライブラリを使うことは非常に重要です.日本人が日本でしか使っていないオレオレライブラリを使うときは,常にリスクがあるので注意しましょう.一時期乱発されたPHPにおける国産Webアプリケーションフレームワークが良い例です.
# もちろんリスクを勘案した上で採用するのは問題無いです

本当にそのライブラリを使うべきか

Railsでdeviseを使ったことがある人は分かると思いますが,高機能,多機能なライブラリは使い方を覚えるのにそれなりの習熟期間を必要とします.ドキュメントがちゃんと書いてあるライブラリだとしても,大抵は英語だったりするので,英語を読む速度が遅い人にとっては負担になります(なので最低限の英語readingは必須スキル).
元々そのライブラリにさせたかった機能(会員登録など)に立ち返り,本当にそのライブラリでないとできないのか,そのライブラリの習熟期間を加味しても速度・機能的メリットがあるのかを考えましょう.場合によっては時前実装の方が早く確実だったりします.

ただ,他人が素性良く書いたコードを読むというのは良い勉強になるので,上記リスクを恐れるあまりに何でもかんでもレガシーなライブラリやオレオレライブラリを使うのもまた良くないです.安全方面に倒しすぎると自分の成長の機会を逃してしまうことにもなってしまうので,バランスが大事です.

最後に,迷ったときは他の人にも相談するのが大事です.特に高機能なライブラリはサイトのコア機能に深く根ざす可能性があるので,慎重に選びましょう.最後は自分でケツを拭く覚悟で冒険するのがスキルアップのコツです.

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

morimorihoge

高校卒業後,学生をやりながらずっとWebアプリ開発に携わってきました.2010くらいまではPHP/Symfonyプログラマでしたが,それ以降のWeb開発はRailsほぼ一本に宗旨替えしました.開発とは別にサーバ構築・運用も10年以上やってきているので,要件定義から設計・実装・環境構築・運用まで一通り何でもこなせます.開発以外では季節により大学でWebサービス開発やプログラミング関連の非常勤講師もしており,技術の啓蒙・教育にも積極的に関わっています.最近はPM的な仕事が増えていますが,現役開発者としていつでも動ける程度にはコードもサーバも弄る日々を送っています.AWS 認定ソリューションアーキテクト – アソシエイトレベル取りました

morimorihogeの書いた記事

開発
RubyのArray(配列)の使い方

2017年03月15日

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ