JX通信社エンジニアブログ
https://tech.jxpress.net/
JX通信社エンジニアブログ
フィード
Datastream による Cloud SQL と BigQuery 同期:直面した課題と対応策
JX通信社エンジニアブログ
こんにちは、データ基盤担当の @mapler です。今回は DataStream を活用して、Cloud SQL から BigQuery へのデータ同期についてお話しします。 Datastream の設定は基本的に Google Cloud のドキュメント従って行えますので、この記事では、実際の設定時に直面した課題や対策を中心に説明します。 背景: データを BigQuery に同期することで得られるメリット JX通信社の「FASTALERT」は、日本国内外の緊急情報をリアルタイムで配信するサービスです。災害情報や事故、事件、気象警報など、幅広い分野の緊急情報を網羅しており、長年にわたって膨大…
25日前
copilot-instructions.mdは使えるぞ!実戦投入レポート
JX通信社エンジニアブログ
こんにちは、JX通信社でシニアエンジニアをしているSirosuzumeです。 先日、GitHub Copilotの新機能として、リポジトリのルートから.github/copilot-instructions.mdを読み込み、対話型UIの出力に反映する機能が追加されました。 この機能を使ってみて、どのような効果があるのか、どのように活用するのが良いのか、実際に新しく立ち上がったプロジェクトで試してみた結果を共有したいと思います。 copilot-instructions.mdの効果の検証 まずは実例を見てみましょう。 src/feature/entry-horse/presentational/…
1ヶ月前
AWSとGoogle Cloudのコスト最適化の道 〜データドリブンな取り組みの紹介〜
JX通信社エンジニアブログ
CTO の小笠原(@yamitzky)です。今日は、CTO として推進している「サーバー費削減プロジェクト」の取り組みについてご紹介します。 本稿では「リザーブドインスタンスを購入する」や「入札型のインスタンスに移行する」といった一般的な削減テクニックについては扱いません。プロジェクトとしてどう分析、進行し、成果を出しているか、という話を中心に、取り組みをまとめています。 背景 JX通信社では、Amazon Web Services(以下、AWS) や Google Cloud などのクラウドサービスを活用しています。これらのクラウドサービスは通常、ドルで費用が決まっており、日本円で支払います…
5ヶ月前
気象庁XMLを正しく扱いたい!
JX通信社エンジニアブログ
テーマの紹介 JX通信社エンジニアのr_uematsuです。 弊社は、日本テレビ放送網株式会社と共同で「日テレ気象・防災サイト」を開発しています。気象警報、地震・津波情報、噴火情報など、防災に関わる情報をまとめて閲覧できるサイトです。 bosai.news.ntv.co.jp 情報源には気象庁から配信されるXML(電文)を使用しています。 気象庁XMLは気象情報や地震情報など様々な情報を配信しており、日テレ防災サイト以外にも社内プロジェクトでも広く利用されています。 今回は気象庁XMLの紹介と正しく扱うためには、どんなことに気を付けるべきかを地震津波関連のXMLを例に掘り下げてみたいと思います…
5ヶ月前
Playwrightでメール配信のテスト自動化にチャレンジ!
JX通信社エンジニアブログ
こんにちは、JX通信社でシニアエンジニアをしているSirosuzumeです。 JX通信社の「FASTALERT」には、ユーザーが事前に設定した地域で発生した災害情報を、メールで受信する機能があります。 しかしテストする手順も複雑で、配信条件も多様化していったこともあって、手動でのテストを行うことに限界を感じていました。 設定画面の挙動確認など、ブラウザ上で完結するテストであればPlaywrightを使って自動化することもできていたのですが、実際にメールを受信するところのテストを自動化する方法についてのノウハウ不足が課題でした。 そこで、Amazon SESの機能を改めて確認していたところ、特定…
6ヶ月前
実践 React Emailを使ったHTMLメールの開発・運用
JX通信社エンジニアブログ
こんにちは、JX通信社でシニアエンジニアをしているSirosuzumeです。 JX通信社の「FASTALERT」には、ユーザーが事前に設定した地域で発生した災害情報を、HTMLメールで受信する機能があります。 HTMLメールには以下のような特徴があり、普段のフロントエンド開発の知識が役に立たないことが多いです。 Gmail、Outlook、その他のメーラーでは、使用できるタグやCSSに違いがある CSS 自体が使えないクライアントも存在する ベストプラクティス的なものを探しても、「tableタグを使ってレイアウトを頑張って調整しよう!」といった辛い現実が待ち受けています。 今回、HTMLメール…
6ヶ月前
アプリケーションの動作を担保するテストをどう書くか
JX通信社エンジニアブログ
こんにちは。kimihiro_nです。 今回はアプリケーションの動作を保証するために不可欠なテストコードの書き方についてです。 特に外部依存要素のテストに焦点を当ててみていきたいと思います。 外部に依存するテストコード 皆さんはアプリケーションのテストコードを書いていますか? 内部的な状態を持たず、入力と出力が常に変化しない関数であれば、テストコードを書くのは比較的容易です。実際に関数を呼び出ししてその出力と期待値が一致しているかをみればテストすることができます。 しかし実際にアプリケーションを開発する場合、データベースへの接続だったり外部へのAPI呼び出しだったりといった外部の状態に依存した…
7ヶ月前
「象・死んだ魚・嘔吐」をやってみた振り返り
JX通信社エンジニアブログ
こんにちは。スクラムマスターの@sakebookです。 今回は「象・死んだ魚・嘔吐」をチームでやってみたのでその振り返りをします。 「象・死んだ魚・嘔吐」とは 振り返り手法の一つです。Airbnb Story 大胆なアイデアを生み、困難を乗り越え、超人気サービスをつくる方法(原題: The Airbnb Story)の中で紹介されていたようです。 翻訳されてなかなかキャッチーなネーミングになっています。 それぞれ次のようなことを意味します。 象 凄く大きい、見えているけど、みんな見ないふりをしている課題・問題。表層化しているけど大きすぎてみようとしていない。これが何かをみんなで話していく。 死…
7ヶ月前
生成AIでニュースアプリの精度改善を競う社内コンペを開催しました
JX通信社エンジニアブログ
JX通信社CTOの小笠原(@yamitzky)です。4月19日に「AIコンペティション」を社内勉強会として開催したので、その取り組みを紹介します。 開催の目的 JX通信社では、AIで世界中のリスク情報を解析する「FASTALERT」という製品を開発しています。ただ、普段からエンジニアの全員がAI開発に取り組んでいるわけではなく、フロントエンドやバックエンドなど、AI以外のコンポーネントを開発しているエンジニアも多くいます。 数年前まではDeep Learningなどの高度なAIを活用した製品開発は敷居の高いものでしたが、 近年ではAutoMLやAmazon SageMakerのようなマネージド…
8ヶ月前
リモートワークでもできる、気軽に始める勉強会のすすめ
JX通信社エンジニアブログ
スクラムマスターの@sakebookです。今回は「リモートワークでもできる、気軽に始める勉強会のすすめ」です。 「勉強会」というと、想像するものが人によって異なるので、事前にどんなものかを書いておくと 「直接の業務ではないが何かのテーマについて一緒に学んでいる会」 のことを勉強会と、この記事では定義します。 そんなのは勉強会じゃない!という人は適宜読み替えて、こういうことをやったよ気になったらやってみてねくらいの温度感で読んでください。 この日は動画再生が上手くいかなかった リモートワークにより開催機会の減少 コロナ禍以前からリモートワークを取り入れていた弊社ですが、コロナ禍に伴い、地方へ移住…
9ヶ月前
KiotaでOpenAPIの定義からGoのクライアントを生成してみる
JX通信社エンジニアブログ
こんにちは。 kimihiro_nです。 Microsoftから「Kiota」というOpenAPIの定義からクライアントコードを生成するツールが公開されていたのでちょっと触ってみました。 learn.microsoft.com Kiota の特徴 JSON、YAMLで書かれたOpenAPIのAPI仕様から、APIを呼び出すためのクライアント部分を自動生成してくれるツールです。 特徴としてはGoやPythonなど様々な言語への書き出しに対応していて、似たようなインターフェースで扱える点になります。 API仕様を一度共通の内部的なモデルに変換し、そこから各言語のクライアントを生成する面白いアプロー…
10ヶ月前
APIクライアント「Insomnia」で始める、チーム開発効率化
JX通信社エンジニアブログ
JX通信社の CTO の小笠原(@yamitzky)です。本日は、最近社内で検証している API クライアントの「Insomnia」や、Insomnia を活用したチームでの API 開発の効率化についてご紹介します。 Insomnia とは Insomnia は、オープンソースの API クライアントです。API 通信を GUI で直感的に検証・保存できる、というのが最も基本的な機能です。似たようなツールだと Postman などが有名だと思います。 insomnia.rest Insomnia は一般的な REST API だけでなく、GraphQL や gRPC の API にも対応した…
1年前
ダウンタイムを抑えてAWSからGoogle Cloudにデータベースを移行したはなし
JX通信社エンジニアブログ
こんにちは。kimihiro_nです。 今回はプロダクトで使用しているデータベース(MySQL 互換)を AWS から Google Cloud に引っ越ししたときのはなしを紹介します。 AWSから Google Cloud へ AWS では MySQL 5.7 互換の Aurora グローバルデータベースを利用していました。 グローバルデータベースを使っているのは、大規模災害時におけるリージョンレベルでの障害に備えるためのもので、万一リージョンレベルの障害が発生してもサービス継続できるような体制を作っていました。 今回ある事情から Google Cloud の CloudSQL へのお引っ越…
1年前
チーム規模が変動するチームでスクラムマスターとしてやってきたこと
JX通信社エンジニアブログ
お久しぶりです。シニアエンジニアの @sakebook です。今回私がスクラムマスター(以下SM)として所属するチームで、SMとして、およびチームで取り組んできたことなどを共有します。 背景 他社事例なども見聞きするなかで、今まで何をやってきたのかを共有することはそれなりに誰かの役に立つことがあると思ったのでこの度まとめました。 前提 この手の話を見聞きする上で前提が異なっていると解釈しにくいので、私たちのチームについて説明します。 チームには業務委託や副業の方、つまり週5稼動ではない人たちもいました。 最大でエンジニアは10人強いました。出入りは数ヶ月単位で発生していて、最小は5人です。 P…
2年前
APIをダウンタイムなしでAWSからGCPに引越しました
JX通信社エンジニアブログ
こんにちは。JX通信社 サーバーサイドエンジニアの内山です。 私が所属するNewsDigestチームでは先日、モバイルアプリ用APIをAWSからGCPにお引越しする、というプロジェクトを行いました。 会社の方針としてGCP利用を推進していることや、GCP特有のマネージドサービスの活用を視野に入れ、移行を決めました。 今回のAPI移行では、大きく以下2パートの作業がありました。 APIのホスティングサービスをGCP上のものにするためのCI/CD設定, 定義作成, アプリケーション修正などの作業 APIドメインのルーティング先をAWS -> GCPに切り替えるインフラ作業 本記事では、後者のルーテ…
2年前
Hydraで書かれたコードをVertex AI Pipelineで動作できるようにした
JX通信社エンジニアブログ
背景 ML Pipelineについて ML Pipelineとはなにか? Vertex AI pipelineとは? HydraとVertex AI Pipeline 問題点 解決法 実際に動かしてみた 各コンポーネントのコンテナイメージを作成 data prepare train 各コンポーネントの設定を行う 各コンポーネントの接続 まとめ 背景 こんにちは!JX通信社シニアMLエンジニアのファンヨンテです。 JX通信社では 属人化しがちなR&Dをチーム開発するため社内共通のテンプレートコードを用いて機械学習が行われています。テンプレートコードにはハイパーパラメータ管理のパッケージとして、H…
2年前
Sentry で Go 製アプリケーションのエラーを楽に管理する
JX通信社エンジニアブログ
今回はSentryというエラー集約管理システムをGo言語で扱う場合の知見を共有したいと思います。## Sentry とはSentryはエラーの集約管理を行うためのシステムで、作成したアプリケーション内で発生したエラーを一括で収集して見やすく管理することができます。
2年前
AI開発時に、あるClassのデータを集中的に追加する時のTipsと注意点
JX通信社エンジニアブログ
こんにちは!JX通信社シニアMLエンジニアのファンヨンテです。私は普段から、顧客にとって価値の高い(言い変えれば、顧客を幸せにできる)AIを開発することをモットーに仕事に励んでます。そのためには、AI開発の速度を高め、様々なAIやその見せ方を顧客に試していただくことで、顧客の幸福度を上げる方向性を見出していく必要があります。 効率性を高め、AIの開発速度を上げるために、JX通信社では様々な工夫を行っており、これまでもブログで紹介してきました。 tech.jxpress.net tech.jxpress.net tech.jxpress.net 今回はその取り組みの中でも、あるClassのデータ…
2年前
AWS Lambdaの構成管理のためにterraformを導入してみた
JX通信社エンジニアブログ
FASTALERT開発チームバックエンドエンジニアの鈴木(泰)です。 本記事は、AWS Lambdaの構成管理のためにTerraformを導入してみたというお話です。 TL;DR FASTALERTチームの開発文化とTerraformの導入に至った背景 AWS Lambda関数をTerraformでどう管理しているか もくじ TL;DR もくじ 本対応の背景 FASTALERTとチーム文化 workerレポジトリ apexのメンテナンス停止 Lambdaの構成管理ツールとしてTerraformを採用した理由 AWS Lambdaの構成管理のためにTerraformを導入(詳細) ディレクトリ構…
2年前
Hydraで書かれたコードをVertex AIでハイパーパラメータ調整できるようにした
JX通信社エンジニアブログ
背景 問題点 Vertex AIの公式ドキュメントに記載されている形式 Hydraの形式 解決方法 Hydra形式へ変換し、本来の学習コードを実行するスクリプトの作成 HydraのコードでVertex AIのハイパーパラメータ調整ができた まとめ 補足:チームでR&Dに取り組む工夫 我々とともに挑戦する仲間を求めています 初めまして、JX通信社のMLチームでインターンをしている田中です。これまで物体検知や深層距離学習を使った画像分類、自然言語の分類や生成などのAI作成、MLOpsなどをやっています。今回、MLエンジニアのヨンテさんのもとで文書生成AIのハイパーパラメータ調整の並列化に挑戦しまし…
3年前
リスク検知SaaSを支えるマルチモーダル・マルチタスクなExplainable AI
JX通信社エンジニアブログ
皆様こんにちは!JX通信社で機械学習エンジニアを担っているファンヨンテです。 弊社提供のビックデータ リスク情報サービスFASTALERTでは、Deep Learningを使ってSNSの投稿をリアルタイムに解析し、火事や事故などのリスク情報の検知を行っています。 SNSの投稿には、文字だけでなく、画像、動画などの情報も含まれているため、SNS解析にはよくマルチモーダルなAIモデルが用いられます。今回は「SNS の投稿からのリスク情報の判定」というタスクをテーマに、マルチモーダルなAIモデルの判定根拠の可視化や、精度を上げるための工夫などをご紹介します。 FASTALERT(ファストアラート)に…
3年前
slack-goとZapierで障害対応初動を自動化した話
JX通信社エンジニアブログ
サーバサイド開発やインフラ周りをいじっているたっち(TatchNicolas)です。今回はJX通信社における障害対応フローの改善について書きます。 はじめに TL;DR; slack-goとZapierを組み合わせて、障害対応時の提携作業を自動化するツールを作った 「自動化しよう」という意見がでやすい場自体を仕組みとして整備したことが改善のきっかけになった 今回の話の背景 少し前に、ビープラウドさんとのイベントにて、JX通信社NewsDigestチームのCI/CDおよび障害対応についてお話しさせていただきました。*1 そのなかで、「障害対応時に専用のSlackチャンネルを都度作成していること」…
3年前
AWS 上のシステムでリージョン切り替えの避難訓練を年末にやってみた
JX通信社エンジニアブログ
あけましておめでとうございます。 サーバーサイドエンジニアの @kimihiro_n です。 今日はAWSに載っているシステムの避難訓練を実施したことについて書いてみようと思います。 弊社が提供している FASTALERT というサービスでは、全国の災害や事件などを検知して報道機関や自治体、インフラを支える企業などにリスク情報として提供しています。 リスク情報を提供するという性質上、情報検知の素早さや網羅性に加えて「システムの可用性」も重要なサービスの要素となっています。 FASTALERT の多くのシステムは AWS の東京リージョンで動いており、複数データセンターを活用した冗長化(マルチA…
3年前
爆速開発を目指して NewsDigest を Flutter にリプレイスします
JX通信社エンジニアブログ
爆速開発を目指して NewsDigest を Flutter にリプレイスします JX通信社 Engineering Manager の @jazzsasori です。 最近アークナイツというソシャゲに課金してしまいましたが妻には内緒にしています。 弊社は NewsDigest という無料ニュースアプリを運営しています。 NewsDigest は記者が業務で愛用するほど、その圧倒的スピードに強みがある速報アプリです。また、一般的なニュース分野での速報に加えて、報道はされにくいが個人にとって価値の高い情報も to B 向けのリスク情報SaaS である FASTALERT と連携して即時に伝える、…
3年前
ヘビーユーザーが解説するPyTorch Lightning
JX通信社エンジニアブログ
こんにちは!私はファンヨンテと申します!JX通信社で機械学習エンジニアを行っております! 私はPyTorch Lightningを初めて使ったときの便利さに感動した以来、PyTorch Lightningのヘビーユーザーです! この解説記事ベビーユーザーの私が皆様にPyTorch Lightningを知っていただき、利用のきっかけになってほしいと思って公開しています! 今回の解説記事のサンプルコードはこちらにあります。ぜひ、実際のコードを手にとって体験しPyTorch Lightningの素晴らしさに触れてみてください! この記事内容は13回のMLOps勉強会で発表しました! speakerd…
3年前
JX通信社は Go Conference 2021 Autumn に協賛します!【11/13(土)開催】
JX通信社エンジニアブログ
こんにちは! CDO(開発担当役員)の小笠原(@yamitzky)です。 Python のイメージが強い(?)JX 通信社ですが、実は Go に関してもかなり積極的に利用しています。Go のコミュニティ発展を目的として、Go Conference 2021 Autumn にブロンズプランでの協賛を行っています。 Go Conference 2021 Autumn は、今週土曜日 2021/11/13(土) 10:00 〜 20:00 で開催 されますので、ぜひ奮ってご参加ください(参加費無料)。 gocon.connpass.com JX 通信社と Go AI リスク情報SaaS「FASTAL…
3年前
属人化しがちなR&Dをチーム開発するためのJX通信社での工夫
JX通信社エンジニアブログ
こんにちは!JX通信社でMLエンジニアのファンヨンテです。私は自分だけでなくMLチームの成果を最大化するために日々全力を尽くしています! JX通信社のMLチームでは人的リソースを最大限活用するため "力を使うべき所にのみ注力しよう!" をスローガンに徹底的に効率化しています。 今回はちゅらでーた様と弊社の共同勉強会で私が発表した内容をより掘り下げてお伝えできればと思います。 本内容については ちゅらデータさんとの共同勉強会にて発表しております! speakerdeck.com 動画を見たい方はこちら を御覧ください〜 R&Dタスクの属人化について 図1 アプリ開発におけるチーム開発(左)とR&…
3年前
PyCon JP 2021 でのミニゲームをGoogle Cloud RunとFirebase Hostingで作った話
JX通信社エンジニアブログ
JX通信社はPyCon JP 2021のゴールドスポンサーとしてスポンサーさせていただきました。 今回弊社平瀬さんがLocastの内容で登壇されました!内容はこちらからご覧ください。 speakerdeck.com その際、会社のブースではPythonを使ったミニゲームを実施していました。 PyCon JP 2021について PythonのカンファレンスであるPyCon JP 2021はオンラインとオフラインでのハイブリッド開催となりました。スポンサーブースはオンラインのみで、Discordのチャンネルに参加者の方に入っていただき、そこで会社の紹介や、参加者の方と交流するという流れになっていま…
3年前
GCPをフル活用して東京五輪の2週間で約5000万ツイートをさばいた話
JX通信社エンジニアブログ
はじめまして。JX通信社でデータアナリストをしている @nrtaking です。 弊社では、7/23〜8/8に行われた東京オリンピック、8/25〜9/5に行われた東京パラリンピックにあわせて関連した日本語ツイートを全量収集し、Twitter Japanなど各社に提供していました。 内容に関する簡単な分析についてはプレスリリースでお伝えしているので、そちらもあわせてご覧ください。 prtimes.jp 実はこのツイート収集システムは、2週間ほどでほぼゼロから立ち上げたものでした。 今回は五輪関連のツイート収集を支えた技術について紹介します。 叶えたかった要件 五輪に関するツイートを、NTTデータ…
3年前
BERTの推論速度を最大10倍にしてデプロイした話とそのTips
JX通信社エンジニアブログ
背景 はじめまして、JX通信社でインターンをしている原田です。 近年深層学習ではモデルが肥大化する傾向にあります。2020年にopen aiが示したScaling Laws([2001.08361] Scaling Laws for Neural Language Models) の衝撃は記憶に新しく、MLP-Mixerが示したように、モデルを大きくすればAttention構造やCNNでさえも不必要という説もあります。([2105.01601] MLP-Mixer: An all-MLP Architecture for Vision) しかし大きな深層学習モデルを利用しようとすると、しばしば…
3年前