Edited at

OSSのライブラリを使う前に知っておくべきこと


はじめに

私はOSSのライブラリが大好きでよく使わせてもらっています。

でもライブラリを使わずに済むのなら、使わないに越したことはないとも思っています。

本記事では、OSSのライブラリを使うことによるデメリットとメリットを紹介します。


OSSのライブラリを使うデメリット

OSSのライブラリには様々なデメリットがあります。

これらを乗り越えてまで導入する価値があるのか、しっかりと考えるべきです。

一部OSS関係なくライブラリ導入のデメリットも混ざっていますが、ご容赦ください。


導入コストがかかる

まず、導入コストがかかります。

パッと思いつくだけでも以下が挙げられます。


  • ライブラリの信頼性を確認するための調査

  • セットアップにかかるコスト

  • 使えるようになるまでの学習コスト


保守コストがかかる

ライブラリまたはプログラミング言語をバージョンアップするたびに、再度テストを実施する必要があります。

メジャーバージョンアップの場合には使い方が変わってしまい、修正が必要になることもあります。

これは導入しているライブラリが多ければ多いほど大変です。

リグレッションテストが完全に自動化されていればいいですが、そうでない場合はなかなかのコストがかかります。


メンテされなくなるリスクがある

有名なライブラリではあまりないかもしれませんが、メンテされなくなる可能性も0ではありません。

例えばSwift 5.0がリリースされて対応するときに、「このライブラリはSwift 5.0に対応しません」となってしまったら非常に困ることになります。


不具合が潜んでいる可能性がある

OSSのライブラリはソースコードを見ることができますが、全てを把握してから導入することはないと思います。

そのため、全て自前で実装している場合より不具合に気づきにくいです。

有償のライブラリとは異なりサポートがないため、自分たちで解決しなければなりません。

業務で導入している場合、ステークホルダーをうまく説得できないと、そのライブラリを使うのをやめさせられるかもしれません。


ビルド時間が増える

最近はCI/CDによる自動化が進んでいます。

環境によってはライブラリを多く導入しているとビルド時間が劇的に増え、費用とデプロイまでの時間が増えてしまいます。

iOSアプリの場合、CocoaPodsやCarthageで多くのライブラリを管理していると、なかなかにビルド時間がかかります。

→こちらの解決策があれば教えてほしいです。。


ライセンス違反になることがある

GPLやBSD、MITなどOSSのライセンス体系は多岐にわたります。

ライセンス条項を守っているつもりでも、知らず知らずのうちに違反していることがあります。

トラブルを避けるためにも、自分が理解していないライセンスのOSSは使うべきではありません。


OSSのライブラリを使うメリット

ここまでデメリットを紹介しましたが、当然それを上回るであろうメリットが存在します。

そうでないとここまで流行りません。


無料で使える

何と言っても無料で使えるのは嬉しいです。

個人で導入するときは手軽に使えますし、業務で導入するときも認められやすいです。

コントリビューターさまに感謝です:bow:


実装コストを減らせる

ライブラリを導入することで複雑な処理を簡潔に書けるようになります。

それにより、テストコードを含む実装時間が短縮されます。


何か楽しい

新しいライブラリに触れる楽しさ、有名なアプリに使われているライブラリを使う謎の充実感、みんなが使っていることによる一体感…

エンジニアの本質は楽しさを追求することだと思っているので、ここに尽きます。

OSSのライブラリを使う以外にも「楽しいことをする」ために必死でみんなが納得するメリットを探している自分がいます。


おわりに

OSSのライブラリをたくさん使えばいいわけではない、ということがわかってもらえたと思います。

用法・用量を守って適切に使いましょう!