SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
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: %sn", tmptitle);
}
}
2010年11月8日月曜日
Demo
2010年11月8日月曜日
Demo Data
10,796 html files
total size 75M
index 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日月曜日

Más contenido relacionado

Destacado

Dossier robotica Albert Claveria
Dossier robotica Albert ClaveriaDossier robotica Albert Claveria
Dossier robotica Albert Claveria
albert
 
Νέα θέματα Χημείας Γ γυμνασίου
Νέα θέματα Χημείας Γ γυμνασίουΝέα θέματα Χημείας Γ γυμνασίου
Νέα θέματα Χημείας Γ γυμνασίου
Christos Gotzaridis
 
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
Manish Pandit
 
Katechismus 11 - 12 jarigen - De Sacramenten
Katechismus 11 - 12 jarigen - De SacramentenKatechismus 11 - 12 jarigen - De Sacramenten
Katechismus 11 - 12 jarigen - De Sacramenten
N Couperus
 
Katechismus 11 - 12 jarigen - De Tien Geboden
Katechismus 11 - 12 jarigen - De Tien GebodenKatechismus 11 - 12 jarigen - De Tien Geboden
Katechismus 11 - 12 jarigen - De Tien Geboden
N Couperus
 
20121121 presenations for geo mob
20121121 presenations for geo mob20121121 presenations for geo mob
20121121 presenations for geo mob
dbyhundred
 
20150901 Mapping Yorkshire
20150901 Mapping Yorkshire20150901 Mapping Yorkshire
20150901 Mapping Yorkshire
dbyhundred
 
20130904 splash maps
20130904 splash maps20130904 splash maps
20130904 splash maps
dbyhundred
 
第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource
Kaz Watanabe
 

Destacado (20)

Dossier robotica Albert Claveria
Dossier robotica Albert ClaveriaDossier robotica Albert Claveria
Dossier robotica Albert Claveria
 
Sacchetti Di Plastica
Sacchetti Di PlasticaSacchetti Di Plastica
Sacchetti Di Plastica
 
Bay of Plenty Wedding Makeup - 2015
Bay of Plenty Wedding Makeup - 2015Bay of Plenty Wedding Makeup - 2015
Bay of Plenty Wedding Makeup - 2015
 
Νέα θέματα Χημείας Γ γυμνασίου
Νέα θέματα Χημείας Γ γυμνασίουΝέα θέματα Χημείας Γ γυμνασίου
Νέα θέματα Χημείας Γ γυμνασίου
 
Mapping an all-weather Tour de France
Mapping an all-weather Tour de FranceMapping an all-weather Tour de France
Mapping an all-weather Tour de France
 
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
 
Osig Annual Report 2008
Osig Annual Report 2008Osig Annual Report 2008
Osig Annual Report 2008
 
Katechismus 11 - 12 jarigen - De Sacramenten
Katechismus 11 - 12 jarigen - De SacramentenKatechismus 11 - 12 jarigen - De Sacramenten
Katechismus 11 - 12 jarigen - De Sacramenten
 
Katechismus 11 - 12 jarigen - De Tien Geboden
Katechismus 11 - 12 jarigen - De Tien GebodenKatechismus 11 - 12 jarigen - De Tien Geboden
Katechismus 11 - 12 jarigen - De Tien Geboden
 
Esdin Results And Elf (2)
Esdin Results And Elf (2)Esdin Results And Elf (2)
Esdin Results And Elf (2)
 
20121121 presenations for geo mob
20121121 presenations for geo mob20121121 presenations for geo mob
20121121 presenations for geo mob
 
Het Vormsel
Het VormselHet Vormsel
Het Vormsel
 
Ppt Presentations Best Methods
Ppt Presentations Best MethodsPpt Presentations Best Methods
Ppt Presentations Best Methods
 
El pastor
El pastorEl pastor
El pastor
 
Crash
CrashCrash
Crash
 
20150901 Mapping Yorkshire
20150901 Mapping Yorkshire20150901 Mapping Yorkshire
20150901 Mapping Yorkshire
 
Analisi ergonomica della segnaletica nell’edificio U6 Milano Bicocca
Analisi ergonomica della segnaletica nell’edificio U6 Milano BicoccaAnalisi ergonomica della segnaletica nell’edificio U6 Milano Bicocca
Analisi ergonomica della segnaletica nell’edificio U6 Milano Bicocca
 
20130904 splash maps
20130904 splash maps20130904 splash maps
20130904 splash maps
 
第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource
 
Зачем вашему бизнесу контакт-центр
Зачем вашему бизнесу контакт-центрЗачем вашему бизнесу контакт-центр
Зачем вашему бизнесу контакт-центр
 

Similar a 南東京I phone勉強会(stidev) 20101030

Windows PhoneについてGdgd話すよ
Windows PhoneについてGdgd話すよWindows PhoneについてGdgd話すよ
Windows PhoneについてGdgd話すよ
Kenji Wada
 
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめiPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Hiramatsu Ryosuke
 
さわってみよう Couchbase Lite
さわってみよう Couchbase Liteさわってみよう Couchbase Lite
さわってみよう Couchbase Lite
ssd kfk
 
"Ordinary" System Development
"Ordinary" System Development"Ordinary" System Development
"Ordinary" System Development
Shintaro Kakutani
 
エフスタ!!Vol.4
エフスタ!!Vol.4エフスタ!!Vol.4
エフスタ!!Vol.4
Jin Ookubo
 

Similar a 南東京I phone勉強会(stidev) 20101030 (20)

使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!
 
使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!
 
Apple Map
Apple MapApple Map
Apple Map
 
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
 
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
 
Windows PhoneについてGdgd話すよ
Windows PhoneについてGdgd話すよWindows PhoneについてGdgd話すよ
Windows PhoneについてGdgd話すよ
 
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめiPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
 
20161112 IoTLT広島xpyconmini
20161112 IoTLT広島xpyconmini20161112 IoTLT広島xpyconmini
20161112 IoTLT広島xpyconmini
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
Crashlyticsでクラッシュ撲滅作戦
Crashlyticsでクラッシュ撲滅作戦Crashlyticsでクラッシュ撲滅作戦
Crashlyticsでクラッシュ撲滅作戦
 
Webエンジニアなら抑えておきたい最近のOSS事情
Webエンジニアなら抑えておきたい最近のOSS事情Webエンジニアなら抑えておきたい最近のOSS事情
Webエンジニアなら抑えておきたい最近のOSS事情
 
さわってみよう Couchbase Lite
さわってみよう Couchbase Liteさわってみよう Couchbase Lite
さわってみよう Couchbase Lite
 
"Ordinary" System Development
"Ordinary" System Development"Ordinary" System Development
"Ordinary" System Development
 
Shaping up ATOK to fit to your iPhone / iPad
Shaping up ATOK to fit to your iPhone / iPadShaping up ATOK to fit to your iPhone / iPad
Shaping up ATOK to fit to your iPhone / iPad
 
それは一枚の不思議な仕様書でした・・・
それは一枚の不思議な仕様書でした・・・それは一枚の不思議な仕様書でした・・・
それは一枚の不思議な仕様書でした・・・
 
エフスタ!!Vol.4
エフスタ!!Vol.4エフスタ!!Vol.4
エフスタ!!Vol.4
 
HTML5/JavaScript ではじめるIoT
HTML5/JavaScript ではじめるIoTHTML5/JavaScript ではじめるIoT
HTML5/JavaScript ではじめるIoT
 
HTML5/JS勉強会「HTML5/JavaScript ではじめるIoT」
HTML5/JS勉強会「HTML5/JavaScript ではじめるIoT」HTML5/JS勉強会「HTML5/JavaScript ではじめるIoT」
HTML5/JS勉強会「HTML5/JavaScript ではじめるIoT」
 
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
 
20101130 南東京iphone開発3
20101130 南東京iphone開発320101130 南東京iphone開発3
20101130 南東京iphone開発3
 

南東京I phone勉強会(stidev) 20101030