南東京i phone勉強会(stidev) 20101030
DESCRIPTION
iPhoneで全文検索TRANSCRIPT
iPhoneで全文検索してみたOSSライブラリを活用しよう
わたなべかずひろ@kaz_29
2010年11月8日月曜日
もくじ
自己紹介
OSSライブラリをiPhone用にコンパイルする方法
実際に使ってみる
おまけ
2010年11月8日月曜日
もくじ
自己紹介
OSSライブラリをiPhone用にコンパイルする方法
実際に使ってみる
おまけ
2010年11月8日月曜日
自己紹介わたなべかずひろ株式会社イーツー(E2)主にWeb系の受託開発会社公式サイトとか携帯CMSとか作ってます
id:kaz_29(kaz29)#iphonedev #cakephp #lithium #php #golf #cat #beer
2010年11月8日月曜日
宣伝です!
2010年11月8日月曜日
NIFTY Cloud Manager
http://iphone.e-2.co.jp/
2010年11月8日月曜日
C/C++のライブラリをiPhoneに組み込んで使っている人?
2010年11月8日月曜日
ライブラリ?ライブラリは、汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたものである。一般にライブラリは、それ単体ではプログラムとして動作させることはできないので実行ファイルではない。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。
http://jp.wikipedia.org/wiki/ライブラリ
2010年11月8日月曜日
SDKにも入ってますlibiconv.dylib ~ 文字コード変換
libmecab_em.dylib ~ 形態素解析エンジン(em=サブセット?)
libncurses.dylib ~ TextUI用ライブラリ
libresolv.dylib ~ DNSリゾルバ
libsqlite3.dylib ~ SQLiteライブラリ
libxml2.dylib ~ XMLパーサー
2010年11月8日月曜日
先達の英知を使わない手は無い!
2010年11月8日月曜日
もくじ
自己紹介
OSSライブラリをiPhone用にコンパイルする方法
実際に使ってみる
おまけ
2010年11月8日月曜日
gccを使います
2010年11月8日月曜日
OSSプロダクトのコンパイル
tar xvfz hoge-x.y.z.tar.gz
cd hoge-x.y.z
./configure
make
make install
2010年11月8日月曜日
iPhone用にコンパイルする場合
tar xvfz hoge-x.y.z.tar.gz
cd hoge-x.y.z
./configure いろいろオプションをつける
# Makefileを編集する
make
make install
# 出来上がったライブラリとヘッダーをプロジェクトに追加
2010年11月8日月曜日
全文検索エンジンHyper Estraierの例
http://fallabs.com/hyperestraier/
2010年11月8日月曜日
configureの指定$ ./configure --prefix=/usr/local/iphone \
CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \
CFLAGS=-arch i386
-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk
-I/usr/local/iphone/include -L/usr/local/iphone/lib
CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \
AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
2010年11月8日月曜日
configureの指定$ ./configure --prefix=/usr/local/iphone \
CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \
CFLAGS=-arch i386
-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk
-I/usr/local/iphone/include -L/usr/local/iphone/lib
CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \
AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
インストール先を指定2010年11月8日月曜日
configureの指定$ ./configure --prefix=/usr/local/iphone \
CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \
CFLAGS=-arch i386
-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk
-I/usr/local/iphone/include -L/usr/local/iphone/lib
CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \
AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
Cコンパイラを指定2010年11月8日月曜日
configureの指定$ ./configure --prefix=/usr/local/iphone \
CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \
CFLAGS=-arch i386
-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk
-I/usr/local/iphone/include -L/usr/local/iphone/lib
CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \
AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
Cコンパイル設定を指定2010年11月8日月曜日
configureの指定$ ./configure --prefix=/usr/local/iphone \
CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \
CFLAGS=-arch i386
-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk
-I/usr/local/iphone/include -L/usr/local/iphone/lib
CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \
AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
C++コンパイラを指定2010年11月8日月曜日
configureの指定$ ./configure --prefix=/usr/local/iphone \
CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \
CFLAGS=-arch i386
-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk
-I/usr/local/iphone/include -L/usr/local/iphone/lib
CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \
AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
アーカイブツールを指定2010年11月8日月曜日
Makefileの編集# Simurator用
CC = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2
AR = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar
CFLAGS = -arch i386 -Wall -fPIC -fsigned-char -O3 -fomit-frame-pointer \
-fforce-addr
# Device用
CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2
AR = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar
CFLAGS = -isysroot /Developer-SDK402/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk \
-arch armv6 -Wall -fPIC -fsigned-char -O3 -fomit-frame-pointer -fforce-addr
2010年11月8日月曜日
include,libsをコピー
2010年11月8日月曜日
ライブラリをプロジェクトに追加
device用
simulator用
2010年11月8日月曜日
コンパイルについてのまとめ
CC,CPP,ARなどの使用するツールをSDKの物に変更
CFLAGS
-arch i386(or armv6)でターゲットを指定
-isysroot で使用する rootディレクトリを指定
-I,-Lでインクルードパス、ライブラリパスを追加
2010年11月8日月曜日
物によってはもっと細かく調整しないといけない物も...
2010年11月8日月曜日
もくじ
自己紹介
OSSライブラリをiPhone用にコンパイルする方法
実際に使ってみる
おまけ
2010年11月8日月曜日
インデックスの作成
estcmd gather -il ja -sd /hoge/index /hoge/source
2010年11月8日月曜日
検索の準備
/* dbをオープン */
if (!(db = est_db_open((const char*)cdataPath, ESTDBREADER, &ecode))){ return ;
}/* 検索条件オブジェクトを生成する */
cond = est_cond_new();
NSInteger length = sizeof(searchkey);/* 検索条件オブジェクトに検索式を設定する */
[searchBar.text getCString:(char*)searchkey maxLength:length encoding:NSUTF8StringEncoding];est_cond_set_phrase(cond, searchkey);
CBMAP *hints;hints = cbmapopenex(MINIBNUM);/* 実際に取得する数を設定 */
est_cond_set_max(cond, 30) ;
2010年11月8日月曜日
検索/結果取得/* データベースから検索結果を得る */
result = est_db_search(db, cond, &resnum, hints);/* ヒット数を取得 */
numHits = (rp = cbmapget(hints, "", 0, NULL)) ? atoi(rp) : resnum;
/* 各該当文書を取得して表示する */
for(i = 0; i < resnum; i++){/* 文書オブジェクトを取得する */
if(!(doc = est_db_get_doc(db, result[i], 0))) continue;if((tmptitle = est_doc_attr(doc, "@title")) != NULL) {
NSLog(@"Title: %s\n", tmptitle);}
}
2010年11月8日月曜日
Demo
2010年11月8日月曜日
Demo Data
10,796 html filestotal size 75Mindex size 27M(include compressed text)
PHP Manual
2010年11月8日月曜日
もくじ
自己紹介
OSSライブラリをiPhone用にコンパイルする方法
実際に使ってみる
おまけ
2010年11月8日月曜日
NIFTY Cloud Managerの例
SOAP認証用にOpenSSLを使用
秘密鍵、クライアント証明を使ってxmlに署名
ライブラリごとに使用手順がある
メモリーリークの試験は念入りに
2010年11月8日月曜日
ライセンスには注意して!
2010年11月8日月曜日
ご清聴ありがとうございました(><)
2010年11月8日月曜日