Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gemini APIを使ってみよう@potatotips#86
Search
umsys
February 07, 2024
Programming
4.8k
0
Share
Gemini APIを使ってみよう@potatotips#86
umsys
February 07, 2024
More Decks by umsys
See All by umsys
Jetpack Composeの スクロールパフォーマンス改善を検証した話
umsys
0
700
ZOZOTOWNアプリでのフルCompos実装取り組み事例
umsys
0
1.3k
Other Decks in Programming
See All in Programming
AI時代のPhpStorm最新事情 #phpcon_odawara
yusuke
0
190
属人化しないコード品質の作り方_2026.04.07.pdf
muraaano
0
220
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
5k
アーキテクチャモダナイゼーションとは何か
nwiizo
19
5.3k
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
560
Claude CodeでETLジョブ実行テストを自動化してみた
yoshikikasama
0
120
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
980
GoogleCloudとterraform完全に理解した
terisuke
1
120
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
340
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
0
360
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
180
Featured
See All Featured
Done Done
chrislema
186
16k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
260
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Visualization
eitanlees
150
17k
Chasing Engaging Ingredients in Design
codingconduct
0
170
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
160
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Marketing to machines
jonoalderson
1
5.2k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
310
Transcript
Gemini APIを使ってみよう 2024/02/07 potatotips#86 内山雅由(@umsys_)
自己紹介 株式会社ZOZO X: @umsys_ Bluesky: @umsys.bsky.social GitHub: https://github.com/umsys
内山 雅由 • 車の運転とゲームとハリネズミが大好きです • 最近はポケモンカードにハマっています • 今月末発売予定のFF7 REBIRTHが楽しみです
生成AI使っていますか?
世はまさに生成AI戦国時代! • chatGPT(OpenAI) • Bard(Google) • Copilot(Microsoft) • Rufus(Amazon) などなど
Gemini API • Androidアプリ開発ではGemini APIを使うことで、生成AIを利用したアプリが開発でき ます。 • Androidだけでなく、様々な言語でも利用可能です。 ◦ Python
◦ Go ◦ Node.js ◦ Swift ◦ JavaScript • curl コマンドを使用して Gemini API を試すこともできます。 ◦ REST API
料金 今のところ無料で使えるプランがあります。
Androidアプリで開発してみよう!
クイックスタート Android StudioはIguanaかJellyfishの最新プレビュー版を用意してください。
クイックスタート Gemini API Starterを選択します。 ※Hedgehogだとこれが出てこない(泣) 誠に遺憾です
クイックスタート ここでAPI Keyが必要になります。 Google AI StudioでKeyを作成し、入力してください。 ※Google AI Studioへは「Generate API
key with Google AI Studio」から飛ぶことができます。 ※2 API Keyは誰にも教えないように注意しましょう。
クイックスタート ビルドしたら動かせます。
クイックスタート [File] > [New] > [Import Sample] を選択して 「generative」で検索すると、 他の機能の紹介を兼ねたコードサンプルを
Android Studio にインポートできます。
クイックスタート マルチモーダル テキストと画像をGeminiに渡して会話できる。
クイックスタート チャット テキストだけの会話だが、チャットの履歴を記憶した 状態で会話を続けることができる。 ※テンプレートからビルドできるアプリは毎回記憶が リセットされるワンショット
コードを見てみよう
GenerativeModelのセットアップ GenerativeModelの引数に各種設定値を渡してセットアップする。 modelName ユースケースに合わせてモデル名を設定。ワンショットとチャットの場合は 「gemini-pro」、マルチモーダルの場合は「 gemini-pro-vision」 apiKey Google AI Studioで作成したKeyを設定。秘匿性を高めるため、
local.propertiesなどに書いておいて、 BuildConfig.apiKeyで呼び出すと良いで すね。 generationConfig 返答のランダム性や、返してほしくない語句の設定(セーフティ機能)などの設 定ができます。サンプルではランダム性だけ設定しています。 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
ユーザーの入力内容をGeminiに渡している箇所 • GenerativeModelのgenerateContent()にユーザーの入力内容(prompt)を渡し、Geminiからの返答 を受け取ってUIStateに流している。 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
すごい簡単。 嬉しいね!
もう少し詳しくコードを見てみよう
GenerativeModel.generateContent() 引数に応じてpromptの型が3つ用意されています。 • Stringだけを渡して会話する。 • 画像だけを渡して会話する。 • 画像とテキストを複数混合して会話する。 現在はこれらのユースケースが実装されています。 Genimiからの返答はGenerateContentResponseとして返ってきます。
引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
Content Content型はStringやBitmap を複数抱えることができるクラ ス。 ユーザーの入力から画像とテキ ストを複数混合してGeminiに渡 したいときはContent型で promptを渡すことができます。 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
GenerateContentResponse Genimiからの返答はGenerateContentResponseとして返ってきます。 candidatesはGeminiからの返答リストです。 GenerativeModelのセットアップでgenerationConfig.candidateCountを2以上にしておくと複数返って きます。 promptFeedbackは与えられたpromptに対するフィードバックです。不適切な入力などがあった場合に 返されるようです。(ちょっと BANが怖くて試してません) 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
Candidate Geminiからの返答を定義したクラスです。 ユーザー入力と同じContentとして返してくるようですね。 その他はセーフティーレーティングなどの付与情報です。 (ここまでコードを見てみると、 AIセーフティに対してかなり慎重になっている姿勢が感じられますね。) 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
ということは簡単に図示すると
None
公式ドキュメントには書いてなかったけ ど、Gemini APIで画像生成できるので は!?!!?
None
ご清聴ありがとうございました!