API の検索結果:

Prebid.js 導入による Header Bidding 改善の舞台裏

…Publisher API Reference を参考することになります。公式ドキュメントがかなり充実しているので、基本的なユースケースであれば、ほぼ嵌らずに実装できるでしょう。 以下は、Getting Started に紹介されている、最小限の実装例です。ここで使用されている API のうち、主要なものについて紹介します。 なお、Google Publisher Tag(以下、GPT)との併合を前提としています。 <html> <head> <link rel="icon"…

Dynamic Type

iOS

…yle:)がメインのAPIです。UIFont.preferredFont(forTextStyle: .body)が今のDynamic Type設定に合っているbodyスタイルのフォントを返してくれます。 Interface Builderでは、スタイルをlabelやtext viewのFont設定にText Stylesの中で選べます。 自動フォント調整 上記のセクションの使い方だけでは、アプリがバックグラウンドにある間にユーザーがDynamic Typeの設定を変えてアプ…

クックパッド基幹システムのmicroservices化戦略 〜お台場プロジェクト1年半の軌跡〜

…スのcookpad、APIサーバーのpantry、 バッチのkuroko、管理画面のpapaの4アプリケーションを主に実装しています。 お台場プロジェクトとは そして、この巨大な「本体」システムのアーキテクチャを根本から刷新し、 改善するプロジェクトが「お台場プロジェクト」です。 わたしがこのお台場プロジェクトを開始したのは去年(2017年)のバレンタインデー、2月14日のことでした。 そのときやったことは「とりあえず改善したいことをリストアップする場所」としてGitHubに…

Ruby 2.6 の改善を自慢したい

…eq を辿るという API です。 ISeq には ISeq#path というメソッドがあり、そのメソッドが定義されたファイル名を知ることができるので、これで path と比較することで、必要な ISeq を絞ることができます。 次に、line の絞り方です。これには2通りのやり方があります。 まず、ISeq#trace_points を用いて指定の行があるかどうかを調べる方法です。 1 def foo 2 p 1 3 end 4 5 ISeq = RubyVM::Instr…

Ruby 2.6 新機能:本番環境での利用を目指したコードカバレッジ計測機能

…racePoint API)が有効だと MJIT は動かないようになっています。oneshot coverage はバイトコード(フックフラグ)を実行時に書き換えるので、JIT コンパイルしてもフラグが変わったらコンパイルのやりなおしになるためです。optcarrot を --jit オプション付きで測定し直した結果がこちら。 条件 --jit なし fps --jit あり fps (1) カバレッジ測定なし + --jit 39.8 56.1 (2) 従来の行カバレッジ …

プロと読み解く Ruby 2.6 NEWS ファイル

…グ修正を除く) C API updates / C API のアップデート Implementation improvements / 性能向上 Miscellaneous changes / その他 読めばわかると思いますが、言語の変更が最初にあって、組込クラス、標準ライブラリの仕様変更とかの話になり、最後に互換性関係ない性能向上とかで話を締めています。やっぱり、これまでの Ruby アプリが動くかどうかと言う、仕様変更が気になりますよね。 文中に出てくる [Feature…

BERT with SentencePiece で日本語専用の pre-trained モデルを学習し、それを基にタスクを解く

研究開発部の菊田(@yohei_kikuta)です。機械学習を活用した新規サービスの研究開発(主として画像分析系)に取り組んでいます。 最近は、社内の業務サポートを目的として、レシピを機械学習モデルで分類して Redshift に書き込む日次バッチを開発・デプロイしたりしてました。 ここ数ヶ月で読んだ論文で面白かったものを3つ挙げろと言われたら以下を挙げます。 BERT: Pre-training of Deep Bidirectional Transformers for …

Catchpointを使ったWebページのパフォーマンス計測

…なので、ブラウザの API から取得できますし、標準化も進んでいます。一方、First Meaningful Paint や Time To Interactive は何を持って意味のあるコンテンツとするのか、ユーザーの入力に反応できる状態と判断するのか、という基準を決めるのが難しいので、曖昧さが残る指標ですが、実際のユーザーの体験に近い数値を取ることができます。 これらの指標が有効なケースも多いのですが、実際のブラウザによるページのロードはもう少し複雑で、ある特定のタイミン…

クックパッド機械学習チームのメンバが働く環境と役割

…には、まずバッチや API サーバを Docker コンテナで動作するようにまとめたレポジトリを作ります。次に、Jsonnet で記述する設定ファイルに Docker イメージ、Role、環境変数などの設定を記述します。このような環境だとサーバ構築にコストがかからないですし、必要であればサーバの構成(CPU、メモリ)も設定ファイルの書き換えにより簡単に修正できます。チーム間の複雑なやり取りが必要ないので、機械学習エンジニアはすくないコストでプロダクション環境に機械学習周りの計…

Android版クックパッドアプリで採用している技術の現状確認 2018年版

…を24に上げた状態でAPI 24以上の端末でアプリを使用すると、画面遷移を行った瞬間にクラッシュするという事態が発生していました。 ここを直すために色々と手を尽くして、最終的に以下の対応をすることで大きな問題を起こすことなくアップデートすることが出来ました。(実際にはいくつか作業ミスもありバグ報告も来ていたが、すぐに収束した) Activity遷移の際のデータ保持は可能な限り小さくなるよう、大きな箇所を洗い出して修正 savedInstanceStateのデータ保持はAndr…

デザインとエンジニアリングをつなげる取り組み

…omponents API document 上記KomercomponentsのAPI仕様ページです。 Doczを用い、FirebaseのHostingに静的ページを置くことでwebからComponentsの仕様を把握できるようにしています。 初めはStorybookも検討しましたが、作成・管理するコストがDoczの方が低いと感じたためこちらを採用しました。 propsに仕様のコメントを残すと自動で読み込むため、仕様書の作成コストが低くすばやく開発を進めることができます。 …

Cloud Firestoreのrulesのテストを全てローカルエミュレータを使うように書き換えた話

… running. API endpoint: http://localhost:8080 .gitignoreに追加 firebase serve --only firestore を実行すると、firestore-debug.logが吐き出されるので、不要ならignoreします。 # .gitignore firestore-debug.log firebase/testingの追加 package.jsonにfirebase/testingを追加し、インストールをします…

KomercoアプリでFirebaseからの画像取得を速くした話

…る状態です。 作りたい機能もまだまだありますが、こういったサービスのパフォーマンスの改善も怠らないようにしたいと思います。 また、先日Firebase Summit 2018が催され、様々なニュースが発表されましたね。 firebase.google.com 個人的にはFirestoreのlocal emulatorと、Management APIが気になっています。 進化するFirebaseの機能を積極的に導入して、よりスピーディーにサービスを成長させていきたいと思います!

Cookpad Summer Internship 2018 10 day 技術インターンシップ を開催しました

…ました。 3日目: API(サーバーサイド) 3日目はRailsを使ったWebアプリケーションの講義です。今回のお題はチャットアプリケーションで、途中まで実装したRailsアプリケーションこちらで準備し、そのアプリケーションを完成させたり、思い思いの機能を実装してもらいました。 後半資料 cookpad/cookpad-internship-2018-summer slackpad-server - GitHub 4日目: ReactNative 4日目は、3日目に作ったチャ…

【開催レポ】Cookpad Tech Kitchen #17 〜北欧で最新のインタラクションデザインを学んできた話〜

…ning for Rapid Prototyping」 はじめにお話させていただいたのは、クックパッドに新卒1期生として入社し、開発・デザイン・PMと領域を横断しながらプロダクトづくりを担当しているUXエンジニアの出口です。 なぜ今回、CIIDのサマースクールへ参加したのかという背景をお話した後、アカデミックな領域だと思われがちなML技術を道具として用い、プロトタイピングを高速に行うための方法について、共有させていただきました。 下記の資料でも紹介しておりますが、弊社が取り組…

Cloud Firestoreのrulesをテストする

…るSDKやREST API経由でデータを安全に読み書きできるよう、セキュリティルールを記述することができます。 主にFirebase Authenticationでの認証を活用しつつ、どのような条件下でドキュメントを読み取ることができるか、書き込むことができるかを設定し、ユーザーのデータを保護します。 また余談にはなりますが、Realtime DBとCloud Storageにもセキュリティルールがあります。 セキュリティルールをしっかり設定しないと、本来読み取られてはいけな…

Chaos Engineering やっていく宣言

…ている B という API の裏で通信している C が必要としているデータ取得のための D のレスポンス時間が遅くなって、結果として A の応答が悪くなったのだが、原因が D だとは思っていなかった……的な事も発生します。 何故やるのか 上記ブログのマイクロサービス導入背景にもありますが、昔のようにひとつの巨大なアプリケーションを運用するようなスタイルではプロダクト開発の規模の拡大やスピードに限界があり、マイクロサービスアーキテクチャを採用するようになりました。分散システムと…

新規決済手段導入に際し、なるべく丁寧にテストケースを作成した話

…れらの分岐条件、各 API の返す異常系一覧をもとに、テストケースを作成しました。 テストケースを作成する流れは以下のようになります。 各画面で起こりうる状況を整理する 前提条件を再現するシナリオを作成する そのシナリオをなぞるための手順を埋める その手順を行うことで期待されるアプリの振る舞いを埋める 以降の文章で、各項目について解説します。 各画面で起こりうる状況を整理する テストケースにおいて重要なのは 網羅性 です。 そのため、画面遷移図の各分岐である API 接続箇所…

Firebaseを活用したiOSアプリ開発事例

…Admin FCM APIを利用してプッシュ通知を送信しています。 ユーザーが料理を始めたことを知らせる通知と自分の投稿にコメントが届いたことを知らせる通知の2種類を送信しています。 Google Analytics for Firebase Google Analytics for Firebaseは、最大で500種類のイベントに関するレポートを無料で無制限に生成できます。Firebaseのコンソールからダッシュボードを見ることができます。 活用事例 ユーザーの動画閲覧から…

x3 Speed Up Android CI at Cookpad

…列にAndroid APIの必要な instrumented/Espresso テストを全て実行 ガイド 大まかなテスト区分などは Test automation design for Cookpad’s global Android appに沿う 擬似的な Gradle タスクを用いて上記を模倣すると、以下のような処理がプッシュ毎に実行されています。 ./gradlew clean ./gradlew checkLicenses ./gradlew testAllUnitA…

Firebase ML Kitで自作のカスタムモデルを使って料理・非料理画像を判定できるようにした

…ud Vision APIを使ってオンデバイスよりも精度の高い情報を得ることができる代わりに Firebaseの課金プランをBlazeにする必要があり、一定回数以上の利用は有料です。 独自のカスタムモデルを利用可能 デフォルトで提供される機能以外に独自の機械学習モデルを利用することができます。 ちなみにカスタムモデルの利用にあたってはFirebaseの課金プランをBlazeにする必要はありません。 Android Neural Networks API(NNAPI)との連携 …

Service Mesh and Cookpad

…Envoy xDS API response JSON is generated Place the generated response JSON on Amazon S3 and use it as an xDS API from Envoy The reason why the setting is managed in the central repository is that, we'd like to keep track of change history w…

オフィス・AWS環境をセキュリティ監視するためのログ収集

…logへの出力のみ、APIに問い合わせないとわからない、というようにバラバラなことはよくあります。また、通知するメンバーをローテーションしたりするといった管理もとても煩雑になってしまいます。これを一本化することで、どのような機器・サービスで発生したアラートでもスムーズに対応できるようになります。 ログの検索や分析が統一されたコンソールから実施できる: インシデントと疑わしい事象が発生したらそれが本当に影響があったのかをログを見ながら調査・分析しなければなりませんが、ログが適切…

iOSアプリのサブミット自動化と証明書管理の効率化

…er CenterのAPIを叩いて証明書やProvisioning Profileを作成し、暗号化を施してgitリポジトリに共有してくれます。 まず、iOSアプリケーションのリポジトリにMatchfileという設定ファイルを設置します。 これで、match利用時にデフォルトで設定されるパラメータを指定できます。 ここでは、コミット先のリポジトリを予め指定しています。 git_url "git@example.com:cookpad/certificates.git" 次に、開…

Androidアプリ の minSdkVersion を21にした話

…id 4.0.x (API level 14-15) のシェアが 5% を下回ったため minSdkVersion を 16 に更新しました。 その後、 Android 4.1 (API level 16) のシェアが5%を下回った際に minSdkVersion を見直す機会はありましたが、同じく Jelly Bean である 4.2 のシェアが高く 4.1 だけサポート外にしてもあまり効果が見込めないことから minSdkVersion の更新は行いませんでした。 そのよ…

AWS Elemental MediaLive を使用したライブ動画配信アプリの基盤開発

…了したかを取得する API が MediaLive には存在しません。 配信基盤では開始は S3 Event を、終了は CloudWatch を使用して、それぞれの情報を元に配信検知用のデーモンを起動しておき放送開始/終了を検知しています。 開始時間になると 配信用 URL に RTMP で動画が流れてくるので MediaLive が受け取り、設定した解像度に変換して MediaStore にアップロードします。 そして MediaStore をオリジンサーバとして CDN…

Service Mesh and Cookpad

…Envoy xDS API*4 用のレスポンス JSON を生成 生成したレスポンス JSON を Amazon S3 上に配置して Envoy から xDS API として利用する 中央のリポジトリで設定を管理している理由は、 変更履歴を理由付きで管理して後から追えるようにしておきたい 設定の変更を SRE 等の組織横断的なチームもレビューできるようにしておきたい という2点です。 ロードバランシングについては、基本的には Internal ELB に任せるという方式で設計…

cookpadTV ライブ配信サービスの”突貫” Auto Scaling 環境構築

…改善する前にまずは API 側のコードを修正することで対応を行いました。 こういう細かい処理のロジックを見直すことで最適化、高速化することももちろん効果的ですが、ピーキーなアクセスで最も効果的なのは短期キャッシュです。 キャッシュは適切に使わないと思わぬトラブルを生むことが多く、出来れば使用は避けたいものです。 しかし短期キャッシュであれば情報の更新頻度次第ではあまり問題にならない場合があります。 そして今回のケースにおいてはライブ配信の時間は事前に決定し変更はされない、レシ…

【開催レポ】Cookpad Tech Kitchen #15 〜料理動画・広告のBtoB領域の開発事情〜

…ャを統一することで、API へのリクエストタイミング、エラーハンドリング等の設計がプラットフォーム間で共有出来るようになるからです。そうすることで、ローディングの時間やエラーダイアログの表示等をあわせやすくなり、結果的に UX を似せることが出来ます。 cookpadTVのアプリ開発が少数精鋭で驚きました。レビューはどうして回していたのでしょうか? レビューに関しては正直自分達のチームだけでは回しきれない部分があったので、技術部モバイル基盤チームのメンバに手伝って貰っていまし…

React Native アプリの開発基盤構築

…違いとして、前者は API サーバーや DB も本番環境を参照しているに対し、後者はバックエンドが本番環境とは切り離されているため、コンテンツの投稿・公開といった動作テストを行うことができるアプリになっています。それぞれの社内配信の方法とデプロイのタイミングについては CI の項で説明します。 画像の Beta 帯アイコンのものが Production-test 環境のアプリ、Staging 帯アイコンのものが Staging 環境のアプリ、無印が Production 環境…