Yappli Tech Blog

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

PHPStanで引っかかりがちなエラーについてまとめてみた

サーバーサイドエンジニアの田実です! ヤプリの一部のサービスはPHPで実装されており、それぞれのサービスは品質向上を目的として静的解析ツールである PHPStan を導入しています。 PHPStanにより多くの不具合を事前に検知することができるのですが、PHPSta…

Zapier Tables で Slack でアサインするときの重複排除してみた

Zapier Tables でステート管理を行い Slack で人をアサインするときの重複排除する方法について

New RelicとSalesforceをZapierで繋いで、アラートを運用担当者にSlackでメンションしてみた

こんにちは、インテグレーション・エンジニアの尾宇江です。 聞き慣れないインテグレーション・エンジニアという職種ですが、 お客様がYappliを利用する際の「ポイントカードを表示したいけど、基幹システムの既存のAPIはYappliのポイントカード表示用APIと…

Google CloudのTech Acceleration Programに参加した話

ヤプリのSREマネージャー望月です。 近況としては以前のしいたけ栽培の失敗を教訓に、栽培はプロに任せて成果物だけいただくという素晴らしいサービス(普通の収穫体験)にハマっています。 先日SRE・サーバーサイドエンジニア・セキュリティエンジニアの6名で…

AWS GameDayに初挑戦して無事入賞してきました!

こんにちは、SREグループのはぶちん(羽渕)です。 この夏はミニトマト、きゅうり、いちごの栽培に初挑戦しているのですが、最近は YouTube でプロの農家の方が余すこと無く知識を共有してくれるので今のところ順調に育てることができています。ベランダでも…

TypeScriptとJavaScriptのclass継承の違い

概要 こんにちは。サーバーサイドエンジニアの窪田です。 ヤプリでは Webフロントエンド (Nuxt.js, Next.js) 自動化しているアプリのbuild処理 (Node.js) 一部のPush通知の送信基盤 (Node.js) でJavaScriptとTypeScriptを使っていたり、試験的にDenoを使った…

技術記事共有用のSlackチャンネル #talk-tech-news と期待している効果

サーバーサイドエンジニアの田実です! ヤプリのSlackには #talk-tech-news という技術記事や技術ネタを共有するチャンネルがあります。 今回はこの技術共有用チャンネルに期待している効果や共有する技術記事を探す方法を紹介したいと思います! 育休中なの…

cyberagent/open-calm(日本語大規模言語モデル)をAWS SageMakerで動かす

概要 こんにちは。サーバーサイドエンジニアの窪田です。 ChatGPTやGoogle Bard、そのほか色々な生成AIが次々と世の中に出る中、ソフトウェアエンジニアのあり方も変わっていきそうですね。 ヤプリ社内でも生成AIについての話題はかなり盛り上がっています。…

trocco で App Store のレビューをスプレッドシートへ書き出す

こんにちは!データサイエンティストの山本( @__Y4M4MOTO__ )です。 ヤプリは去年、 レビューダイアログ機能 をリリースしました。これによりレビューを用いた効果検証を行いたい場面が増えています。そのため、現在、 iTunes Search API と trocco を使っ…

SQLite3で管理していたデータの一部をMySQLに移行した

サーバーサイドエンジニアの田実です! YappliのサービスではコンテンツデータをSQLite3で管理しています。SQLite3を使っている理由や課題の詳細は以下の記事に書いています。 tech.yappli.io コンテンツデータ以外にもアプリやアカウントのデータもコンテン…

Yappli CRMの開発者体験を3ヶ月で爆上げした

サーバーサイドエンジニアの田実です! ヤプリではスマホアプリをノーコードで開発できる Yappli のプロダクトだけではなく、アプリや外部システムと連携可能な顧客管理基盤である Yappli CRM というプロダクトも提供しています。Yappli CRMのバックエンドの…

セキュリティSaaS「Shisho Cloud」を使ってAWSリソースの設定値診断を行ってみた

こんにちは!SRE三橋です。 突然ですがSecurity Hub使っていますか?AWSを利用している企業様であればAWS Security Hubで継続的なセキュリティコンプライアンス対応状況の可視化、対策を実施していることが多いかと思いますが、今回はサードパーティ製のセキ…

Aurora MySQL のスローログを BigQuery に取り込んでみた

SREチームの中原です。 今回は Aurora MySQL のスロークエリーのログを BigQuery に取り込む方法について書いてみます。 TL;DR Aurora からスローログを取得するには CloudWatch Logs から awslogs コマンドでもってくるのが楽だよ スローログをパースさせる…

Goで2地点間の距離を緯度経度を使って求める

Go

はじめに こんにちは。サーバサイドエンジニアの中川@tkdev0728です。 最近距離計算を行いたい場面があり、色々と調べていて実装はできたんですがGoで実装しているかつ日本語の情報が多くなかったので今の記事を書いています。 使うもの 算出方法 算出するに…

ヤプリでChatGPTを活用したプッシュ通知作成支援ツールを作ってみた

みなさんどうもこんにちは、ヤプリでデータサイエンティストとして1ヶ月間インターンに参加させていただきました、高橋(@jorijorl)です。本記事ではインターン中に取り組んだ、ChatGPTを活用したプッシュ通知生成について紹介したいと思います。 サマリー Ch…

フロントエンドチームの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…