API の検索結果:

VOICE 22 イベントレポート

…、エンジニア向けの API の提供はしているものの、全体的に作り込まれたノーコードでの制作ツールを提供していることが多く、そのことからもエンジニアを抱えていない企業を強くターゲットとして意識している印象でした。 音声コンテンツを生成するサービス いわゆる Text-to-Speech と呼ばれる技術を用いてテキストから発話データを生成するサービスです。ただ読み上げデータを作るだけではなく、多言語翻訳であったり声質の変換だったりにも対応しているサービスもありました。また、テキス…

クックパッドマートにおける item-to-item レコメンデーションの変遷

…nd サービスから API でレコメンドが配信され、アプリに表示されます RecVAE (in RecBole) に変えてみて オフライン・オンラインでの評価でいずれも良い成績を見せた RecVAE ですが、実際のコンバージョンにも大きく寄与しています。 変更後、それまでの水準から比較するとおよそ4,5倍ほどレコメンド経由でのカート追加数が増加しました。 その分学習にかかる時間や計算リソース、学習コードの複雑さは若干増しましたが、それを上回るメリットが得られたなと感じています…

Androidアプリ開発を効率的に行うための仕組み

…Viewerでは、 APIリクエストをmockして特定のAPIリクエストでエラーを起こしたり、レスポンスを任意の値に置き換えたりすることができます。 APIリクエストエラー時の挙動が簡単に確認できたりして、とても便利ですね。 APIレスポンスを書き換えている様子 モックされたAPIレスポンスにより部分的にエラーになっている様子 他にもShared Preferencesの内容を確認して、書き換えたりもできます。 クックパッドのAndroidエンジニアの中では必須ツールになって…

Cookpad Code Puzzle for RubyKaigi 2022の解説(裏ステージ)

…WebCrypto APIで復号しています)。腕に覚えがある人は、解読を頑張ってみてください。 *1:この問題形式は、International Conference of Functional Programming(ICFP)という学会で開催れているプログラミングコンテスト(ICFP Programming Contest)の2013年の問題にインスパイアされています。詳しくは自分のICFPc 2013参加体験記などをご覧ください。この問題から理論っぽい要素を抜いて、代わ…

クックパッドは RubyKaigi 2022 に参加&スポンサーしてきました!イベントレポート

…y のインターナル API は私の責任でデザインしたのですが、確かにこういう用途だと色々足りないなぁ、というのがわかるので、なんとかしたいところです。 2つ目は MJIT のオリジナルの作者である vlad の新作 A Faster CRuby interpreter with dynamically specialized IR が興味深かったです。彼は、もともと Ruby を Register based virtual machine にした上で MJIT の手法で J…

iOSDC Japan 2022 ありがとうございました!#iwillblog

…avigation APIを俯瞰した説明や、既存のNavigation APIの課題と課題に対するアプローチを紹介しています。 speakerdeck.com 9/28に開催されるAfter Party iOSDC Japan 2022では本編トークに入り切らなかった話もされるそうですよ! cookpad.connpass.com Swift 5.7で変わる正規表現を試してみよう / ainame https://fortee.jp/iosdc-japan-2022/prop…

新卒向け社内研修制度Horizonを利用してイギリスに出向してきました

…ジェクトへのOpenAPIの導入でした。 具体的な業務内容は別ブログでご紹介していますのでよかったらご覧ください。 techlife.cookpad.com 当初の予定では初めの3か月プラットフォームチームで働いてその後プロダクトチームで働きたいとバディ*と話していたのですが、結局このプロジェクトが楽しくなってしまい5か月以上プラットフォームチームで働いていました。 *入社してから数か月は同じ領域のエンジニアがバディとして付いてくれる。 6か月目にプロダクトチームのiOSエン…

OpenAPI SpecificationsからiOSプロジェクトのネットワーク層を自動生成する

…取り組んだ、OpenAPI SpecificationsからiOSプロジェクトのネットワーク層を自動生成する話をしたいと思います。 海外出向研修プログラムについての体験談はこちらをご覧ください。 techlife.cookpad.com 本題に入る前にまず海外版Cookpadについて簡単に紹介します。 海外版Cookpadは、日本のクックパッドレシピサービスとはコードベースも開発チームも会社も分かれていて、イギリスのブリストルという都市にあるオフィスをベースとするチームによっ…

【RubyKaigi発表予告】error_highlight: user-friendly error diagnostics

…highlightのAPIを直接使って専用の表示をするようにしました。 github.com SentryとDataDogは、Exception#detailed_messageを提案したチケットの中で、#detailed_messageを使うようにすることを約束してくれました。彼らの同意が得られたから#detailed_messageが導入できたという背景もあります。 しかし、エラー表示をしたいフレームワークは他にもたくさんあるので、地道に対応していく必要があるでしょう ま…

クックパッドマートにおけるアカウント統合

…ント統合を実行する API を直接リクエストするようにしました。 幸いクックパッドマートのアカウント統合処理自体は 1 秒もかからないものであるため、ジョブキューシステムを用いた非同期的な処理から API のリクエストという同期的な処理に変更することにより、クックパッドマートマートの初回ログイン処理も、現在は一瞬で完了するようになりました。 このように、必要に応じてアカウント基盤自体の改修が実施できることも、社内基盤を用いている利点の一つです。 おわりに クックパッドマートの…

クックパッドマートアプリのログインの裏側〜Android アプリの実装を添えて〜

…。 定期的な間隔で API を叩き、処理が完了したことをサーバーから受け取る 双方向通信を行うような仕組みを導入し、サーバーからデータを受け取る この画面のためだけに双方向の通信を実現するのはさすがにオーバースペックだったため、今回のケースでは前者を採用しました。 ただ、闇雲に繰り返しを実装するだけでは一生終わらない可能性もあります。ユーザーも呆れ果てて離脱してしまうかもしれません。ということで、この繰り返しには十分な期間を設け、その期間が終了するまでに完了を確認できなかった…

Fluentd 集約ノードのオートスケール

… Map に対する API コールはすぐにレスポンスが戻りますが登録が完了したか・その成否はわからず、そのレスポンスに含まれる ID を使って GetOperation API で問い合わせる必要があるということです。今回は登録時に SQS キューにメッセージを送信し (4)、登録完了を確認する Lambda 関数を SQS から呼び出す (5) ことでこの登録待ちを実現しました。登録が完了していなかった場合に Lambda 関数が失敗する (6) ことで、SQS の可視性タ…

クックパッドマートの配送ルートを自動生成している仕組み

…が、バックエンドの API だけでも利用することが可能です。クックパッドマートでは社内にデプロイした OSRM の API を使って移動時間を計算しています。また、この API は数十msと比較的高速にレスポンスを返してくれますが、ルート生成の過程では大量の移動時間の計算が発生するため、必要になる移動時間は事前に計算して DB に入れておいて、計算時には一括でメモリに載せてしまうなどのパフォーマンス上の工夫もいくつかおこなっています。 各ハブのキャパシティ考慮 近くのハブから…

クックパッドマートのドライバー向けWebアプリケーション

…クライアントから直接APIを呼んでいます。パブリックに公開しているサービスではないのでSEO対策が不要なこととそこまでシビアなパフォーマンスを求められるわけではないので基本的にはSSR(Server Side Rendering)を使用せずシンプルな構成にしています。 SSG(Static Site Generator)も検討しましたが、一部動的に処理したいものがあったためバックエンドと同じく社内基盤のAWSのECS上にデプロイしています。 MUIを活用 ドライバー向けという…

fastText in Cookpad

…デルが大きかったり、API として使うには推論が遅かったりといった問題が残ります。 このように、性能と運用のバランスを考えると、fastText はいまでも非常に優れた選択肢だと思います。 fastText を使っている取り組み クックパッドで fastText を使っている取り組みとしては、たとえば、以下があります。 単語埋め込みを利用した商品に対するキーワードの予測(to appear). 山口泰弘, 深澤祐援, 原島純. 言語処理学会第 28 回年次大会発表論文集. こ…

3/12 (土) 開催!「6社合同SRE勉強会」のクックパッドのセッションを紹介します

…ョンで提供しており、API での連携の基礎ができてきたりマイクロサービス化が始まりつつありました https://techlife.cookpad.com/entry/2014/09/08/093000 。レシピサービスのマイクロサービス化についてはお台場プロジェクト https://techlife.cookpad.com/entry/2018-odaiba-strategy へと続いていき、このお台場プロジェクトによって大きく進みました。現在のレシピサービスは Web フ…

レシピページのOGP画像を動的に生成する

…da のトリガーを API Gateway にして HTTP エンドポイントからアクセスできるようにし、レスポンスのキャッシュ用途でその前段に CloudFront を置いています。 処理がシンプルであること、メンテナンスコストが低いことからサーバレスなアーキテクチャを選択しましたが、リリース後に AWS の CostExplorer を確認したところ $1/day 未満のコストで済んでいるため、金銭面でも良い選択だったのではないかと思っています。 アーキテクチャの選定 上述…

クックパッドの基盤をフル活用して新卒が新規アプリケーションを作った話

…そのドメイン固有の API サーバーを持っていませんでした。購入や決済などの基本的な機能は既に Cookpad Mart のアプリケーションサーバーにあったため、そこに相乗りする形で開発をしていました。 すなわち、「Cookpad Mart では利用しないが、買い物機能では利用したい」API などがあった場合は Cookpad Mart のアプリケーションサーバーに強引に乗せるか、BFF などのオーケストレーション層に乗せるほかない状況でした。 このような決定をした理由として…

Ruby 3.1 の debug.gem を自慢したい

…2 に導入された新 API を用いたデバッガだったんだと思いますが、コンソールから利用するデバッガとしては、一番利用されていたかと思います。pry-debug(deivid-rodriguez/pry-byebug: Step-by-step debugging and stack navigation in Pry )も、byebug を利用していました。 また、Rubymine や VSCode の ruby extension では debase(ruby-debug/…

プロと読み解く Ruby 3.1 NEWS

…完全にプロユースの API だが at_fork はカジュアル感がありすぎる 複数のライブラリが at_fork したとき、何個目のフックが呼ばれているのかがわからない(運悪くフックの処理内容が競合していると例外が起きるかもしれないが、バックトレースを見てもわからない) Ruby のどこでどのように fork が使われているか把握しきれていない すでに自力でKernel#forkなどを再定義してフックしているライブラリといい感じに共存できるかわからない などなど非常に多数の課…

クックパッドマートアプリの開発体験改善に向けたJetpack Compose導入の検討と実践、そして新たな課題

こんにちは、買物プロダクト開発部のYuto Koguchi(@10llip0p)です。2020年に新卒入社し現在はクックパッドマートのAndroidアプリ開発に従事しています。 クックパッドマートアプリ(Android)はリリースから約2年半が経ち、おかげさまで日々多くのユーザーにご利用いただいております。それに伴って実装の規模や複雑さも増していることから開発効率向上のために日々様々な改善を行っています。 その上で本稿ではクックパッドマートアプリのUI実装の課題とその改善に向…

Redshiftのデータをサービス改善に役立てるデータ転送システム Queuery

…接接続せずHTTP APIで取得系クエリを実行できるようになります。 アプリケーションからRedshiftへ接続する手法 仕組み QueueryはRedshiftへUnload文を投げる役割を持つAPIサーバーと、Unload結果をS3から取得するクライアントに分かれています。クライアント側から投げられたSELECTクエリをHTTP API側で受け取り、Unload文へラップしてRedshiftに投げます。クライアント側はその結果をポーリングし続け、Unloadが完了したらS…

既存実装を活用しつつJetpack Composeを用いてクックパッドAndroidアプリの買い物機能を高速に開発している話

… における相互運用 API として用意されているAndroidView/AndroidViewBinding*3を用いることで、マートAndroid で画面を構成している Layout XML をそのままクックパッドAndroidで利用することで開発速度の向上を図っています。 実装について Jetpack Compose版VIPERベースのアーキテクチャ Jetpack Compose版アーキテクチャに関して、2020年のクックパッドAndroidアプリのアーキテクチャ事情 …

DroidKaigi 2021 において、「2020年代の WebView 実装」というタイトルで発表しました

…える必要があります APIが存在しない機能の表示 古いサービスなのでそういうページもあります… これはリソースを割けばネイティブなUIに置き換えられますが、リソース配分など様々な理由で現在でも WebView として提供しています このうち、 1. の用途についてはこれまでほとんど問題なく動作していました。 もともとここだけ Kotlin + VIPER で実装されていたという事情もありますが、ネイティブ実装された画面に遷移しづらい新規登録画面ということも大きいと思います。 …

UINavigationControllerをカスタマイズ 〜OSの影響を受けづらいカスタムナビゲーションの実装〜

…気になるであろうwrapIfNeeded()は後ほどで説明します。init?(coder:)は需要が特になかったので実装されていません。 public final class NoBarNavigationController: UINavigationController { override public init(rootViewController: UIViewController) { let wrappedRootViewController = Self.wr…

今すぐ ALB のアクセスログをクエリする

… Athena の API を使うのではなく、Athena と統合して利用できる、AWS Glue の API を使うことにしました。これは、生の SQL を実行することになる Athena よりも「テーブルを作る」などの操作ごとに API が用意されている Glue の方がより細かく権限管理できるためです。また今回の使い方だと Glue の利用にかかる料金は非常に安く、費用面でも問題になりませんでした。 この方針で、テーブル作成とパーティション作成を行ってくれるバッチを R…

iOSDC Japan 2021 に社員7名が登壇します

…reen Time API fortee.jp 9/19(日) 11:30〜 Track A(40分) 登壇者: giginet / @giginet タイトル: 大規模なアプリのマルチモジュール構成の実践 fortee.jp 9/19(日) 13:30〜 Track B(20分) 登壇者: いまじん / @mrimjn タイトル: MultipeerConnectivityを使った動画のリアルタイム端末間共有 〜料理動画撮影アプリの事例〜 fortee.jp Multipe…

Cookpad Summer Internship 2021 10 Day Techコースを開催しました!

…た。例年の講義では、APIを前半に自分たちで作ってから、その自作APIを使って後半の講義で画面を作るという流れでした。しかし、各自の進捗度合いなどによって想定仕様と微妙に異なる自作APIとなってしまい、画面を作る際に苦労してしまうことがありました。 これを踏まえて、今年はあらかじめ完成しているAPIサーバをこちらで立てて、前半に画面を作る講義を配置してAPIの仕様を把握しながら画面を作りました。その後、3日目のサーバサイド講義で、これまで使ってきたAPIを自分たちで実装してみ…

AWSフル活用!クッキングLiveアプリ「cookpadLive」を支える技術

…ベントを受け取ると API を叩き Amazon Chime の接続情報を取得します。取得した接続情報をもとに Amazon Chime に接続し、接続が完了すると通話が開始される、というフローになります。 配信スタジオとの統合 システム構成ですがこの形に辿り着くまでに多くの議論を重ねました。 今まで開発したことないタイプの機能でしたし、既存の配信スタジオのマイク・スピーカー・カメラ・スイッチャーとどのように統合するのかであったり、 Live 配信の企画として成立させるために…

レガシーとなった TLS 1.0/1.1 廃止までの道のり

…リで利用されている API から先に無効化を進めましたが、幸い大きな混乱はなく廃止完了となりました。 cookpad.com ドメインにおける廃止が終わる頃には、他システムでも既に廃止が完了していたため、cookpad.com での廃止を以てクックパッドが提供するほぼ全てのサービス *11で Legacy TLS の廃止が完了したことになります。 まとめ 図: Qualys SSL Labs にて A を獲得することができた様子 廃止から半年以上経過しますが、社内外どちらも大…