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
事業モメンタムを生み出すプロダクト開発
Search
Takashi Machinaga
February 27, 2025
Technology
1
190
事業モメンタムを生み出すプロダクト開発
Takashi Machinaga
February 27, 2025
Tweet
Share
More Decks by Takashi Machinaga
See All by Takashi Machinaga
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
120
AI駆動の自動テスト生成
macchiitaka
1
130
What is Standard Schema?
macchiitaka
0
110
Other Decks in Technology
See All in Technology
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
220
Android Audio: Beyond Winning On It
atsushieno
0
300
KotlinConf 2025_イベントレポート
sony
1
140
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.2k
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
630
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
450
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
1
240
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
170
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
180
💡Ruby 川辺で灯すPicoRubyからの光
bash0c7
0
120
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
280
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
460
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
525
40k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Gamification - CAS2011
davidbonilla
81
5.4k
RailsConf 2023
tenderlove
30
1.2k
Visualization
eitanlees
148
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Why Our Code Smells
bkeepers
PRO
339
57k
Transcript
事業モメンタムを⽣み出すプロダクト開発 1 ヶ⽉で AI FAX をリリースした開発アプローチ 2025-02-27 株式会社IVRy(アイブリー) 町永 隆
@macchiitaka
⾃⼰紹介 • @macchiitaka • 2024年8⽉ IVRy に⼊社 • 主にWebフロントエンドの機能開発 町永
隆(Takashi Machinaga) 2 ソフトウェアエンジニア
IVRyとは?
電話⾃動応答サービスIVRy 電話AI SaaS IVRy(アイブリー)は、 ⽉額2,980円からカスタム電話をカンタンに作成できるサービス。 全ての電話業務を誰でもすぐにAIを使って効率化できます
今⽇は電話の話はしません
AI FAXの話をします
AI FAXとは? 初期費⽤/設備費⽤ゼロ、⽉額2,980円から利⽤可能な、 AIでFAXを⾃動⽂字起こし(OCR)できるクラウドFAXです。
ビジネス上のFAXを取り巻く現状 「ファクシミリの利⽤調査結果」を公開 〜5割を超える⽅が⽇常の業務フローの中でファクスを利⽤〜 「ファクシミリの利⽤調査結果」を公開 〜5割を超える⽅が⽇常の業務フローの中でファクスを利⽤〜 あなたはお勤め先で⽂書や画像を送ったり受けたりするために ファクス(ファクシミリ)を使⽤していますか? 業種別のファクスの使⽤有無(単位=%) 法⼈コミュニケーションではFAXは根強く残っており、40.1%が「勤務先でFAXを使⽤している」業界の業務慣習 や相⼿⽅のITリテラシーによるチャネル依存が⾼く、業界によっては50%を超える使⽤状況が続いています。
FAX業務において⽣じる課題 コスト⾯での負担だけでなく、デジタルデータになっていないことで送受信場所の制 約や受取時‧受注対応時のヒューマンエラーの温床にもなっています。 外出先やリモート ワーク先ではFAX が⾒れない‧返信 できない インク‧⽤紙の ⼊れ替えや 詰まった時の故障
対応に⼿がかかる 受け取ったものが ⾒つからず対応が 漏れる/後から探す のも⼀苦労 FAXで届いた内容 を⼈がパソコンに 毎回転記しており ミスが起きる
2024年11⽉、AI FAXリリース
初期開発をしてました
僕とAI FAXの出会い
⼊社して1ヶ⽉のある⽇の会話 同僚「FAXプロジェクト、フロントエンドエンジニア探してるんだって〜」 町永「へぇ〜、チンチロに勝ったらやりますよ(ノリ)」 🎲 🎲 🎲
🎲 チンチロ • チンチロは3個のサイコロを使って役で勝敗を決める⽇本の伝統的な遊び • Slackで「チンチロ」と打つとカスタムレスポンスが返ってくる
🎲 チンチロ
🎲 チンチロ
🎲 チンチロ
🎲 チンチロ
ほなやるか☺
ところで
なぜエンジニアを探してた?
嬉しいことにプロダクトが できる前にお客様が AI FAXのご要望をいただいた
“10⽉頭に間に合えば”
“10⽉頭に間に合えば” ※ このとき9⽉2⽇
ほ、ほなやるか…☺
開発スタート!
開発中に⼤事にしていたこと
• スケジュール不安は正直ある • それでも、だからこそ、開発を楽しむ! • ⽂化祭 • みんなが盛り上げてくれる ◦ 毎⽇の進捗を
Slack で共有 ▪ めっちゃリアクションもらえる ◦ All Handsで進捗やリリース予告 ▪ 「待ってましたー!」「⾰命だ」 • 本来チーム開発は楽しい! 開発を楽しむ
• 開発中から絶対にいいプロダクトになると確信があった • でもPMF前のプロダクトには違いない... • だからチームのメンバーに知ってもらい、期待してもらいたい • 広めてくれる⼈、売ってくれる⼈がいればこそ、次の開発のチャンスができる • もっといいプロダクトにできる
• 開発の⽂脈で期待値調整という場合は、下げるパターンが多い • モメンタムを作るためにはときに期待値を上げることも⼤事 プロダクトの期待値を上げる
具体的にどんな開発してたの?
設計の⼀部をお⾒せします!
FAX送信機能
FAX送信機能 CPaaS IVRy サーバー ブラウザ PDF JPEG PNG PDF FAX
ブラウザからPDFや画像をFAXとして送信する機能。複数ファイル送信可。
FAX送信機能 CPaaS IVRy サーバー ブラウザ PDF FAX どこでPDFを ⽣成する? PDF
JPEG PNG ブラウザからPDFや画像をFAXとして送信する機能。複数ファイル送信可。
ブラウザでPDFを⽣成してます
なぜブラウザで⽣成? • ブラウザで⽣成したほうがシンプルにUXがいい ◦ 送信前にプレビューを表⽰したい ◦ 画像のリサイズや回転をプレビューに反映したい ◦ PDFのファイルサイズをアップロード前に知りたい •
開発機能を最⼩にしたい ◦ サーバーサイドで⽣成する場合、⾮同期で処理のためのキューや結果の通 知など必要な機能が増える • リソース効率を最⼤化したい ◦ できるだけ並列で開発したいがチームの成熟度が低い
どうやって変換してるの?
PDF⽣成フロー
PDF⽣成フロー
ファイルをキューに追加 • フォームに取り込まれたファイルは 拡張⼦とファイルの中⾝を確認して バリデーション • すべてオンメモリのキューに追加 • ファイルの並び順を保持するため •
キューからひとつずつ取り出して後 続の処理を実⾏
すべて画像のURL形式に変換
PDF⽣成フロー
• ファイルオブジェクトだとアプリ内 で取り回しづらい • オブジェクトURL参照に変換し て、 URL⽂字列形式で保持 • URL.createObjectURL() 画像をオブジェクトURL参照に変換
PDF⽣成フロー
• PDF.js を利⽤し1ページずつ画像に変換 ◦ Firefox PDF リーダー • Web Worker
で並列処理 • OffscreenCanvas で Canvas に描画 • Canvas から Blob に変換 • 画像はオブジェクトURL参照 PDFを画像に変換
画像の加⼯
PDF⽣成フロー
• FAXの仕様に合わせて画像を変換 • スマホの写真はFAXの仕様に対して⼤きい • CPaaSが⾃動で縮⼩してくれるが過度に縮⼩する • 解像度は⾼い⽅がOCRの精度が⾼い • Blob
(JPEG) を指定 サイズ、縦横⽐、向きを変換
PDF⽣成フロー
すべてのファイルを送信画像に変換 • キューが空になるまでファイルから送信画像への変換を繰り返す
PDF⽣成フロー
PDFファイルを⽣成 • jspdfを利⽤してPDFのBlobを⽣成 • Web Workerで処理 • 画像がPNGの場合、処理がJPEGの10倍 遅い •
オブジェクトURLをUIスレッドに返却
PDF⽣成フロー
PDFファイルを複製 • UIスレッドでPDFを複製してからWeb Workerを停⽌する • オブジェクトURLは⽣成したスレッドが停⽌すると参照できなくなる • PDFファイル完成
無事送信成功!🎉
もっと仕様⼩さくできたんじゃない?
限られた時間で⾮機能要件に どれだけこだわれるかが腕の⾒せどころ
UIはUXにこだわった⽅が 絶対楽しい
まとめ • チームで開発を楽しむ。本来チーム開発は楽しい • みんなに期待してもらう。事業もプロダクトも期待されると好循環が回る • 限られた時間で⾮機能要件にどれだけこだわることができるかが腕の⾒せどころ
事業開発の才能がなくても「どこまでやれば」新規事業は⽴ち上がるのか https://note.com/r_takayanagi/n/nc50b34be36a5 チンチロに勝ったらAI FAXが完成した話 https://note.com/kikuivry/n/n779add0c78bb Re: チンチロに負けて AI FAX を開発した話
https://note.com/macchiitaka_ivry/n/n2eb787aae62a ほかのメンバー視点
電話、FAX以外にも⽔⾯下で プロダクトたくさん作ってます!
フロントエンド周りで 改善したいこともたくさんあります!
https://ivry-jp.notion.site/IVRy-127eea80adae801397a4e4d7ea74e291