Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

フロントエンドチームのSentry監視業務

Sentry大臣に就任しました。 こんにちは。フロントエンドエンジニアの武井です。 このたびフロントエンドチームのSentry大臣に任命されました。 なんやそれ、とお思いでしょう。 これはフロントエンドチーム内での役割分担を大臣と呼んでいるだけで、「○○担…

iOSのWebKitをSwiftUIとSwift Concurrencyで今風にできる!?

こんにちは、YappliでiOSエンジニアをしているカンです。 最近、TechBoosterの書籍「プロと読み解くモバイル最前線~アプリを支える最新技術~」を読んでWebKitでのSwiftUI、Swift Concurrencyへの移行が取り上げられており、その内容を紹介してみようかと思…

プロダクト開発本部LT大会#8を開催しました

こんにちは!データサイエンティストの山本です( @__Y4M4MOTO__ )。 先日、プロダクト開発本部で LT 大会が開催されました。8回目を迎えた今回も、プロダクト開発本部を始めとして他部署の方々も参加してくださり大盛況でした! この記事では、当日の様子…

ヤプリのSREインターンでSentryのインフラ改善に取り組みました

はじめに 内容 目的 これまでの環境 設計 詰まったポイント DockerとECSタスクの互換性 Sentryアーキテクチャの理解 学んだこと おわりに 参考にした書籍 はじめに 初めまして、ご縁があり2023年3月の1ヶ月間ヤプリのSREチームでインターンをさせていただい…

ヤプリインターンが最高だった話。

こんにちは、ヤプリでサーバサイドエンジニアとして1ヶ月間インターンに参加した青山(@small_onions)です。 普段は競技プログラミングや大学で研究などをしています。 今回はヤプリのインターンが最高だった、というインターン体験記を書きます。 ヤプリ社内…

短期インターンでの貴重な経験-おすすめしたくなる理由

こんにちは!ヤプリで1ヶ月間インターンをさせていただいている佐々木です。 今回は、ヤプリの就業型インターンのおすすめポイントを、お伝えできればと思います! 伝えたいおすすめポイント ヤプリは、知れば知るほどいい会社 新入社員と同じ視点で会社を…

実行時間に1週間かかっていた日次バッチ処理を6分に短縮した話

サーバーサイドエンジニアの田実です! タイトルの通り、完了まで1週間かかっていた日次バッチ処理を6分に短縮して1500倍以上高速化したので、今回はその改善について紹介したいと思います。 587459秒 = 6.7日かかっていたバッチが… 改善して6分程度に! …

GitHub Actionsのsetup-go@v4が変えるGoのCI/CD: 依存関係キャッシュを理解する

Go

GitHub Actions は CI/CD パイプラインの自動化に不可欠なツールで、Go の開発者にも大変便利です。特に、依存ライブラリのキャッシュはプロジェクトの CI/CD 時間を短縮し、開発効率を向上させるために重要な機能です。最近リリースされた GitHub Actions …

VueのSuspenseとRouterViewの組み合わせで正しくfallbackさせる

フロントエンドエンジニアのこん(@k0n_karin)です! 今回は昨今のVueに欠かせない2つの便利なコンポーネントを組み合わせて使う際のお作法を書いていきます。 VueのSuspense Vue3からはcomposition APIでsetup()や<script setup>を使う事が増えたと思います。 setup内で非…

戦略的DDDを実践してみた

概要 こんにちは。サーバーサイドの窪田です。 今回はヤプリの開発現場のプロジェクトで実際に戦略的DDDを実践してみたのでその紹介をしようと思います。 ヤプリではアプリケーションの設計パターンにDDDを採用し、実装しています。 一方で別言語で書かれた…

Goによる2要素認証の実装について

はじめに 初めまして、サーバーサイドエンジニアのKidaです! 今回は多くの2要素認証機能に使われる、TOTP(Time-based One-time Password)というワンタムパスワードを生成するコードをGoで実装してみようと思います! 2要素認証とは? TOTP生成コードを書く…

【戦術的DDD】なぜトランザクションをユースケース層で張るのか

概要 こんにちは。サーバーサイドエンジニアの窪田です。 これまでの戦術的DDDについて以下のような記事で紹介してきました。 戦術的DDDをGoで実現する【entity編】 - Yappli Tech Blog 戦術的DDDをGoで実現する【Value Object編】 - Yappli Tech Blog Deep …

Vueとhls.jsを使って、AndroidとiOSでいい感じにm3u8を再生する

フロントエンドエンジニアのこん(@k0n_karin)です! 今回は昨年末に書いたウェブストーリー関連のお話となります。 tech.yappli.io HLSでm3u8を再生する HLS用のcomposableを実装 composableを利用するVueコンポーネントを実装する おわりに HLSでm3u8を再生…

Android 14 (Preview 2) API を試してみた

こんにちは、Android エンジニアのてつ(哲)です。 Android 14 は、2023 年下半期に正式にリリース予定とされています。最近(03月08日)、Android 14 Preview 2 が公開されたため、今回は自分が注目している部分について、内容と試した感想を紹介したいと…

textlintをGitHub Actionsで実行してブログ文章をいい感じに整形する

はじめに こんにちは。サーバサイドエンジニアの中川(@tkdev0728)です。 絶賛花粉症で悩んでおります。花粉対策に効くものを片っ端から試しているのですが、いい方法を探し中です。 さて、今回はタイトル通りtextlintをGtitHub Actionsで実行していきます!t…

useSWRとDDDの相性について考えてみた

概要 こんにちは。サーバーサイドエンジニアの窪田です。 今回はフロントエンドのuseSWR というhooksの性質と、バックエンドがDDDで設計されている場合の相性について考えていこうと思います。 リンク先で述べられている通り、useSWRの名前はstale-while-rev…

「オブザーバビリティ・エンジニアリング」に感化され社内でオブザーバビリティ布教活動を行なった話

こんにちは!NewRelic大好きSREの三橋です。 今回は「O'Reilly Japan - オブザーバビリティ・エンジニアリング」に感化され、社内でオブザーバビリティの布教活動を行なった話について記載します。 布教活動といってもまだ社内のエンジニア向けにプレゼンを…

ヤプリでの2ヶ月間のインターンレポート

はじめに こんにちは、ヤプリのサーバチームでインターンをさせていただいています。木下です。 1月から2月まで2ヶ月間ヤプリでインターンをさせていただき、感じたことを正直にお伝えしたいと思います。(文章量多めですみません) ヤプリについて アプリプ…

Protobuf周りでハマった話

はじめに こんにちは、ヤプリのサーバーチームでインターンをさせていただいている木下です。 今回は、検証環境にデプロイする際に、ハマったことがあり、備忘録としてまとめます。 前提:Yappliの運用について Yappliでは、クライアントをTypeScript、サー…

【Android】Custom Tabsの高さを調節してボトムシートのように表示させる方法

こんにちは、Androidエンジニアのふなちです 突然ですが本日こんな記事を見かけました。 pc.watch.impress.co.jp 上記の記事のことを書いた本家の記事↓ android-developers.googleblog.com 興味が沸いたのでサクッと実際に触ってみました。 そこで今回は上記…

ノーコードでストーリーズ機能が作れる?MakeStoriesがすごい!

皆さん、こんにちは!ノーコード総研で所長として活動している北村です。ノーコード総研は昨年発足したノーコードプロダクトの研究チームで、一般のビジネスパーソンがノーコードプロダクトを実務に取り入れるための体系的でまとまった情報や具体的なノウハ…

Goのcontextパッケージを理解する

Go

はじめに こんにちは、サーバサイドエンジニアの中川(@tkdev0728)です。 2023年も早いもので1ヶ月がすぎようとしていますね。2023年は何よりも姿勢にこだわろうと思っています。いい猫背解消の方法があればぜひコメントにて教えてください。 さて、今回はタ…

RedashのアプリケーションログをNew Relicでいい感じに可視化した話

こんにちはSREの三橋です! 本日はRedashのアプリケーションログをNew Relicダッシュボードでいい感じに可視化することができたため、その内容とチャート作成の過程について記載いたします。 はじめに 背景 想定する読者 完成したダッシュボード 利用したNew…

Relayを試した感想 (Jetpack Compose)

こんにちは、Androidエンジニアのてつ(哲)です。 今、多くの開発チームは XML の代わりに Compose を利用して、 UI を実装していると考えられていますが、 2022 年 10 月に Android Developer Blog 上に 「Jetpack Compose の新機能」の中に発表された Rel…

【Android】透過色を不透明色に変換する方法

こんにちは、Androidエンジニアのふなちです 今回は、透過で色を指定されたけどその色を不透明色(特定の背景で表示した時の色)で使いたい場合の解決方法を紹介します。 透過色を不透明色に変える方法 結論を先に言うと、ColorUtilsの中にcompositeColorsと…

Pull RequestのAssigneesのアサイン忘れをGitHub Actionsで防ぐ

Pull RequestのAuthorのアサインをGitHub Actionsで自動化する方法を紹介します。

フロントエンドチームでgoのライブコーディングをした話

おはようございます。フロントエンドチームの武井です。 今回はフロントエンドチーム最近取り組んでいるライブコーディングを行いましたので、そのときの気付きを記事にしようと思います。 ライブコーディングについてはマネージャーの山田が以前の記事です…

G.I.G. プログラムに参加し Professional Cloud Architect 認定試験に合格した話

こんにちは、サーバーサイドエンジニアのKidaです。 今回は Google Cloud 様主催の G.I.G. プログラムという特別招待制トレーニングプログラムに参加し Google Cloud Certified - Professional Cloud Architect 認定試験に合格した話を書こうと思います。 ト…

ECS/Fargateからサービスアカウントキーを使わずにGoogle CloudのAPIにアクセスする方法

はじめに こんにちは!SREの三橋です。 今回はECS/Fargateからサービスアカウントキーを使わずにGoogle CloudのAPIにアクセスする方法をご紹介いたします。 ECS/FargateなどAWSリソースからGoogle Cloud上のAPIへアクセスする際にはサービスアカウントキーを…

BigQueryのデータ転送のエラー原因特定で軽く躓いた話

こんにちは。サーバーサイドエンジニアの柴田です。 皆さんはBigQueryにCSVファイルをインポートしたくなったことはありますか? 私はあります。そしてエラーの原因特定ができず軽く躓いたことがあるので、簡単にですが備忘録的にその時の対処法を残しておこ…