このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第62回

フィルターの一覧をテーブルビューで見る

Core Imageフィルターの詳しい説明を日本語で表示するプログラム

2017年11月27日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 このところ、内蔵カメラで撮影した画像をCore Imageのフィルターを使って加工するプログラムに取り組んでいます。ここまでは、Core Imageに含まれるフィルターのほんの一部を取り上げたに過ぎません。残りの中からめぼしいものをピックアップして紹介するだけでも、あと何十回もかかりそうなほどCore Imageの世界は広いのです。

 そこで今回は、新しいフィルターを取り上げるのはあきらめて、Core Imageのフィルターの一覧をテーブルビューに表示するという目先を変えたプログラムに取り組んでみることにしました。

 実はCore Imageには、利用可能なすべてのフィルターのリストを配列として返す機能が備わっているのです。また、カテゴリーを指定すれば、そのカテゴリーに分類されるフィルターだけのリストを得ることもできます。さらに指定したフィルターの属性として、ユーザー向けの表示名や、パラメータの意味などを、Swiftの辞書(Dictionary)として得ることができます。Core Image自体が内部でローカライズされているので、日本語環境なら自動的に日本語の文字列が表示できます。

 こうした機能を利用して、Core Imageのプログラミングガイドとして使えるようなプログラムを作ります。それを見て使ってみたいものが見つかれば、前回のプログラムを応用して、実際に試してみるとよいでしょう。

カテゴリー名の配列を用意してカテゴリーの一覧をとりあえず表示

 今回は、まず第1段のテーブルビューとしてCore Imageに含まれるフィルターのカテゴリー名を表示してみましょう。それだけなら、特にCore Image特有の機能を使うこともありません。これは、一般的なテーブルビューのプログラミングの復習と考えてください。

 一般的なテーブルビュー同様、まずは表示する項目を保持する配列を作ります。これは、カテゴリー名の文字列の配列にしてもいいのですが、Core Imageのカテゴリー名にはあらかじめ定数が割り当てられています。ここでは、その定数名の配列としました。

まずは、一般的なテーブルビューの手法を使って、Core Imageフィルターのカテゴリー一覧を表示するプログラムを作ります。カテゴリー名は、小文字の「k」で始まる定数によって14種類が、Core Imageによってあらかじめ定義されています

 この配列は、カテゴリー名のテーブルビューを表示するCatTableViewControllerの先頭で、catListとして定義しています。これらの定数名を見ると先頭がすべて「kCICategory」で始まっていることに気づくでしょう。これは接頭辞のようなもので、カテゴリー名の定数であることが、ひと目でわかるようになっています。実際には、これらの定数は、値としてカテゴリー名の文字列を持っています。その文字列の先頭も、すべて「CICategory」で始まっています。テーブルビューのセルにカテゴリー名を表示する際には、その先頭の「CICategory」を削除しています。

テーブルビューのセクションの数は1、行の数はcatList配列の要素の数となります。セルには、カテゴリーの名前を表示しますが、その際、定数の値の文字列の先頭に必ず付いている「CICategory」という接頭辞を外します

 最初のプログラムは、以上で完成です。起動してみると、Core Imageフィルターのカテゴリー名がテーブルビューに表示されます。

カテゴリーは、ちょうど14行あるテーブルビューにぴったり収まります。もちろん、これより多ければ、テーブルを上下にスクロールさせて、はみ出した部分を表示することができます

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!