サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
tech.jxpress.net
こんにちは、JX通信社でシニアエンジニアをしているSirosuzumeです。 先日、GitHub Copilotの新機能として、リポジトリのルートから.github/copilot-instructions.mdを読み込み、対話型UIの出力に反映する機能が追加されました。 この機能を使ってみて、どのような効果があるのか、どのように活用するのが良いのか、実際に新しく立ち上がったプロジェクトで試してみた結果を共有したいと思います。 copilot-instructions.mdの効果の検証 まずは実例を見てみましょう。 src/feature/entry-horse/presentational/list-item.tsxというファイルがあったとします。 この中にはEntryHorseListItemという名前のコンポーネントがあり、PropsはEntryHorseListItemPropsと
CTO の小笠原(@yamitzky)です。今日は、CTO として推進している「サーバー費削減プロジェクト」の取り組みについてご紹介します。 本稿では「リザーブドインスタンスを購入する」や「入札型のインスタンスに移行する」といった一般的な削減テクニックについては扱いません。プロジェクトとしてどう分析、進行し、成果を出しているか、という話を中心に、取り組みをまとめています。 背景 JX通信社では、Amazon Web Services(以下、AWS) や Google Cloud などのクラウドサービスを活用しています。これらのクラウドサービスは通常、ドルで費用が決まっており、日本円で支払います。そのため、為替の影響を受けてしまいます。 ちょうど最近は円高の恩恵を受けていますが、つい3年前の2021年は1ドル103円だったところ、2024年のピーク時には160円まで進行しています。つまり原価
こんにちは、JX通信社でシニアエンジニアをしているSirosuzumeです。 JX通信社の「FASTALERT」には、ユーザーが事前に設定した地域で発生した災害情報を、メールで受信する機能があります。 しかしテストする手順も複雑で、配信条件も多様化していったこともあって、手動でのテストを行うことに限界を感じていました。 設定画面の挙動確認など、ブラウザ上で完結するテストであればPlaywrightを使って自動化することもできていたのですが、実際にメールを受信するところのテストを自動化する方法についてのノウハウ不足が課題でした。 そこで、Amazon SESの機能を改めて確認していたところ、特定のメールアドレスで受信したメールをS3に保存する機能があることを知り、E2Eテスト内からS3にアクセスすることでメールの受信テストまで自動化でカバーできるのではないか、と考えたことが、今回のチャレンジ
こんにちは。kimihiro_nです。 今回はアプリケーションの動作を保証するために不可欠なテストコードの書き方についてです。 特に外部依存要素のテストに焦点を当ててみていきたいと思います。 外部に依存するテストコード 皆さんはアプリケーションのテストコードを書いていますか? 内部的な状態を持たず、入力と出力が常に変化しない関数であれば、テストコードを書くのは比較的容易です。実際に関数を呼び出ししてその出力と期待値が一致しているかをみればテストすることができます。 しかし実際にアプリケーションを開発する場合、データベースへの接続だったり外部へのAPI呼び出しだったりといった外部の状態に依存した処理が含まれることが多いです。このような場合、素直にテストを書くのが難しいです。 多くの場合モックを利用して実際のデータベース呼び出しを置き換えたり、テスト用のリソースをdockerなどで構築してダミ
こんにちは。スクラムマスターの@sakebookです。 今回は「象・死んだ魚・嘔吐」をチームでやってみたのでその振り返りをします。 「象・死んだ魚・嘔吐」とは 振り返り手法の一つです。Airbnb Story 大胆なアイデアを生み、困難を乗り越え、超人気サービスをつくる方法(原題: The Airbnb Story)の中で紹介されていたようです。 翻訳されてなかなかキャッチーなネーミングになっています。 それぞれ次のようなことを意味します。 象 凄く大きい、見えているけど、みんな見ないふりをしている課題・問題。表層化しているけど大きすぎてみようとしていない。これが何かをみんなで話していく。 死んだ魚 放っておくと腐っていく。そういう問題。放置しておくとまずいことになる問題ってなんだろう?ということを話し合う。 嘔吐 自分の胸の中に隠していて、吐き出せなかったこと。これをこの場で嘔吐する。
スクラムマスターの@sakebookです。今回は「リモートワークでもできる、気軽に始める勉強会のすすめ」です。 「勉強会」というと、想像するものが人によって異なるので、事前にどんなものかを書いておくと 「直接の業務ではないが何かのテーマについて一緒に学んでいる会」 のことを勉強会と、この記事では定義します。 そんなのは勉強会じゃない!という人は適宜読み替えて、こういうことをやったよ気になったらやってみてねくらいの温度感で読んでください。 この日は動画再生が上手くいかなかった リモートワークにより開催機会の減少 コロナ禍以前からリモートワークを取り入れていた弊社ですが、コロナ禍に伴い、地方へ移住した人や地方勤務にて採用したメンバーも増えています。そのため、なかなかオフサイトでのイベント開催が難しくなっていました。 勉強会も同様で、開催頻度が減少していました。 みんなで動画を見るみたいな体験を
JX通信社の CTO の小笠原(@yamitzky)です。本日は、最近社内で検証している API クライアントの「Insomnia」や、Insomnia を活用したチームでの API 開発の効率化についてご紹介します。 Insomnia とは Insomnia は、オープンソースの API クライアントです。API 通信を GUI で直感的に検証・保存できる、というのが最も基本的な機能です。似たようなツールだと Postman などが有名だと思います。 insomnia.rest Insomnia は一般的な REST API だけでなく、GraphQL や gRPC の API にも対応したツールです。JX通信社では、NewsDigest や FASTALERT などのサービスで GraphQL を活用しているため、GraphQL にネイティブ対応しているのは非常に便利です。 Insom
こんにちは。kimihiro_nです。 今回はプロダクトで使用しているデータベース(MySQL 互換)を AWS から Google Cloud に引っ越ししたときのはなしを紹介します。 AWSから Google Cloud へ AWS では MySQL 5.7 互換の Aurora グローバルデータベースを利用していました。 グローバルデータベースを使っているのは、大規模災害時におけるリージョンレベルでの障害に備えるためのもので、万一リージョンレベルの障害が発生してもサービス継続できるような体制を作っていました。 今回ある事情から Google Cloud の CloudSQL へのお引っ越しを行い、同じようにホットスタンバイでのマルチリージョン構成を構築することになりました。 なぜ AWS から Google Cloud に 恐らく一番気になるのがこの理由の部分かもしれませんが、大人の
お久しぶりです。シニアエンジニアの @sakebook です。今回私がスクラムマスター(以下SM)として所属するチームで、SMとして、およびチームで取り組んできたことなどを共有します。 背景 他社事例なども見聞きするなかで、今まで何をやってきたのかを共有することはそれなりに誰かの役に立つことがあると思ったのでこの度まとめました。 前提 この手の話を見聞きする上で前提が異なっていると解釈しにくいので、私たちのチームについて説明します。 チームには業務委託や副業の方、つまり週5稼動ではない人たちもいました。 最大でエンジニアは10人強いました。出入りは数ヶ月単位で発生していて、最小は5人です。 PBI管理にはJIRAとNotionを併用しています。 1スプリントは2週間です。 チームはフルリモートです。 リファインメントの整理 スプリント計画で時間を押してしまうことが多く、リファインメントが慢
こんにちは。JX通信社 サーバーサイドエンジニアの内山です。 私が所属するNewsDigestチームでは先日、モバイルアプリ用APIをAWSからGCPにお引越しする、というプロジェクトを行いました。 会社の方針としてGCP利用を推進していることや、GCP特有のマネージドサービスの活用を視野に入れ、移行を決めました。 今回のAPI移行では、大きく以下2パートの作業がありました。 APIのホスティングサービスをGCP上のものにするためのCI/CD設定, 定義作成, アプリケーション修正などの作業 APIドメインのルーティング先をAWS -> GCPに切り替えるインフラ作業 本記事では、後者のルーティングに関して取り上げていきます。 作業概要・前提 有効なSSL証明書を事前に用意するには セルフマネージドSSL証明書の発行・検証作業 トラフィック移行前の確認 安全なトラフィック移行作業をどう行う
*1 こんにちは、サーバーサイドエンジニアの @kimihiro_n です。 今回はSentryというエラー集約管理システムをGo言語で扱う場合の知見を共有したいと思います。 Sentry とは Sentryはエラーの集約管理を行うためのシステムで、作成したアプリケーション内で発生したエラーを一括で収集して見やすく管理することができます。 sentry.io 類似のエラーをグルーピングして発生頻度を確認したり、エラーの発生状況をSlackのようなチャットツールに通知してくれたりします。 予期しないエラーが発生したとき、生のログを見なくてもSlackやWebのUIで確認出来るのはとても便利です。 バックエンドからフロントエンドまで幅広い言語に対応しているためシステムのエラーを一括で集約が可能です。 JX通信社ではエラー管理ツールとしてSentryを広く利用しており100を超えるシステムが登録
FASTALERT開発チームバックエンドエンジニアの鈴木(泰)です。 本記事は、AWS Lambdaの構成管理のためにTerraformを導入してみたというお話です。 TL;DR FASTALERTチームの開発文化とTerraformの導入に至った背景 AWS Lambda関数をTerraformでどう管理しているか もくじ TL;DR もくじ 本対応の背景 FASTALERTとチーム文化 workerレポジトリ apexのメンテナンス停止 Lambdaの構成管理ツールとしてTerraformを採用した理由 AWS Lambdaの構成管理のためにTerraformを導入(詳細) ディレクトリ構造 ファイルの中身 Lambdaのデプロイ方法 所感 あとがき 本対応の背景 具体的なAWS Lambda x Terraformの話に入る前に、FASTALERTチーム、workerレポジトリ、今回
皆様こんにちは!JX通信社で機械学習エンジニアを担っているファンヨンテです。 弊社提供のビックデータ リスク情報サービスFASTALERTでは、Deep Learningを使ってSNSの投稿をリアルタイムに解析し、火事や事故などのリスク情報の検知を行っています。 SNSの投稿には、文字だけでなく、画像、動画などの情報も含まれているため、SNS解析にはよくマルチモーダルなAIモデルが用いられます。今回は「SNS の投稿からのリスク情報の判定」というタスクをテーマに、マルチモーダルなAIモデルの判定根拠の可視化や、精度を上げるための工夫などをご紹介します。 FASTALERT(ファストアラート)について 「FASTALERT」は、SNSをはじめとする各種ビッグデータから、AIがリスク情報を検知・配信するビックデータ リスク情報サービスです。報道に必要不可欠なツールとしてNHKと全ての民放キー局
サーバサイド開発やインフラ周りをいじっているたっち(TatchNicolas)です。今回はJX通信社における障害対応フローの改善について書きます。 はじめに TL;DR; slack-goとZapierを組み合わせて、障害対応時の提携作業を自動化するツールを作った 「自動化しよう」という意見がでやすい場自体を仕組みとして整備したことが改善のきっかけになった 今回の話の背景 少し前に、ビープラウドさんとのイベントにて、JX通信社NewsDigestチームのCI/CDおよび障害対応についてお話しさせていただきました。*1 そのなかで、「障害対応時に専用のSlackチャンネルを都度作成していること」「Notionテンプレを使って情報の整理をしていること」*2を紹介しました。イベント後も何か障害やヒヤリハットが起こると少しずつフローが改善されていき、またNewsDigest以外のプロダクトチームで
あけましておめでとうございます。 サーバーサイドエンジニアの @kimihiro_n です。 今日はAWSに載っているシステムの避難訓練を実施したことについて書いてみようと思います。 弊社が提供している FASTALERT というサービスでは、全国の災害や事件などを検知して報道機関や自治体、インフラを支える企業などにリスク情報として提供しています。 リスク情報を提供するという性質上、情報検知の素早さや網羅性に加えて「システムの可用性」も重要なサービスの要素となっています。 FASTALERT の多くのシステムは AWS の東京リージョンで動いており、複数データセンターを活用した冗長化(マルチAZ)がされています。 しかし、例えば大規模地震のような広域かつ被害の大きい災害の場合、東京リージョン全体にわたって問題が発生する可能性があります。 首都直下型の大きな地震は今後30年以内に70%の確率
爆速開発を目指して NewsDigest を Flutter にリプレイスします JX通信社 Engineering Manager の @jazzsasori です。 最近アークナイツというソシャゲに課金してしまいましたが妻には内緒にしています。 弊社は NewsDigest という無料ニュースアプリを運営しています。 NewsDigest は記者が業務で愛用するほど、その圧倒的スピードに強みがある速報アプリです。また、一般的なニュース分野での速報に加えて、報道はされにくいが個人にとって価値の高い情報も to B 向けのリスク情報SaaS である FASTALERT と連携して即時に伝える、社会派ニュースアプリです。 現在 (2021/11) 500万ダウンロードを突破しており、今後もさらにユーザーを伸ばそうとしています。 なぜリプレイスを行うのか サービスとしては 2015年 にストア
こんにちは!私はファンヨンテと申します!JX通信社で機械学習エンジニアを行っております! 私はPyTorch Lightningを初めて使ったときの便利さに感動した以来、PyTorch Lightningのヘビーユーザーです! この解説記事ベビーユーザーの私が皆様にPyTorch Lightningを知っていただき、利用のきっかけになってほしいと思って公開しています! 今回の解説記事のサンプルコードはこちらにあります。ぜひ、実際のコードを手にとって体験しPyTorch Lightningの素晴らしさに触れてみてください! この記事内容は13回のMLOps勉強会で発表しました! speakerdeck.com 読者の対象 PyTorch Vs PyTorch Lightning PyTorch について PyTorch Lightningについて JX通信社でPyTorch Lightnin
こんにちは!JX通信社でMLエンジニアのファンヨンテです。私は自分だけでなくMLチームの成果を最大化するために日々全力を尽くしています! JX通信社のMLチームでは人的リソースを最大限活用するため "力を使うべき所にのみ注力しよう!" をスローガンに徹底的に効率化しています。 今回はちゅらでーた様と弊社の共同勉強会で私が発表した内容をより掘り下げてお伝えできればと思います。 本内容については ちゅらデータさんとの共同勉強会にて発表しております! speakerdeck.com 動画を見たい方はこちら を御覧ください〜 R&Dタスクの属人化について 図1 アプリ開発におけるチーム開発(左)とR&Dチームで発生しがちな属人化した、タスクの進め方 弊社はNewsDigestを始めとしたアプリを開発しており、アプリ開発の場ではチームの皆が一丸となり、アプリ開発という一つの目標に向かって協力し合いな
はじめまして。JX通信社でデータアナリストをしている @nrtaking です。 弊社では、7/23〜8/8に行われた東京オリンピック、8/25〜9/5に行われた東京パラリンピックにあわせて関連した日本語ツイートを全量収集し、Twitter Japanなど各社に提供していました。 内容に関する簡単な分析についてはプレスリリースでお伝えしているので、そちらもあわせてご覧ください。 prtimes.jp 実はこのツイート収集システムは、2週間ほどでほぼゼロから立ち上げたものでした。 今回は五輪関連のツイート収集を支えた技術について紹介します。 叶えたかった要件 五輪に関するツイートを、NTTデータの提供するAPIからストリームで受け取り続ける ツイート量などの統計情報やRTが多いツイート情報をダッシュボードの形で見ることができる 上記を(ほぼ)リアルタイムで実現できる 実はこの取り組みにあたり
背景 はじめまして、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) しかし大きな深層学習モデルを利用しようとすると、しばしば以下のような問題に悩まされます。 推論速度が問題でプロダクトに実装不可能 GPU/TPUはコスト上厳しい プロダクトの性質上バッチ処理が不可能(効率的にGPU/TPUが利用できない) 例えばJX通信社
はじめまして、新卒フロントエンドエンジニアのぺいです。 JX通信社でフロントエンドの開発はReactが主流になっており、React Hooksを使った開発が欠かせません。hooksは便利な反面、適材適所使い所を理解していないと逆にパフォーマンスが悪くなってしまう場合があります。そこで今回は普段フロントエンドを書かない人も勉強会に参加するのを考慮し簡単な改善から応用としてReactで書かれたFASTALERT *1の改善まで行ってもらいました。 前提条件 勉強会の内容 再レンダリングされているコンポーネントを見つける なぜ再レンダリングされてしまうのか 改善方法 コンポーネントのメモ化 関数のメモ化 最終的な変更箇所 毎回コンポーネントや関数をメモ化すべきなのか コストの高い計算 無駄なレンダリング カスタムhooks 最後に 参考 前提条件 react 17.0.1 勉強会の内容 最終的な
エンジニアの鈴木(泰)です。 今回は、multiprocessingとthreadingとasyncioの違いとはなんだろう?という問に挑戦してみたいと思います。 この問の答えをグーグル先生に聞いてみると、非常にたくさんの情報がヒットします。しかしながら、どの情報も断片的なものばかりで(本記事もそうなのかもしれません)、色々と本を読んだりネットを漁ったりして、情報を補完しなければなりませんでした。 本記事は、僕が調べた限りの情報を集約し、この問に対する結論を1つの記事にまとめたものとなっています。 前提 マルチプロセスとは マルチスレッドとは Pythonにおけるマルチスレッド 本題 マルチプロセス(multiprocessingライブラリ)を利用したほうが良い場合 cpu_sec.py cpu_multiprocessing.py cpu_threading.py cpu_asyncio
サーバサイド開発やインフラ周りをいじっているたっち(TatchNicolas)です。 JX通信社の日々の運用では、Slack workflowやbotが大活躍しています。 かなり作り込まれた高機能なBotもあり欠かせないものになっていますが、開発者メンバーのなかには普段そのリポジトリを触らない人・すでにあるものに機能追加・改修はするがゼロから立ち上げたことはない人などもいます。ハードルをグッとさげることで自分たちの斧を研ぎやすくできないか?と考えました。 そこで毎月開催している社内勉強会にて、今回はSlackアプリ開発をテーマにしましたのでその様子について紹介します。 内容 初めて触る人でも開発をすぐに始められるように、社内でよく使われる言語でテンプレになるリポジトリを用意しました。 Golang: https://github.com/TatchNicolas/slack-scaffol
JX通信社シニア・エンジニアの@shinyorke(しんよーく)です. 最近は色んなエンジニアリングをしつつ, イベントの司会業をしています(詳細は最後の方を見てね). 開発しているサービス・プロダクトの要件で, TwitterやLINE, FacebookでシェアするOGP*1コンテンツ(タイトル・本文・画像)が欲しい コンテンツはユーザーさんの操作で動的に変わる テキストだけじゃなくて, 画像も変えたい←これ なんて事は非常によくある話だと思います. 私はちょっと前に開発したAIワクチン接種予測でそれがありました. こういうやつです 例えば上記画像のテキスト(地域・年齢・接種可能時期)は予測の結果を動的に画像テンプレートに入れて都度作っています. 上記のOGPを生成するために必要なことはこういう感じだろうなー, と以下の絵の通り整理し, やったこと 結果的に, OGPを生成するためのサ
SREのたっち(@TatchNicolas)です 本記事は、先日の弊社主催のTechトークイベントで発表した内容について、もうすこし詳細に書いてみます。 jxpress.connpass.com TL;DR; GitLabのenvironmentとHelmのreleaseを対応させることで動的な環境の作成・削除を実現した CIOpsとGitOpsを使い分けて、「ちょうどいい」使用感を目指した 環境の順番待ちがなくなった! 背景 JX通信社のサーバサイド開発では、ECSによるコンテナベースでの開発・デプロイが主流です。*1 環境としては ローカル環境: docker-composeやgo run yarn run などで起動する、文字通り手元のマシンのローカル上で動かす環境 開発版環境: SQSやFirestoreなどのマネージドサービスや、ローカルで立てるのが大変な別のAPI*2との繋ぎ込
こんにちは、サーバーサイドエンジニアの @kimihiro_n です。 今回はみんなが利用するテスト環境の渋滞を解消したはなしを。 テスト環境の渋滞 最近開発チームのメンバーが増えてきたりして、「テスト環境の渋滞」というのがよく発生するようになりました。 テスト環境というのは動作検証目的で AWS 上に作成している環境で、本番と同じようなシステム構成でデータだけダミーのものを用意してあるような環境です。 ローカルの Docker Compose で開発や動作確認が全部完結出来るというのが理想なのですが、「常時入ってくるデータを扱いたい」「本番に近いデータ量でパフォーマンスをみたい」「エミュレーションでは動くけれど実際に動くか確認したい」など、テスト環境を利用しないと分からないことが結構出てきます。 また「アプリと繋ぎこんで動作確認したい」「PO や非エンジニアに確認してもらいたい」みたいな
JX 通信社のフロントエンドでは React TypeScript や Emotion のような CSS in JS を技術選定することが多いです。弊社 SaaS の FASTALERT、新型コロナ関連情報などでも同様の技術選定で、過去にもエンジニアブログで紹介してきました。 tech.jxpress.net tech.jxpress.net 今日は、Emotion の活用の極地「Utility First な CSS in JS フレームワーク」についてご紹介します。 Emotion で開発する悩み 素の Emotion や類似の CSS in JS ライブラリでは、 1 つの TS/JS ファイル内に CSS を書くような感じでスタイル設定を行っていきます*1。CSS in JS ライブラリに概ね共通しているのが、 styled.タグ名 でスタイリングすることです。 const Tit
JX通信社シニア・エンジニアの@shinyorke(しんよーく)です. ちょっと前のお話になりますが, JX通信社のニュース速報アプリ「NewsDigest」で, 「AIワクチン接種予測」という新機能の提供を開始しました. prtimes.jp 「自分がいつコロナワクチンを接種できるか?」を簡単に予測できるサービスです. 使っていただけると嬉しいです🙏 大変ありがたい事に,「AIワクチン接種予測」はリリース後多くの反響を頂いていまして, リリースから約半月で利用回数が100万回を突破(プレスリリース). 同じく, リリースから半月で20本以上ものTV番組で紹介 と, 多くのユーザーさんにお使いいただきました. ありがとうございます🙏 これだけ多くの方に使っていただくとなると, リクエスト数・ユーザー数の増減に合わせたコンピューティングリソースの配分 特に, 「TV経由で認知したユーザー
JX通信社 Engineering Manager の @jazzsasori です。 皆さん自身の成長にコミットしてますか? マネージャーの皆さんメンバーの成長にコミットしてますか? 私はゼルダ無双の体験版をダウンロードしてしまったために成長にコミットできなさそうです。 あと買ってしまいそうです。 弊社もリモート中心のメンバーが増えました こんなご時世なので弊社も多くのメンバーの勤務がリモート中心となって久しいです。 弊社はSlack, Zoom, Discord を活用、リモートに関する制度の充実などにより比較的コミュニケーションはうまくいっているように思います。 が、ご多分に漏れず多少のコミュニケーションに関する問題も起こっているのも事実です。 最近メンバーとエモい話してますか? 私は昭和の人間なので飲みニケーションが好きです。 私は生中を飲みながら「やったろうぜー!」なんて言いなが
次のページ
このページを最初にブックマークしてみませんか?
『JX通信社エンジニアブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く