ホーム自己紹介ブログ
NO.40
DATE2020. 02. 08

1コマ漫画検索サービスTiqav2 (Algolia + Cloudinary + Google Cloud Vision API) 作ってみた

画像で会話って楽しい

皆さん、チャットツールでコミュニケーションするとき、絵文字や画像って使ってますか? 僕はよく使ってます。人とコミュニケーションするのに、文字だけだと堅苦しいイメージですよね。 例えば、

『OK です、それで先に進めて下さい。』

というフレーズだけだと、相手がどのような感情なのか読み取りにくいです。

そこで、次のような画像でコミュニケーションを取ると、柔らかい印象を与えることができます。

golia LGTM
golia LGTM

Tiqav2

Tiqav とは

画像を使って会話をするためのサービスとして、Tiqav があります。

dev.tiqav.com

現在は、サービス終了しています。 Tiqav2 は、その Tiqav を参考にして作りました。

Tiqav2 とは

Tiqav2 は、大きく分けて 2 つの機能があります。

  1. 画像とテキストを保存
  2. 画像を検索&表示

2 つの機能

画像とテキストを保存

Saving flow by Tiqav2
Saving flow by Tiqav2

検索する為には、全文検索サービスの Algolia を使います。

Home
More than 18,000 organizations rely on Algolia. From Agentic to Generative to Search AI, Algolia gives teams the tools to build intuitive, adaptive, and high-performing digital experiences on a single AI search and retrieval platform.
www.algolia.com

Algolia に保存する情報は、主に 3 つです。画像 URL と拡張子、そしてテキストです。 画像は画像変換&管理サービスの Cloudinary に保存します。保存後、Cloudinary より、画像 URL と拡張子が手に入ります。

Image and Video Upload, Storage, Optimization and CDN
Streamline media management and improve user experience by automatically delivering images and videos, enhanced and optimized for every user.
cloudinary.com

テキストは、Google Cloud Vision API へ画像を渡すことでテキストを抽出します。 もちろん、手動でテキストを設定することもできます。

Vision AI: Image and visual AI tools
Vision AI uses image recognition to create computer vision apps and derive insights from images and videos with pre-trained APIs. Learn more..
cloud.google.com

画像を検索&表示

Searching Flow  By Tiqav2
Searching Flow By Tiqav2

テキストで全文検索を行います。その結果の ID と Extension を組み合わせることで、 画像を表示することができます。Extension の種類は、Cloudinary のサポートするもの全てになります。

"gif", "png", "jpg", "bmp", "ico", "pdf", "tiff", "eps", "jpc", "jp2", "psd", "webp", "zip", "svg", "mp4", "webm", "wdp", "hpx", "djvu", "ai", "flif", "bpg", "miff", "tga", "heic"
Image Transformations for Developers | Documentation
Learn how to dynamically transform images with one line of code: crop, resize, add borders and background, face detection, rich image effects, and more.
cloudinary.com

この画像を表示する機能を使うと、次のように Slack 上で画像を送信することができます。

Send Tiqav2 URL on Slack
Send Tiqav2 URL on Slack

詳しい機能は、次のリポジトリをご確認下さい。

GitHub - silverbirder/tiqav2: Tiqav2 is the platform that provide image search API
Tiqav2 is the platform that provide image search API - silverbirder/tiqav2
github.com

SaaS は個人開発には最適

今回、全文検索であったり画像管理は、SaaS に全て任せました。テキスト抽出はなくてもよかったのですが、Google Cloud Vision API が、そこそこ使えたため、そちらも使いました。

個人で開発する際、リソース(時間、お金、人)は組織に比べてとても小さいです。 SaaS は、1つのことを上手くやってくれるし、個人の利用範囲であれば無料なものが多いです。 ニッチなカスタマイズしたい要求がない限り、SaaS は大体の要望を叶えてくれます。 どんな種類の SaaS があるか知りたい方は、↓ のサイトを見てみて下さい。参考になるはずです。

Search and discover your favorite building blocks to extend your SaaS application | SaaS Blocks
Search and discover your favorite building blocks to extend your SaaS application
saasblocks.io

SaaS に面倒なことは任せて、プロダクトコードに集中することは、私にとって、とても大切にしています。 ちなみに今回のプロダクトコードは、CleanArchitecture + InversifyJS で作りました。

終わりに

Tiqav2 は、OSS として公開していますので、誰でも無料で構築できます。 ぜひ、使ってみて下さい。快適なコミュニケーションを目指しましょう!

成果物
サービス

-

シェアする

フォローする

次のページ

GMailをGCalendarに登録するサービス rMinc を作ってみた

前のページ

Google Apps Script でも テスト がしたい! (Clasp + Typescript + Jest)

関連する記事

タグ「成果物」の記事

個人サイトリニューアルの振り返り

個人サイト(ジブンノート)をリニューアルしました。本記事では、個人サイトをリニューアルした際にあった出来事などを振り返りたいと思います。ちなみに、個人サイトは以下のページです。ノート風デザインで、ブログ記事が読めるようになりました!🎉

2026-01-29

成果物
振り返り
個人サイトをリニューアルしました!

個人サイトをリニューアルしました!🎉 https://silverbirder.github.io リニューアルは、今回で6回目です。制作期間は、去年の12月27日から今年の1月28日までの約1ヶ月間です。個人的には最速の開発期間でした。AIの力は偉大ですね。本記事では、個人サイトのリニューアルでこだわったポイントについて紹介します。

2026-01-28

成果物
機能リクエスト投稿サービスを作った

個人開発として、機能リクエスト投稿サービスを作成しました。 サービス名は Fequest で、Feature Request の略です。 Fequest は、プロダクトに対して「この機能を追加してほしい」「ここを改善してほしい」といった要望

2025-12-28

成果物

タグ「サービス」の記事

1週間で完成!Spotifyタイアップ検索アプリを作った話(駆け出し9年目)

どうも、Web業界で働き始めて9年目の駆け出しエンジニア、silverbirderです。Spotifyで音楽を聴いていると「この曲、どこかで聞いたことがあるけど、何の主題歌だったかな?」と思うこと、ありませんか?特にドライブ中や作業中に、ふと気になることが多いですよね。 私もそんな経験があり、気になったその曲が主題歌だったアニメを見始めたことがきっかけで、「簡単にタイアップ情報(アニメやドラマなど)を調べられるアプリがあったら便利だな」と思い、このアプリを作ることにしました。

2024-09-24

サービス
AI
Google
成果物
iframeでTwitterの埋め込みコンテンツの描画後に、画面表示する方法

結論 `iframe.contentWindow` から `twttr` オブジェクトを見つけて、`event.bind("rendered", () => {})` の第二引数に、表示処理を書くことです。 背景 `https://twitter.com/openwc/status/1427617679427440643` のような URL から、埋め込みコンテンツをブログサイトなどに表示したいです。 `https://publish.twitter.com/oembed?url=${URL}` のレスポンスの中の html が、埋め込みコンテンツになります。これを iframe の srcdoc に設定することで、埋め込みコンテンツを表示することができます。

2022-05-22

サービス
フロントエンド
TikTokスクレイプ基盤をGCP上で構築してハマったこと

TikTokへスクレイプするバッチをGCP上で構築しました。GCP構築のシステム設計話と、その構築時に、ハマったことを共有します。

2021-08-28

サービス
クラウドインフラ
成果物
クローリング
← ブログ一覧へ