CocoaPodsを使ってみないか ①そもそもライブラリって何者なのか

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
CocoaPods

iPhoneアプリ開発の勉強をしていると目にする単語、CocoaPods。何となく便利そうなのは伝わるが、どこを調べても何だか難しそうで、説明も不親切だ。

CocoaPodsどころかライブラリについてもよくわかっていない筆者が、CocoaPodsを使えるようになるまでを追うシリーズ。

まずCocoaPods以前の話

CocoaPodsを使うにあたって、CocoaPodsのことをよく知っておく必要があるのは事実だ。

が、筆者の場合はそれ以前の問題がある。ライブラリのことをよく知らないのだ。
CocoaPodsがライブラリをどうにかこうにかするというのは何となくわかっているが、じゃあそもそもライブラリって何なのか。何でわざわざライブラリを使う必要があるのだろうか。

ということで今回はCocoaPods以前の話、ライブラリとは何者なのかを勉強したい。

ライブラリって何者なのか

教えてWikipedia先生

とりあえずWikipedia先生に聞いてみる。

ライブラリ(英: Library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。

〜Wikipedia「ライブラリ」より引用

Wikipediaにはこの前置きの後に延々と説明が書いてあるのだが、何を書いてるのか筆者には1文字も理解できなかった。とりあえず「便利な機能をまとめておいたよ!使ってね!」という雰囲気なのは伝わる。

参考書も教えてくれない秘中の秘?

今までSwift3の勉強のために4冊ほど本を買ったが、ライブラリについて触れているのはなんと4冊通してたったの1ページ
唯一1ページだけ載せていた本、果たしてどんなことが書かれているかと思ったら

import name

(nameにはフレームワーク名かライブラリ名が入る)

という始末。なんだか「君たちにはまだ早いよ」って言われてるみたいで悔しい。まあ、とりあえずライブラリはimportして使うということはわかった。

フレームワークとライブラリは何が違うのか

先の参考書の記載を見てふと思った。フレームワークとライブラリの違いって何だ?

import文で指定するのはライブラリ名かフレームワーク名。で、普段使ってる「UIKit」っていうのはフレームワーク名らしい。
UIKitをimportすれば、いろんな部品が使えるようになるのは知ってる。この定義で言ったらフレームワークもライブラリも変わらないんじゃねーのと思う。

ただ、実際はそうではないらしい。ざっと調べたところ、フレームワークとライブラリの違いはこんな感じだ。

  • フレームワークは、枠組みを提供する。与えられた枠に開発者が適切な部品を組み込んで、便利な機能を実装する
  • ライブラリは、それ自体が完成した部品。用意された機能の中から開発者が適切な部品を選んで、便利な機能を実装する

うーん、何となくわかった気もする。まあとりあえず、ライブラリは部品として使うんだなーくらいの認識にしておく。

で、結局ライブラリって何なのか

ここまで言っておいて何だが、よくわからない。何となく便利なんだなというくらいしか理解できてない。強いてここまでの内容をまとめるならば

  • 便利な機能をまとめている
  • importして使う
  • それ自体が完成した部品である(フレームワークとは違うんだよ)

という感じか。よくわからないから今日作ったカレーで例えてみるか。

カレーを作るためのフレームワークと、カレーを作るためのライブラリがあるとする。カレーを作るフレームワークは

  • 具材を切る機能や具材を炒める機能、ルーを加えて煮込む機能などが用意されている
  • これらの機能は単体では動かない。どの具材を使うか、どのルーを使うか、火力をどうするかは開発者が指示する

と言ったところだろうか。一方、カレーを作るライブラリは

  • 「カレー作って!」って言ったら、それだけで決まった具材の決まったカレーが出来上がる
  • 調理方法は全部ライブラリの中に入っていて、勝手に動く

という感じか。ふむふむ、なんとなく見えてきたぞ。なんかすごいこと・面倒なことをライブラリがまとめてドーンとやってくれるという感じだな。

例えばどんなライブラリがあるのか

iOS Cookiesというサイトに色々載っているらしいので、適当に見てみることにする。ジャンルごとに分かれているのだが、そのジャンル数だけでも結構ある。

iOS Cookiesのジャンルの画面

これでもまだ全体の半分弱

試しに「Date & Time」のカテゴリを選んで、その中の「SwiftDate」をクリックしてみた。

SwiftDateの説明の画像

ざっと読んでみると

  • 「2週間」「1時間」「16分」といった時間や日付が簡単に指定できるよ
  • 日付の比較が不等号でできるよ
  • 「この日付は昨日か、明日か、指定した日付より前か」といった判定が簡単にできるよ

といった感じだ。

もう一つ、「Transitions」カテゴリの「BubbleTransition」を選んでみる。こちらはボタンを押した時にアニメーションとともに画面が変化する、というもののようだ。確かにこれを手打ちで作ろうとしても相当大変だ。

ライブラリを使えばアプリもぐーんとレベルアップする、かも

確かに、ライブラリをうまく使えばアプリの見た目がカッコよくなったり、コードを書くのが簡単になったりして色々と幸せになりそうな感じだ。
ただ、肝心のライブラリの導入の仕方がわからない。ただ単にimport文を書くだけでは、当然これらのライブラリは使えない。

ここで登場するのが、CocoaPodsというものだ。フライングでざっと見たところ、CocoaPodsを使えばライブラリの管理が簡単にできるとかなんとか言われている。

ということで、次回からようやくCocoaPodsの話に入る。ひとまず、ライブラリって何なのかがわかっただけで結構な収穫だ。
果たしてライブラリのラの字も知らなかった筆者が、CocoaPodsを使いこなすことができるのかどうか…

 

このシリーズの記事

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。