API の検索結果:

Gradle Composite Build を用いたビルドロジックの共通化について

…ation() や api() と言った DSL が用意されていないため、自力で実装する必要があります。 // VersionCatalog を取得するための拡張プロパティ internal val Project.libs: VersionCatalog get() = extensions.getByType<VersionCatalogsExtension>().named("libs") internal fun VersionCatalog.version(name…

モバイルアプリの One Experience

…ほぼ 0% 、認証やAPIなどバックエンドの構成もまったく異なるものでした。 今回行ったモバイルアプリの One Experience とは、一言でいうと Globalアプリのコードで JPアプリを上書きしてアップデートする作業になります。 GlobalアプリとJPアプリはどちらも既存ユーザーがたくさんいるため、現段階では2つのアプリを1つに統合することは行わずに、1つのコード、リポジトリから2つのアプリをリリースしていくことにしています。 ひとつのリポジトリから複数のアプリ…

Flux + Helm における即時ロールバック

…出しではなく Go API を使った Kubernetes API の呼び出しとして実装されています。Flux の suspend 操作は対象オブジェクトの .spec.suspend フィールドを true にすることで実現でき、それを sigs.k8s.io/controller-runtime/pkg/client パッケージを使ってオブジェクトのパッチ操作として実装しています。helm rollback については Helm が Go SDK を提供しており、それをそ…

日本とアメリカの太平洋を超えたパフォーマンス改善の取り組み: CloudWatch RUM を中心としたパフォーマンス測定とデータ活用方法

… Insights API を叩く Lambda function が Timestream table に結果を保存し、開発者がその Timestream table に Grafana を通してクエリするという形になっています。この Lambda function は EventBridge によって日次で実行されるように設定されています。 この Timestream テーブルに対して、たとえば以下のようなクエリを実行すると以下のような結果が返ってきます。SQL 風にクエ…

NLP2024 に参加しました

…Embedding API を使った評価も上図下部に記載しました。 論文執筆時点では text-embedding-3 の公開前であったため追加学習したモデルが最も高い性能を示していましたが、text-embedding-3-large は今回比較したモデルの中で最高性能を達成しています。 それでもやはり JSTS の結果と比べるとレシピテキストを不得意とする傾向はあるようで、レシピ処理における課題は依然として残されていると言えるでしょう。 RecipeSTS の事例 いくつ…

AWS 内で大規模言語モデルを利用できる Amazon Bedrock を使って作る RAG アプリケーション

…デル (FM) を API を通じて利用できるようにする完全マネージド型サービスです。そのため、さまざまな FM から選択して、ユースケースに最も適したモデルを見つけることができます。Amazon Bedrock のサーバーレスエクスペリエンスにより、すぐに FM を開始したり、FM を簡単に試したり、独自のデータを使用して FM をプライベートにカスタマイズしたり、AWS のツールや機能を使用して FM をアプリケーションにシームレスに統合してデプロイしたりできます。Ama…

Hatamoto 〜モバイルアプリに関する情報を一元管理するためのWebアプリケーション〜

…e Connect API を使っています。 有効期限が近づいているかどうかは、毎日定期実行されるジョブ*3で今日の日付と有効期限を比較して確認しています。 使用ライブラリの収集 各アプリが利用しているライブラリの取得は、パッケージマネージャーごとに異なる方法で実現しています。 Carthage、SwiftPM GitHub API を使って各リポジトリ内の Cartfile.resolved、Package.resolved の中身を取得しパースしています。同じく GitH…

開発を快適にするiOSアプリ内ログ確認ツール

…の要素の表示など)やAPIサーバーとの通信ログを、クックパッドiOSアプリの中ですぐに確認できます。 ログ確認ツールを素早く表示できる様子*2 このツールはデバイスのシェイク(Simulatorでは ⌃ ⌘ Z control + command + Z)でも表示でき、どの画面からでも気軽に使えます。 ログの内容確認が楽になる 必要な情報だけに絞り、種類別に色分けすることで、パッと見て把握しやすくしています。 これまでもロガーからの出力は Xcode 内のコンソール*3や C…

クックパッドの検索反映時間を 1/288 にしたシステム改修

…エストを受け付ける API や、検索サーバーからのリクエストを受け付ける Solr と、複数箇所にキャッシュが存在しており、検索インデックスの更新時にはこれらを破棄しなければ検索結果が変化しません。 単純にキャッシュを剥がせば各サービスへの負荷増大は避けられず、まずは現状のヒット率等を調査して剥がせるなら少しずつ剥がす、難しそうならサーバーを増やすなどの対応が必要になりそうでした。 新システムの概要 以上に挙げた課題を解決するために、以下の図に示すような全体像のシステムを設計…

iOSアプリに実装されたUI要素のフレームやマージンを手軽に確認できるツールを作る

…gView に非公開APIとして _viewDebugData() というメソッドが存在します。これを用いるとデバッグ用にSwiftUIのView構造を解析できそうです。 (https://apurin.me/articles/swiftui-secrets/ を参考にさせていただきました) SwiftUIのView構造をもう一度示すのですが UIWindow └ UITransitionView └ UIDropShadowView └ _UIHostingView<Mod…

クローズしたサービスの管理画面を静的サイトにする

…た GraphQL API が動いていて、ウェブフロントエンド側では素の React が API にリクエストを行いながらページを作っている。データベースは PostgreSQL (Amazon RDS for PostgreSQL)。 データ量はそこまで多くないが、目で全件確認できるほど少なくもない。 ページの種別は、Rails の app/javascript/pages 下にある index.tsx を数えてみると 80 程度。移植しなくて良いページもそれなりにありそう…

Rubyの並列並行処理のこれまでとこれから

…dやWindows APIのスレッド)を1つつかって、複数のRubyスレッド(下記、RTとも表記、Thread.new{}で作るやつ)を管理していました。1つのネイティブスレッドで複数(M個)の Rubyスレッドを管理するので、M:1 モデルということもあります(世間的には 1:N スレッドモデルということが多いのですが記事の都合上、M:1 と書いておきます)。 M:1 (N:1) model, Green threads, user level threads, quote…

iOS画像非同期取得

…ectにできます。 API キャッシュのためのツールが揃ったので、画像取得APIを見てみましょう。 enum LoadingImage { case cached(UIImage) case inProgress(Task<UIImage, any Error>) } final class ImageLoader { func loadImage(from imageURL: URL) -> LoadingImage { Taskが見られるのでSwift Concurren…

Project Googrename: Google Workspace で 14 年運用されたドメインエイリアスをプライマリドメインに変更 & 全ユーザーを安全にリネームする

… userinfo API で得た email を元にユーザーを検索している不届きなサービスは確実に存在します (しました)。万が一業務でそのようなサービスが利用されていた場合 (いました)、業務に影響が生じてしまうため、それらについては事前に対策を行う必要があります。 プロジェクトの流れ 本プロジェクトは下記の手順で進行しました。冒頭に記載した通り 2022/8 ~ 2023/2 頃まで緩やかに準備、2023/3 上旬に一気に片付けるようなスケジュールです。 事前準備: 各…

Path Drawing in SwiftUI

iOS

…are three APIs for drawing an arc: /// Adds an arc of a circle to the path, specified with a radius and a /// difference in angle. public mutating func addRelativeArc(center: CGPoint, radius: CGFloat, startAngle: Angle, delta: Angle, transf…

RubyKaigi 2023の冷蔵庫は何だったのか

…Sinatra の API サーバが動いていて、冷蔵庫における各種デバイスの制御や状態取得を司っています。 クックパッドマートは主に生鮮食品を配送するサービスであるため、商品の温度を担保することは事業において非常に重要です。たとえばもし冷蔵庫のドアが開けっぱなしになっていて庫内の温度が上がってしまうと、商品が傷んでしまう可能性があります。そのために私たちは冷蔵庫の温度やドアの開閉などを遠隔監視できるようにしており、会場で展示したダッシュボードは実際に運用で用いているものを簡易…

NLP2023 に参加しました:聴講編

…th OpenAI API | OpenAI Help Center の中で Instead of just saying what not to do, say what to do instead と書いています。この研究ではどれくらい否定表現が理想的な出力を得る上での障害となり得るか、について詳細な知見が得られて非常に勉強になりました。特に研究で得られた結果の面白さもさることながら、架空の名称を用いることで事前知識が使われないようにして推論能力だけに着目できるようにする…

モブプログラミングを1年以上継続するコツ

…る ChatGPT API の活用事例紹介 - クックパッド開発者ブログ ポリモーフィック関連を活用し、森羅万象の「いいね」を実現する手法 - クックパッド開発者ブログ マーケティングサービス開発グループでは毎週月曜日13時から17時の決まった時間にモブプログラミングを実践しています。 このモブプログラミングの枠は1年以上継続していて、毎週様々な課題の解決や機能の開発をしています。この記事ではモブプログラミングを長く継続するためのコツをお伝えします。 モブプログラミングとは …

ポリモーフィック関連を活用し、森羅万象の「いいね」を実現する手法

…る ChatGPT API の活用事例紹介」の投稿でした。 本記事も、メーカーズタウンに関するブログなので、ぜひこちらの記事もご覧ください! はじめに この記事では、Kaigi on Rails 2022 森羅万象に「いいね」するためのデータ構造 というタイトルで発表をした、Rails を用いたデータ構造のリファクタリングについて紹介します。ポリモーフィック関連を用いたリファクタリングにより、テーブルやコードの重複を排除し、メンテナンス性や拡張性を向上させることができました。…

クックパッドの toB 向け事業における ChatGPT API の活用事例紹介

…の ChatGPT API をメーカーズタウンというプロダクトに活用して機能開発を行い、課題解決を試みた例を紹介したいと思います。 私たちのチームでは、新しい技術を積極的に取り入れつつ、楽しみながらサービスを作っていっていますので、もし興味を持っていただけたら末尾に採用サイトへのリンクがあるのでそちらからご応募いただけると嬉しいです! メーカーズタウンとは メーカーズタウンは、食関連メーカーとクックパッドユーザーが双方向のコミュニケーションを取りながら、さまざまな課題を解消し…

SwiftUIでStickyなタブを実現する

…イズや座標を取得するAPIです。 ScrollView内にGeometryReaderを配置することで、ScrollView内のコンテンツのY座標を取得できます。(このY座標が実質スクロール量になります。) GeometryReaderから座標とサイズを取得するには、GeometryReaderのinitializerのclosureからGeometryProxyを受け取る必要があります。 しかしこのclosureは@ViewBuilderとなっており、このスコープ内で@St…

SwiftUIで画面内の各コンテンツの表示ログを送る

…ound: @escaping () -> Bool = { false }) { isPresented = ... self.willRefreshOnForeground = willRefreshOnForeground } } // ShowContentLogRootModifier .onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotif…

AWS re:Invent 2022 に参加してきました

…ビスとして提供され、API を経由して利用できます。 そんな機能紹介はさておき、記述言語が独自言語であるため、その言語についての紹介が半分の時間を占めていました。プログラム言語に詳しい開発者の方が出てきて、作った言語の思想を紹介していく姿は、学会にでも来たのか?という状況が味わえる良いセッションでした。あとで調べたんですが、発表者の方はプログラム言語に関するエキスパートで、POPL や PLDI などでソフトウェアの Synthesis や Verification を専門と…

Next.js アプリケーションの共通コンポーネント開発

…リソース取得のためのAPIサーバー ウェブコンポーネント作成 カスタムエレメント Shadow DOM 実装例 モノレポ環境整備 モノレポ環境整備を整備する前の状況 Yarn Workspacesの導入 Turborepoの導入 さいごに 共通コンポーネントの導入背景 cookpad.com では上述の通りページによってホストするアプリケーションが異なる一方で、ヘッダーやサイドメニュー、フッターといった全てのページに共通して表示されているコンポーネントがあります。このような、…

プロと読み解く Ruby 3.2 NEWS

…ったのかな) この API は便利そうですが、いくつか注意が必要です。 1回の操作ごとにタイムアウトはリセットされるので「複数の I/O 処理全部を 3 秒のタイムアウトで」のようにするには、結構大変です。 大きなバッファを write する場合、write が複数回に別れることがあります。このとき、途中の write でタイムアウトが生じると、書き出している途中で例外が発生するため、どこまで書き出したかわかりません。(read はそういうのないんだっけ? 遠藤さんによるとあ…

キャッシュによるRubyの正規表現のマッチングの高速化の紹介

9月からRuby開発チームにインターンシップとして参加している@makenowjustです。 総合研究大学院大学の学生で、普段は情報セキュリティに関する研究をしています。 インターンシップでは、キャッシュ (メモ化) を利用したRubyの正規表現の高速化を行いました。 ReDoSと呼ばれる、バックトラックが爆発することでマッチング時間が膨大になる脆弱性があります (ReDoSについては、拙作ですがWEB+DB PRESSに掲載された記事があります)。 近年、ReDoSは多く報…

Cookpad Summer Internship 2022 を開催しました!

…まだモックですが、 API 通信をしてデータを取得したものを表示させるところまできちんと網羅しています。 Swift を書いたことが無い人も多かったため、独自の記法に慣れない場面も見受けられましたが、ほとんどの人が無事にハンズオンパートを完了させることができていました。 https://github.com/cookpad/cookpad-internship-2022-summer-ios 3 日目: サーバーサイド講義 3 日目はサーバーサイド講義でした。今回は Back…

Amazon ECS と AWS Lambda で汎用 self-hosted runner を提供する基盤

…のち、GHES の API を使って runner 登録のための token を発行し、job を起動したリポジトリ専用の self-hosted runner を ECS Task として起動します。 runner は起動して job を実行したら Task を終了します。ephemeral な runner なので、同じ Task で複数回 job を実行することはありません。実行ごとに完全に削除されます。 構成要素の詳細 ユーザーがインストールする GitHub App…

Android クックパッドアプリの画面遷移実装

…きる Result API などで処理結果を受け取るケースでは考慮する必要がある Destination の中身 sealed class Destination { class FragmentDestination internal constructor(val fragment: Fragment) : Destination() class DialogFragmentDestination internal constructor(val dialogFragme…

Swift Concurrencyでセマフォを作る

…leでもなく@escapingでもなく同じ実行環境のまま実行されます。もっと詳しい説明はこちらをご覧ください。 注意:unsafeのついたものはリリースされるコードで使う場合、注意が必要です。UnsafeContinuationを利用することはできますが、安全なCheckedContinuationを使うべきです。@_unsafeInheritExecutorが分かりにくく、特別な振る舞いをするので一般的な開発において使う必要が出ることはないと思います。 好奇心を満たすためだ…