タグ

ブックマーク / techblog.gmo-ap.jp (47)

  • OpenAIのEmbeddings APIを使って文の意味上の類似度を計算

    はじめに おはようございます。こんにちは。こんばんは。 GMOアドマーケティングのY-Kです。 前にBERTを使って文をベクトルに変換してからなんやかんやする記事を書いてから約半年が経過したのですが、その間にChatGPTが大きく流行り、言語生成系AIに大きな風が吹きました。 というわけで今回は、OpenAIEmbeddings APIを利用し、記事タイトルの類似度を見てみようと思います。 準備 今回も例のごとくGoogle Colab上で行います。 https://colab.research.google.com/?hl=ja OpenAIEmbeddings APIを利用できる様にAPIキーは事前に取得しておいてください。 まずは必要なライブラリを使えるようにします。

    OpenAIのEmbeddings APIを使って文の意味上の類似度を計算
    shunkeen
    shunkeen 2023/06/22
  • GASでGoogle ドライブ上にある画像のリサイズを行う。

    皆さんこんにちは。GMOアドマーケティングのR.Aです。 今回はGoogle ドライブ上にある画像を任意のサイズにリサイズ・トリミングするものを紹介したいと思います。 先日社内にて画像のリサイズを行っているが、量が多く工数がかかるため自動化したいという相談があり、作成いたしました。 現在は、特定のディレクトリにある画像を全て複数サイズにリサイズ・トリミングし、スプレッドシートに保存するGoogle Apps Script(GAS)を活用しております。 今回のリサイズ・トリミングはGAS上で実装したいと思うのですが、GAS単体では画像を修正する事ができないので、ImgAppというライブラリを使用します。 ライブラリの導入 まず加工に必要なImgAppをGASにインストールを行います。ライブラリは以下になります。 https://github.com/tanaikech/ImgApp ライブラ

    GASでGoogle ドライブ上にある画像のリサイズを行う。
    shunkeen
    shunkeen 2022/05/18
  • マネージャ職を引退

    お久しぶりです、GMOアドマーケティング GMOSSP開発担当の@KazuakiMです。 このたび2022年03月31日をもちまして、マネージャ職から引退となりました。マネージャ職を引退するまでの経緯をお伝えできたらと思います。 GMOアドマーケティングのマネージャ職について いわゆる Engineering Manager と言われているものがメインとなると思います。 GMOアドマーケティングで運営しているサービスは多々あり、サービスと得意言語などで開発グループも多々あります。エンジニアもそれなりにいるため、エンジニアをマネージメントする役職がどうしても必要となります。 一方で、Product managerの一部を担っています。 運営しているサービス理解が深い事から営業部との調整を行っていました。 引退した経緯・背景 GMOSSPは2020年の年末から2022年の年始にかけてGoogl

    マネージャ職を引退
  • Selenium+PythonでiPhoneのSafariを操作する

    GMOアドマーケティングのT.Oです。 今回はMacからSeleniumとpythonプログラムを利用してiPhone実機のSafariを操作してみます。 0.Seleniumの説明 Seleniumは、WebアプリケーションをWebブラウザで表示したときに正常に表示されるか、ある操作をしたときに想定通りの画面に遷移するかなどユーザーインターフェイスのテストを自動化するために開発されたツールです。 現在ではテストに使われるだけでなく、タスクの自動化やWebサイトのクローリングなど様々な用途で利用されています。 SeleniumがWebブラウザを操作するために開発したのが、プログラム上からWebブラウザを操作するためのライブラリWebDriverです。 現在ではWebDriverは標準技術としてW3Cに取り入れられており、主要なブラウザのベンダーがWebブラウザの標準機能としてWebDriv

    Selenium+PythonでiPhoneのSafariを操作する
  • 機械学習開発の標準戦略MLOps

    こんにちは、GMOアドマーケティングのS.Rです。 機械学習の開発を円滑に進めるためにMLOps の取り組みは重要です。今日はよく使われているMLOps のFramework であるKubeflow とKubeflow に基づいたCloud Service AI Platform を皆さんへ紹介させていただきます。 ※なお、この記事中の図示は、特に断りが無い限り筆者が作成したものです。 MLOpsとは MLOPSは分析(ML)+開発(Dev)+リリース(Operations)の組み合わせです。 機械学習の開発効率を向上させる為に、機械学習project の開発原則とルールが纏められています。 MLOpsのレベル MLOps の自動化はその程度により3 つのレベルがあります。 詳細については【Google Cloud「MLOps: 機械学習における継続的デリバリーと自動化のパイプライン」(リ

    機械学習開発の標準戦略MLOps
    shunkeen
    shunkeen 2022/04/22
  • Windows11にアップグレードしたいのでPCもアップグレードしてみた(その2)

    価格.com パソコン「AMD CPU 人気売れ筋ランキング2022年3月30日時点 約半年経過しても Ryzen 5 5600X が依然高い人気のようです。 時間経過と共に価格が下がってきたせいか、Ryzen 7 5800X はランキング6位でした。 かわりに上位に挙がってきたのがハイスペックの Ryzen 9 5900X で、半年で¥13,000安となり、コストパフォーマンスも高くなってきました。 5600X が6コア12スレッド、基クロックは3.7GHzで最大ブーストクロックは4.6GHz、TDPは65W。 5900X が12コア24スレッド、基クロックは3.7GHzで最大ブーストクロックは4.8GHz、TDPは105W。 コストパフォーマンスの 5600X か、パフォーマンスの 5900X かのどちらかで人気が分かれるようで、市場ではコストパフォーマンスの高い製品が人気のよう

    Windows11にアップグレードしたいのでPCもアップグレードしてみた(その2)
    shunkeen
    shunkeen 2022/04/20
  • 2022年10月からのGCP料金改定まとめ

    こんにちは。 GMOアドマーケティングの@zakisanbaimanです。 2022年3月14日、GCPの公式ブログにて2022年10月からの料金体系のアップデートが発表されました。 GCPを使っているサービスにとっては結構インパクトありそうな内容でしたのでブログとしてまとめておきます。 ※この情報は2022年3月30日時点のもので、これから改定内容が変わることがあり得ますのでご了承ください。 改定対象のサービス 変わるのは以下のサービスになります。 Cloud Storage Cloud Load Balancing 永続ディスクのスナップショット Network Intelligence Center 今回は調査した上3つのみ記載します。 (Network Intelligence Centerの改定に関しては詳しく調査していないため) 1. Cloud Storage GCPユーザの

    2022年10月からのGCP料金改定まとめ
    shunkeen
    shunkeen 2022/04/18
  • 同じportのサービスを複数起動する 〜 GMOSSP開発環境改善篇

    こんにちは。GMOアドマーケティングのK.Mです。 コンテナ化の流れの一環か、バックエンドとフロントエンド、あるいは管理画面とサービス画面など、複数のHTTP等サービスを同時に立ち上げた状態で開発を進めることが増えてきた感じがあります。 そうした際、ポート番号を分けて環境を作るのはよくある方法かと思います。 docker composeの例だと下記のような感じです。 version: '3' services: backend: image: php:apache ports: - 8081:80 volumes: - ./backend/src:/var/www/html frontend: image: php:apache ports: - 8082:80 volumes: - ./frontend/src:/var/www/html

    同じportのサービスを複数起動する 〜 GMOSSP開発環境改善篇
  • Embulkのバージョンアップ

    GMOアドマーケティングのT.Kです。バッチサーバーでEmbulkを使っていますが、古いv0.8系なので更新する事にしました。 embulk selfupdate で更新すると何かあった際に切り戻しが出来ないので、追加インストールして切り替える方針を取りました。 手順 Gemfileを作成 プラグインも新しいバージョンに更新します。インストール先を被らないようにするためGemfileを使います。 既存環境はプラグインをGemfileで管理していないので、コマンドでインストール済みのリストを抽出します。 既存のembulkのインストール先はold/embulkとします。 $ old/embulk gem list | grep embulk- $ mkdir bundle_dir $ cd bundle_dir $ vi Gemfile

    Embulkのバージョンアップ
    shunkeen
    shunkeen 2022/04/15
  • 社内システムをGCPへ移行①

    現在オンプレで稼働中のシステムからなるべく変更点を少なくして工数を抑えつつ費用もあまりかからない方法になっていると思います。

    社内システムをGCPへ移行①
    shunkeen
    shunkeen 2022/04/06
  • 社内システムをGCPへ移行②

    <?php use Google\CloudFunctions\CloudEvent; use Google\Cloud\Storage\StorageClient; $log = fopen(getenv('LOGGER_OUTPUT') ?: 'php://stderr', 'wb'); function main(CloudEvent $cloudevent) { global $log; try { $data = $cloudevent->getData(); if (substr($data['name'], -3) !== '.gz') { return; } $storage = new StorageClient(); $storage->registerStreamWrapper(); $bucket = $storage->bucket($data['bucket']

    社内システムをGCPへ移行②
    shunkeen
    shunkeen 2022/04/06
  • GMO SSP環境紹介(Google Cloud Platform)概要篇

    こんにちはGMOアドマーケティングのy.yです。 2021年から約1年がかりでGoocle Cloud Platform(GCP)に移行したので現在(2022年3月時点)のGMO SSPで利用している主なGCP各種サービスと移行してよかったことを紹介したいと思います。 広告配信 Cloud Run(PHP) Cloud Logging Cloud Memorystore for Redis Cloud Storage 管理画面 BigQuery Cloud Run(PHP) Cloud Logging Cloud Storage Cloud Vision バッチ BigQuery Cloud Run(Go) Cloud Logging Cloud Scheduler Cloud Storage API Cloud Run(Go)※App Engine Flexibleから切替中 Cloud

    GMO SSP環境紹介(Google Cloud Platform)概要篇
    shunkeen
    shunkeen 2022/04/06
  • 正規表現を追い抜かせ!トライ木で複数固定文字列の探索をしてみた

    はじめに こんにちは。GMO NIKKOのshunkiです。当記事は次の記事に触発されて書いています。よろしければ先にご覧ください。 GMO NIKKOのT.Iです。今回は当社のTRUE データフィードで使用している正規表現検索の効率化についての記事となります。前提(背景と目的)まずは宣伝(笑)当社公式サイトでは上記となっていますが、簡単にいうと・クライアントからデータを預かる・預かったデータを広告媒体毎のフォーマットの変換する・変換したデータを指定された場所に送信するということをやっています。その中のデータの変換時に禁止文言が入ったデータを行ごと除外するということをやっています。大量のデータに禁止文言が入っているかをチェックする必要がある... この記事では、複数文字列の探索について、正規表現よりもトライ木を使った方が速いことを確かめます。最初に問題設定を共有します。次に忙しい人向けにベ

    正規表現を追い抜かせ!トライ木で複数固定文字列の探索をしてみた
    shunkeen
    shunkeen 2022/02/05
    セルクマ。星なしの正規表現のみを解釈する非巡回DFA型エンジンとか見てみたい
  • YouTube LiveでLT大会を配信したら音声トラブルが多発した話

    はじめに こんにちは。GMOアドパートナーズのs-tです。 半年に一度のエンジニアによるLT(ライトニングトーク)大会を実施しました。前回からストリーミング配信ソフトのOBSを使ったYouTube Liveで開催しており、2021年下期も同様に開催しました。 今回はそこで起きた音声トラブルを紹介していきます。 前回(2021年上期)開催時のブログはこちら 前回のLT大会との違い 今回のLT大会では沖縄からの登壇者がいたため、Zoomの映像/音声も配信に載せることになりました。 渋谷フクラスオフィスと沖縄オフィスをZoomで繋いでの配信という初めての試みでLT大会を開催しました。 また、機材面でも優先のマイクからワイヤレスのマイクにアップデートしたりと配信機材も新しくなっています。 LT大会準備 Zoomの映像/音声を配信に載せるにあたって、問題が発生しました。 配信マシンにMacbook

    YouTube LiveでLT大会を配信したら音声トラブルが多発した話
  • GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その2・GAS内でフィード取得編)

    GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その2・GAS内でフィード取得編) GMO NIKKOのK.Aです。前回の記事に引き続きGoogleのサービスを組み合わせて簡単なツールを構築した事例の紹介です。 前回記事:GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その1・IMPORTFEED関数編) RSSリーダー|GAS版の全体フロー 前回はGoogleのスプレッドシート関数(IMPPORTFEED)だけでRSSのフィードデータ取得する方法で構成しましたが、今回はGoogle Apps Script(GAS)内でフィードデータ取得する方法で構成します。 利用ツールは、Googleスプレッドシート、Google Apps Sc

    GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その2・GAS内でフィード取得編)
    shunkeen
    shunkeen 2022/01/19
    XmlService.parseがあったら、HtmlService.parseがあってもよさそうなのに、、、と思うことがたまにある>“UrlFetchApp.fetchでリクエスト”、”XmlService.parseで変換”
  • GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その1・IMPORTFEED関数編)

    GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その1・IMPORTFEED関数編) GMO NIKKOのK.Aです。今は開発エンジニアとしてではなく、ディレクション中心の業務が中心のため、プログラミングや技術的に深い内容ではなく、誰でも無料で利用できるGoogleのサービスを組み合わせて簡単なツールを構築した事例を紹介いたします。 RSSリーダーが復権? 先日、Android端末のChromeブラウザのアプリで「Follow」機能として、RSSフィードの情報を表示できる機能がリリースされたというニュースがありました。昨今、あまり注目を浴びていなかったRSSリーダーのニーズが今後、また少し盛り上がるかもしれません(?)。 今回は、そんな「RSSリーダー」を格的なサーバーやDBを用意せずに、Googleスプレッ

    GoogleスプレッドシートとGoogle Apps ScriptとGoogleデータポータルでRSSリーダーを構築してみた件(その1・IMPORTFEED関数編)
    shunkeen
    shunkeen 2022/01/19
    IMPORTRANGEでセル範囲丸ごと読み込めたり。IMPORTHTMLやIMPORTXMLでサイトの簡易スクレイピングできたり。IMPORT系便利すぎないか?>“GoogleスプレッドシートのIMPPORTFEED関数はとても便利”
  • Visual Studio 2022を触ってみた

    個人的に気になるC++の対応状況ですが、 VSは他のコンパイラに比べて対応が遅いイメージですがC++23にかなり対応しているようです。

    Visual Studio 2022を触ってみた
  • CloudSQLのインスタンスを自動停止/自動開始をスケジュールする方法

    こんにちは。GMO NIKKO エンジニアのN.I.です。 今回は検証環境のCloudSQLをインスタンスを平日の9:30~21:00に自動起動して自動停止する仕組みを作成したのでこちらを紹介したいと思います。 前回ComputeEngineの停止を記載しましたので、続きでCloudSQLのインスタンスIDで起動、停止を実行する方法を紹介します。 アプリケーション フロー CloudSQLを自動起動/停止するためのフローは下記の様になります。 Cloud Scheduler ジョブ : スケジュールに従ってインスタンスの起動と停止情報をPub/Subに送付します。 Pub/Subメッセージ : インスタンスの起動/停止のメッセージをCloud Schedulerから受信してCloud Functionsに情報を渡します。 Cloud FunctionからCloud SQLの開始/停止指示を

    CloudSQLのインスタンスを自動停止/自動開始をスケジュールする方法
    shunkeen
    shunkeen 2022/01/06
  • GCEのインスタンスを自動停止/自動開始をスケジュールする方法

    こんにちは。GMO NIKKO エンジニアのN.I.です。 今回は検証環境のCompute Engine インスタンスを平日の9:30~21:00に自動起動して自動停止する仕組みを作成したのでこちらを紹介したいと思います。 今回の記事は下記GCPのを参考に作成していますが、GCPの記事のリソースラベルの設定が動作せず、instancesClient.listで該当のサーバー(instances.items)をうまく取得できなかった為、今回の紹介する内容はシンプルにCompute Engineのインスタンス名で起動、停止を実行する方法を紹介します。 https://cloud.google.com/scheduler/docs/start-and-stop-compute-engine-instances-on-a-schedule?hl=JA アプリケーション フロー Compute En

    GCEのインスタンスを自動停止/自動開始をスケジュールする方法
    shunkeen
    shunkeen 2022/01/06
  • 正規表現検索の効率化

    GMO NIKKOのT.Iです。 今回は当社のTRUE データフィードで使用している正規表現検索の効率化についての記事となります。 前提(背景と目的) まずは宣伝(笑) 当社公式サイトでは上記となっていますが、簡単にいうと ・クライアントからデータを預かる ・預かったデータを広告媒体毎のフォーマットの変換する ・変換したデータを指定された場所に送信する ということをやっています。 その中のデータの変換時に禁止文言が入ったデータを行ごと除外するということをやっています。 大量のデータに禁止文言が入っているかをチェックする必要があるのですが、 初期想定では精々10万件に対して100~1000個の禁止文言をチェックする程度(1億回程度)で十分と判断していました。 ですが運用後に禁止文言が3万を超えてしまい、チェック処理が10万件×3万=30億回のチェックを行う場合があり、処理時間がかなり長くなっ

    正規表現検索の効率化
    shunkeen
    shunkeen 2022/01/06
    仕様的には正規表現よりも狭い文字列探索アルゴリズムの範疇かも?正規表現エンジンがよしなにBitapとか、KMP法をやってたり、選言を並列化してたら爆速になってそう/複数検索だから、選ぶならラビン-カープか