Yappli Tech Blog

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

Goのnet/httpパッケージを理解する

Go

はじめに こんにちは、サーバーサイドエンジニアの喜田です。 Goにはnet/httpというHTTP クライアントとサーバーの実装を提供してくれるパッケージがあります。 普段の開発でnet/httpパッケージを使っているのですがGoの経験がまだ浅いということもあり、仕…

SRE NEXT 2022でヤプリのセキュリティの取り組みについて発表しました

SRE

ヤプリの望月です。 最近結婚10年を迎えましたが、スイートテンダイヤモンドという古来からある風習の圧力に屈していました。 話は変わりますが、先日2022-05-14,15に開催されたSRE NEXT 2022で、ヤプリのセキュリティの取り組みについて発表させていただき…

Go Conference 2022 SpringでPHPからGoへの移行について発表しました

Go

サーバーサイドエンジニアの森谷です。 Go Conference 2022 Springに"Go"ldスポンサーとして登壇してきましたので、その後日談記事になります! 登壇内容 「創業以来のPHPシステムが生み出した混沌をGoへの移行で乗り越えた話」について発表しました。 gocon…

Go Conference 2022 Springに"Go"ldスポンサーとして協賛・登壇します!

Go

サーバーサイドエンジニアの森谷です。 もうすぐGo Conference 2022 Springが始まりますね。 前回とはまた打って変わったセッションが並んでおり非常に楽しみです! gocon.jp ヤプリはGo Conference 2022 Springに"Go"ldスポンサーとして協賛しています!! …

PHPerKaigi 2022 にダイアモンドスポンサーとして協賛しています!

PHP

サーバーサイドエンジニアの田実です。 もうすぐ PHPerKaigi 2022 が始まりますね! 今回も面白そうなセッションばかりで非常に楽しみです。 phperkaigi.jp ヤプリは PHPerKaigi 2022 にダイアモンドスポンサーとして協賛しています!! ヤプリは創業期からP…

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

Go

サーバーサイドエンジニアの森谷です。 前回の記事に続いて、今回はsqlxパッケージについて見ていこうと思います。 簡単なおさらい 前回はdriverパッケージとsqlパッケージを読みました。 driver.Driver インターフェースを満たす型を実装し sql.Register で…

デザインシステム構築に向けた Figma API によるCSSカスタムプロパティの自動生成

こんにちは。フロントエンドエンジニアの小林(baco16g)です。 この記事では、YappliのCMSにおけるデザインシステムを構築に向けた準備をしている話を、エンジニア視点でお伝えします。 デザインシステムが求められた背景 YappliのCMSは、2019年にシステム…

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

Go

サーバーサイドエンジニアの森谷です。 弊社ではDBの一部にSQLiteを使っており、SQLiteからのSELECT結果を構造体にパースする部分の処理について調べごとをしていたのですが、その中で「SELECT結果をモックできたら楽に手元で色々確認できないかな」という疑…

YappliにおけるgRPC, Protocol Buffers運用について

サーバーサイドエンジニアの田実です! Yappliでは各APIの通信にgRPC, Protobufを採用しています。 本記事ではYappliにおけるgRPC, Protobufの利用方法・運用方法についてご紹介します! 利用箇所 以下のAPI通信においてgRPCを利用しています。 用途 プロト…

BigQueryで異なる粒度の集計をまとめて実施する【Sexy Tech for You #11】

データサイエンティストの阿部です。この1年間、毎週土曜日に8時間副業していました。結果、週休二日制のありがたみがわかりました。 さて、明日から使いたくなるデータハンドリング術を紹介する "Sexy Tech for You" の第11話を配信しました。例えばDAUとMA…

[Swift] 親クラスのプロパティへのアクセスを禁止したい

こんにちは、ヤプリの三縞です。 iOSアプリの開発を進める中で、クラスの外からそのクラスの親のプロパティへのアクセスを禁止したい状況がありました。 今回の記事では実際の事例を紹介しながら、どのように解決したのかを説明したいと思います。 実際にあ…

ヤプリの開発体制について

こんにちは、エンジニアの山田です。 前振り一切無しですが、弊社オフィスから徒歩3分のところにイケてるスタバが出来たらしいです。 仕事帰りのフラペチーノが楽しみですね ( ゚∀゚)レッツトッピング!! オフィスから徒歩3分の所にイケてるスタバがオープンしたと聞…

BigQueryのJSONデータで、同一のJSONキー名がある場合に全ての値を取得する【Sexy Tech for You #10】

データサイエンティストの阿部です。今さらながら『劇場版 少女☆歌劇 レヴュースタァライト』を映画館で観たのですが衝撃的でした。 さて、明日から使いたくなるデータハンドリング術を紹介する "Sexy Tech for You" の第10話を配信しました。僕は「とりあえ…

SQLite3入門

サーバーサイドエンジニアの田実です! YappliはSQLite3を使ったマルチテナントアーキテクチャを採用しています。 今回は、SQLite3の運用でよく使うコマンドやちょっとマニアックな仕様についてまとめてみました! CLIでクエリ結果を縦に表示したい MySQLで…

ヤプリのフロントエンドチーム@2022年を紹介します

こんにちは、フロントエンドの山田です。 補足すると別記事にも登場する「サーバサイドの山田」と同一人物です。 現在はサーバサイドとフロントエンドを兼務してます。 tech.yappli.io さて、今回はフロントエンドの山田として、私達フロントエンドチームに…

PHPのちょっとした静的解析をGo+GitHub Actionsで実施するようにしてみた

こんにちは、エンジニアの尾宇江です。 goでプルリク作ってリリース作業を改善してみた。のエントリーに引き続き、Goを使ったちょっとした改善をした話です。 最初に 書いたコードをcommitした後、「あープリントデバッグで仕込んでたvar_dump消し忘れた」っ…

goでプルリク作ってリリース作業を改善してみた。

Go

こんにちわ、エンジニアの山田です。 2022年始まって1ヶ月ですが、これだけWeb3がもてはやされると、自分もヤマダ2ぐらいにはならないとヤバいのではという危機感を覚えますね。 これだけWeb3がもてはやされると、自分もツノダ2ぐらいにはならないとヤバいの…

突撃!隣のリモートワーク環境

プロダクト開発本部 インテグレーションエンジニアの尾宇江です。 職種も名前も珍しいので…オーイェーって覚えてください。 Yappliでもリモートワークを行っているのですが、「そういえばあの人とリアルであったこと一度もないかも」って状況も出てきました…

gRPC-Gateway v2へのアップグレードで対応したこと

サーバーサイドエンジニアの田実です! YappliではネイティブアプリのAPIでgRPC-Gatewayを使って実装しています。 今回は、gRPC-Gatewayをv1からv2にアップグレードしたときに対応したことを紹介します! マイグレーションガイドはこちら↓ github.com 1. Go…

Dropbox 上のファイルやフォルダを任意のサイトに埋め込む

ITグループの原口です。 最近親子でトランポリンにハマり、面白そうなトランポリン施設を夜な夜なチェックしているトランポリンエンジニアをやっています。 はじめに Yappliでは外部との情報共有はDropboxの利用を推奨しています。 利用に際してファイルやフ…

GitHub Actionsで特定のブランチへのプルリクだけレビュワーをランダムに抽選してみた

あまり聞き慣れないインテグレーションエンジニアという職種の尾宇江です! 今回は、GitHub Actions と GitHub Teamsのauto assignmentで、特定のブランチに向けたプルリクだけレビュワーをランダムに抽選してみた件を紹介します。 やりたかったこと 「プルリ…

json.Unmarshalでmap[string]interface{}型にパースするときの注意点

Go

サーバーサイドエンジニアの田実です! 今回はGoの json.Unmarshal 関数で map[string]interface{} の型を指定したときに発生していた事象とその対策を併せて紹介します! なにが起きていたか 以下のように任意のキー、バリューを含むJSON文字列を map[strin…

npm v7におけるsudo run scriptがスーパーユーザーで実行されず、ハマった

npm v7へのマイグレーション直後、`sudo npm run script`が期待通りの動作をしませんでした。そこで、各種パッケージのコードリーディングをして、原因を突き止めました。

CSSスプライトを使用して、簡単にぐるぐる動くアニメーションを実装しました。

はじめまして。フロントエンドエンジニアの相原と申します。 普段はYappli CMSのUIを実装しております。 通常業務で大きく動くアニメーション等を実装する機会はあまり(と言うか殆ど)無いのですが今回久しぶりにそういった機会に恵まれたのでその辺りの事…

ヤプリ初のアドベントカレンダー振り返り

メリークリスマス! ヤプリのテックブログ編集長を担当している望月です。 近況としては、長女がサンタさんに高額なプレゼントをリクエストしましたが、コロナ下におけるサンタさん事情を説明して別のプレゼントにするための説得に注力しておりました。 この…

GoでS3 Batch Operationsを用いたS3間大量コピーを実現する

サーバーサイドエンジニアの森谷です。 業務の中でS3からS3への大量オブジェクトコピーを行う必要が生じたのですが、これが思いの外簡単には実現できず、またGoから利用している記事もあまりなかったため今回はその実装などについて備忘録的にまとめようと思…

Goのin-memory cache packageについて調査してみた

サーバーサイドエンジニアの鬼木です! 今回はGoのin-memory cache packageについて調べてみた記事になります。既存機能の拡張でin-memory cacheを使う必要があり調査したことが背景としてあります。 以下について比較、調査しました。 github.com/allegro/b…

Selenium × ECS × APMツールで作る管理画面ログインhealthcheck

サーバーサイドエンジニアの鬼木です! 今回はYappliのCMSにログインできるかどうかを確認、通知するhealthcheck機構を導入した記事になります。 とあるサービス障害で一時的にCMSのログイン認証機構に障害が発生し、標準的なTCPレベルのhealthcheckでは検知…

自宅環境で Log4j 脆弱性対応を行う

(こちらの記事はヤプリ Advent Calendar 2021 16日目の記事になります。) プロダクト開発本部の佐藤です。 先月末より徐々に世界的にLog4jの抱えていた脆弱性の話題が盛り上がり、実務でも調査・対応に追われた方も多いのではないでしょうか。 www.jpcert.…

最高のノベルティを作った話

こんにちわ、サーバーサイドエンジニアの山田です。 急に寒くなってきましたね、出オチですが今回はこちらの件です。 CFOと久しぶりに真剣に会議。していて1時間経って気づいた。俺やん! pic.twitter.com/yvvWUQuewU— 庵原保文(Yappli ヤプリCEO) (@ihaem…

Copyright © 2021 Yappli, Inc. All rights reserved