SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
全文検索エンジン
mroonga
1
そもそも全文検索とは?
全文検索(ぜんぶんけんさく、Full text search)と
は、コンピュータにおいて、複数の文書(ファイル)
から特定の文字列を検索すること。「ファイル名検索」
や「単一ファイル内の文字列検索」と異なり、「複数
文書にまたがって、文書に含まれる全文を対象とした
検索」という意味で使用される。
Wikipedia「全文検索」より
2
全文検索の型式いろいろ
grep型
UNIXコマンドのgrepに代表される、逐次実行型。
事前にindexを作成する必要がないが、大量のドキュメントの検索は遅い
WindowsのXPの検索(index生成なしの場合)
遅い…
3
全文検索の型式いろいろ
索引(index)型
事前に索引データ(index)を生成し、高速な検索を実現
4
文字列 | ファイルの場所 | ファイルの更新日 | 出現頻度…
日本語等の解析は難しい
The worst is not, So long as we can say,…
英語の場合
]
]
]
]
]
]
]
]
]
単語区切りが分かりやすくわかち書きしやすい。
MySQL5.6で登場したInnoDB Full Text Searchもスペース区切りで投入したデータを前提としている
日本語、韓国語、中国語等
隣の客はよく柿食う客だ
形態素解析を使用したわかち書きやN-gramによる文字分解を行う必要がある
5
日本語解析の方法その1 形態素解析
形態素解析器と辞書を使用しわかち書きを行う
隣の客はよく柿食う客だ
適切な辞書を使用してやれば適切にパースされる。
IPA辞書→新聞記事等をコーパスに使用しているので堅めの文章は得意
# mecab
隣の客はよく柿食う客だ
隣 名詞,一般,*,*,*,*,隣,トナリ,トナリ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
客 名詞,一般,*,*,*,*,客,キャク,キャク
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
よく 副詞,一般,*,*,*,*,よく,ヨク,ヨク
柿 名詞,一般,*,*,*,*,柿,カキ,カキ
食う 動詞,自立,*,*,五段・ワ行促音便,基本形,食う,クウ,クウ
客 名詞,一般,*,*,*,*,客,キャク,キャク
だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
EOS
6
mecab+IPADicでティーン語を解析すると…
# mecab
安カワ前線キテるぅ的な!
安 接頭詞,名詞接続,*,*,*,*,安,ヤス,ヤス
カワ 名詞,一般,*,*,*,*,*
前線 名詞,一般,*,*,*,*,前線,ゼンセン,ゼンセン
キテ 名詞,一般,*,*,*,*,*
る 助動詞,*,*,*,文語・リ,体言接続,り,ル,ル
ぅ 名詞,一般,*,*,*,*,*
的 名詞,接尾,形容動詞語幹,*,*,*,的,テキ,テキ
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
! 記号,一般,*,*,*,*,!,!,!
EOS
安カワ前線キテるぅ的な! 
(ピチレモン2009年5月号 見出し)
残念!!
7
日本語解析の方法その2 N-gram
検索対象を単語単位ではなく文字単位で分解
隣の客はよく柿食う客だ
N=1 uni-gram
N=2 bi-gram
N=3 tri-gram
・検索ノイズ
・形態素解析よりインデックスサイズ大きくなる
隣の の客 客は はよ よく く柿 柿食 食う う客 客だ
N=2 bi-gramの場合
8
最近よく聞く全文検索エンジン
レスポンスがXMLやJSON
・Elasticsearch
・Apache Solr
・AWS CloudSearch
・InnoDB FTS
(Full Text Search)
・mroonga
MySQLベースなもの
■メリット
・スケールしやすい
・プラグイン開発が活発
!
■デメリット
・RDBMSバックエンドなシステムでは
 組み込み大変
■メリット
・RDBMSバックエンドなシステムに
 組み込みやすい
!
■デメリット
・MySQL以外で使えない
・スケールしにくい9
MySQLのLIKE検索じゃダメな理由
LIKE検索でインデックスが使えるのは前方一致のみ
検索対象カラム LIKE 検索キーワード%
検索対象カラム LIKE %検索キーワード%
検索対象カラム LIKE %検索キーワード
前方一致
中間一致
後方一致
OK
NG
NG
MyISAM(5.5以前)かInnoDB FTS(5.6以降)を使わない限り
text型のカラムにインデックス貼れない
10
MySQLベースの全文検索を使用するに当たって
MySQLのメジャーバージョンの注意
ストレージエンジン
■InnoDB
トランザクション使える
■MyISAM
・トランザクション使えない
・更新時にテーブルロックがかかる
 =更新中はSELECTが待ちになる
5.0
5.1
5.5
5.6
5.7(次期バージョン)
メジャーバージョンの推移が分かりにくい
InnoDBがデファクトかつ殆どの場合必須
11
各種全文検索エンジンの特徴
12
InnoDB FTS(Full Text Search)
Tritonn
mroonga MySQL-ftppc
MySQL 5.0
MySQL 5.1
MySQL 5.6
MySQL 5.5
(My ISAMのみ)
(My ISAMのみ)
MySQLで使える各種全文検索エンジン
13
Tritonn mroonga MySQL-ftppc InnoDB FTS
InnoDB ○ ○
MyISAM ○ ○ ○
MeCab ○ ○ ○
N-gram ○ ○ ○
MySQL5.0 ○
MySQL5.1 ○ ○
MySQL5.5 ○ ○
MySQL5.6 ○ ○ ○
第6回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1)
http://gihyo.jp/dev/clip/01/groonga/0006?page=1
というわけで
・MySQL5.0のみに対応しているTritonnは除外
・MyISAMのみの対応となるMySQL-ftppc、Tritonnは除外
(弊社パッケージはMySQL5.1以降対応のため)
・トランザクションが使えない
・更新時にテーブルロックが掛かり参照不可
14
mroongaの概要
・groongaのMySQLバインディング版
・最新版のMySQL 5.6に対応
!
・ストレージエンジンとしてInnoDBが利用可能
 トランザクションが利用可能
 更新時はテーブルロックではなく行ロック
!
・Ngramもuni-gram(n=1)、bigram(n=2)、tri-gram(n=3)等が
 利用可能
!
・ラッパーモードとストレージモード
 ラッパーモード
  既存のストレージエンジンをラップする形で動作する
 ストレージモード
  トランザクション使えない
15
mroongaの概要
実運用としてはデータ登録時に分かち書き等する必要なし
CREATE TABLE dtb_products (
id INT PRIMARY KEY AUTO_INCREMENT,
keyword VARCHAR(255),
FULLTEXT INDEX (keyword) COMMENT 'parser "TokenUnigram"'
) ENGINE=mroonga comment = 'engine "innodb"';
INSERT INTO dtb_products VALUES(0, 今日はいい天気です )
!
SELECT * FROM dtb_products MATCH(keyword) AGAINST( +天気 IN BOOLEAN MODE)
16
商品(mroonga用)
・ストレージエンジンをmroongaに
・キーワードカラムに対して
 FULL TEXT INDEXを追加
商品(InnoDB FTS用)
・ストレージエンジンをInnoDBに
・キーワードカラムに対して
 FULL TEXT INDEXを追加
商品(LIKE 検索用)
・ストレージエンジンをInnoDBに
・キーワードカラムに対して
 通常のインデックスを追加
100万件(5000商品 200店舗)
4万件(200カテゴリー 200店舗)
100万件(5000商品 200店舗)
100万件(5000商品 200店舗)
100万件(5000商品 200店舗)
以下のテーブルに対してSELECT、UPDATE文を
各1万回実行してベンチマークを実施
今回使用したテーブル
17
今回使用した環境
サーバ
ミドルウェア
AWSのm1.mediumを使用。
・CPU Intel(R) Xeon(R) CPU E5430 @ 2.66GHz コア数1
・メモリ3.75GB
!
CentOS 6.4 x86_64
・MySQL5.6.12
・mroonga4.0.0
18
SELECT
商品名
,価格
…
FROM
カテゴリー
LEFT JOIN
商品カテゴリー(紐付け)
ON
カテゴリー.カテゴリーID=商品カテゴリー.カテゴリーID
LEFT JOIN
商品 USING(商品ID)
WHERE
商品.削除フラグ=0 AND 商品.ステータス=1
AND 商品.キーワード LIKE %検索語句
…
LIMIT 15 OFFSET 0
SELECT文(LIKE検索)
検索語句はクエリ毎にユニークな語句を使用
19
SELECT
商品名
,価格
…
FROM
カテゴリー
LEFT JOIN
商品カテゴリー(紐付け)
ON
カテゴリー.カテゴリーID=商品カテゴリー.カテゴリーID
LEFT JOIN
商品 USING(商品ID)
WHERE
商品.削除フラグ=0 AND 商品.ステータス=1
AND MATCH(商品.キーワード) AGAINST( 検索語句 )
…
LIMIT 15 OFFSET 0
SELECT文(mroonga/InnoDB FTS)
検索語句はクエリ毎にユニークな語句を使用
20
LIKE中間一致
InnoDB FTS
mroonga(mecab)
mroonga(Unigram)
mroonga(Bigram)
mroonga(Trigram)
10 100
5
16
27
9
19
3,000
14
21
39
17
31
2,000
平均値 中央値
SELECT実行時間
∼∼
mroonga、InnoDB FTSはLIKEの中間一致検索に比べ100倍前後高速。
mroongaのNgramの場合、Nの値が大きいほど高速
ミリ秒
100万件のデータを投入したテーブルに1万回SELECTを実行
21
UPDATE
商品
SET
keyword= 任意の文字列
WHERE
商品.商品ID=ランダムなID
UPDATE文
商品IDはクエリ毎にユニークなIDを使用
22
LIKE中間一致
InnoDB FTS
mroonga(mecab)
mroonga(Unigram)
mroonga(Bigram)
mroonga(Trigram)
0 2.5 5 7.5 10
7
7
8
7
6
6
7
7
9
8
7
7
平均値 中央値
UPDATE実行時間
ミリ秒
どれを使用してもそれほど差異無し
100万件のデータを投入したテーブルに1万回UPDATEを実行
23
LIKE中間一致
InnoDB FTS
mroonga(mecab)
mroonga(Unigram)
mroonga(Bigram)
mroonga(Trigram)
10 100 1000 10000
291.45
210.82
208.69
201.01
6,106.13
75.8
100万件データのindex更新時間
∼
秒
InnoDB FTSが著しく遅い。
mroongaのNgramの場合Nの値が大きいほど更新に時間が掛かる
24
気になっている点
テーブルには以下の制限があります。この制限はgroongaに由来します。
1つのキーの最大サイズ: 4096Bytes
キーのサイズを合計した上限値: 4GBytes
!
実際には他の諸条件の制約により上記の値まで到達しない場合もあります。
25
5. 制限事項 ̶ Mroonga v4.01 documentation
http://mroonga.org/ja/docs/reference/limitations.html
完

Weitere ähnliche Inhalte

Andere mochten auch

Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索yoyamasaki
 
MySQLを通じた全文検索エンジンSenna/groongaの利用について
MySQLを通じた全文検索エンジンSenna/groongaの利用についてMySQLを通じた全文検索エンジンSenna/groongaの利用について
MySQLを通じた全文検索エンジンSenna/groongaの利用についてTasuku Suenaga
 
Groongaの今後への期待
Groongaの今後への期待Groongaの今後への期待
Groongaの今後への期待Naoya Murakami
 
全文検索エンジンgroongaの紹介@Solr勉強会
全文検索エンジンgroongaの紹介@Solr勉強会全文検索エンジンgroongaの紹介@Solr勉強会
全文検索エンジンgroongaの紹介@Solr勉強会Tasuku Suenaga
 
Groongaでのタグ検索と表記揺れとの戦い
Groongaでのタグ検索と表記揺れとの戦いGroongaでのタグ検索と表記揺れとの戦い
Groongaでのタグ検索と表記揺れとの戦いNaoya Murakami
 
MySQL対応全文検索システムMroonga(むるんが)
MySQL対応全文検索システムMroonga(むるんが)MySQL対応全文検索システムMroonga(むるんが)
MySQL対応全文検索システムMroonga(むるんが)Hideshi Ogoshi
 
Ichii gree-crooz-20120126
Ichii gree-crooz-20120126Ichii gree-crooz-20120126
Ichii gree-crooz-20120126Takashi Ichii
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessShinsuke Sugaya
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!Kouhei Sutou
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderSadayuki Furuhashi
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Yohei Yasukawa
 

Andere mochten auch (16)

Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
MySQLを通じた全文検索エンジンSenna/groongaの利用について
MySQLを通じた全文検索エンジンSenna/groongaの利用についてMySQLを通じた全文検索エンジンSenna/groongaの利用について
MySQLを通じた全文検索エンジンSenna/groongaの利用について
 
Groongaの今後への期待
Groongaの今後への期待Groongaの今後への期待
Groongaの今後への期待
 
全文検索エンジンgroongaの紹介@Solr勉強会
全文検索エンジンgroongaの紹介@Solr勉強会全文検索エンジンgroongaの紹介@Solr勉強会
全文検索エンジンgroongaの紹介@Solr勉強会
 
Groongaでのタグ検索と表記揺れとの戦い
Groongaでのタグ検索と表記揺れとの戦いGroongaでのタグ検索と表記揺れとの戦い
Groongaでのタグ検索と表記揺れとの戦い
 
MySQL対応全文検索システムMroonga(むるんが)
MySQL対応全文検索システムMroonga(むるんが)MySQL対応全文検索システムMroonga(むるんが)
MySQL対応全文検索システムMroonga(むるんが)
 
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
 
Ichii gree-crooz-20120126
Ichii gree-crooz-20120126Ichii gree-crooz-20120126
Ichii gree-crooz-20120126
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 
How To Become A Rubyist
How To Become A RubyistHow To Become A Rubyist
How To Become A Rubyist
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 

Mehr von エンジニア勉強会 エスキュービズム

Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたエンジニア勉強会 エスキュービズム
 

Mehr von エンジニア勉強会 エスキュービズム (20)

エスキュービズム新技術発表資料
エスキュービズム新技術発表資料エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
 
小売りにおけるAIの可能性
小売りにおけるAIの可能性小売りにおけるAIの可能性
小売りにおけるAIの可能性
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
はじめての品質
はじめての品質はじめての品質
はじめての品質
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 

Kürzlich hochgeladen

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (8)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

全文検索エンジンMroonga_エンジニア勉強会20140418