サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
developer.so-tech.co.jp
CTO室所属の高橋と申します。皆からはニャンさんと呼ばれております。そして私は特に無茶振りはされていません。 さて、developブランチに変更が入ったらdev環境にリリース、mainブランチに変更が入ったら本番環境にリリースを行う仕組み、いわゆる継続的デリバリーを構築しているプロジェクトは多いことと思う。我々のチームではCircle CIで行なっていたが事情があってGithub Actionsに移行することになった。ところがGithub Actionsではdevリリースと本番リリースの手順をどう共通化すればいいのか分からず迷ってしまった。 近年のソフトウェア開発の現場ではCI/CDは当たり前になっているが、もはや当たり前すぎて逆にまとまった情報がネット上にないのかもしれない。であれば得られた知見は共有しておくべきだろう。 結論から言うとジョブの共通化には再利用可能なワークフロー用いるのが
こんにちは、CTO室の丸山です。相変わらず某CTOからの無茶振りを捌いております。 今回は、今開発しているSaaSサービスのER図を、なるべく手をかけずに最新状態に保ちながら、いつでも閲覧できるようにするために実践したことをご紹介できればと思います。 前提環境 今回ご紹介する方法は以下の環境下で実現しています。 インフラ: GCP データベース: PostgreSQL データベースのスキーマ管理: sql-migrate CI/CD: Github Actions モチベーション 開発・データ分析を行う上で、データベースのスキーマ構造を俯瞰的に把握するための手段としてER図を書いているのですが、これを最新の状態に保ち続けるのは割と面倒であると常々感じていました。 そこで、Schemaspyを使用してデータベースのスキーマ構造からER図を生成するようにしたものの、以下のような手順をスキーマ構
こんにちは。 新規プロダクト開発に携わっているエンジニアの島田です。 今年2023年の5月にNext.js 13.4がリリースされました。このリリースで、これまでのアーキテクチャ (今ではPages Routerと呼ばれるようになりました) を大幅に刷新した、App Routerが安定版となりました。 上記リンクにある通り非常に情報量の多いリリースとなり、果たしてこのApp Routerを現時点で採用するべきなのかどうかについて、多くのプロジェクトで関心が高まっているかと思います。 この記事ではその採用可否の判断の一助になるよう、App Routerが提供する既存のものから大幅に刷新されたキャッシュ機能について、それぞれの概要に加えて開発を進める上で便利な点や注意点を解説していきます。 4つのキャッシュ機能 App Routerのキャッシュ機能は4つの種類に大別されます。以下それぞれ見てい
ATOM開発チームのバックエンドエンジニア、にゃんと申します。 現在のWebアプリケーション開発ではバックエンドとフロントエンドで職種が別れているのが一般的になってきましたが、バックエンドエンジニアだからと言ってフロントの知識が不要というわけではありません。私も自分なりに様々なフロントエンドフレームワークに触れていますが、バックエンドをメインとするエンジニアとって1番使いやすいのはSvelteではないかと考えています。 というわけで今日はバックエンドエンジニアが見たSvelteという話をしたいと思います。 Svelte(すべると)って何? SvelteはReactやVueなどと同じコンポーネントベースのフロントエンドのアプリケーションフレームワークです。以下のような特徴があります。 コンパイル時にコードを最適化することで、小さく、高速なアプリを構築できる リアクティブプログラミングを簡単に
こんにちは。 ATOM事業部の田村です。 今回は、MySQL の高速化の手段として、InnoDB エンジンをオンメモリで使った場合のパフォーマンスについて調査してみました。 はじめに MySQL には InnoDB エンジンだけではなく、他にもいくつものストレージエンジンがあります。 その中でも MEMORY エンジンは、その名の通りデータをメモリ上に持つため、処理が極めて高速という特徴があります。 ただし InnoDB とはいろいろ違う部分があり、InnoDB で使えていた SQL がそのまま通るわけではありません。 単に「高速化したい場合は InnoDB の代わりに MEMORY エンジンを使う」というわけには行かず、使い方・使い所をそれなりに考えてやる必要があります。 (詳細は Web 上に良質な記事が見つかるのでここでは省きます) MEMORY エンジンが真価を発揮するのは、キャッ
1. はじめに こんにちは。ATOM事業部フロントエンドテックリード兼デザイナーの河原です。 本記事ではWEBデザインにAI技術を活用する方法を実例をまじえて紹介します。 今回はChatGPTとMidjourneyを使います。 ChatGPT OpenAIが開発した大規模な自然言語処理AIで、文章生成や文章の理解など、様々なタスクに対応しています。 Midjourney AIを活用した画像生成ツールで、キーワードを入力することで独自の画像を生成します。アート性の高い画像を生成することができます。 2. 実例: シンプルなエラーページの作成 2.1. 作成する画面について ATOMのエラーページを題材にします。現在のデザインはこんな感じです。 くじらがチャームポイントのとてもシンプルなデザインとなってます。今回はこちらの別バージョンを作成してみたいと思います。 2.2. ChatGPTでコン
こんにちは、ATOM事業本部のプロダクト開発グループの松尾です。 広告媒体からのデータ取得処理や集計前の加工処理などを中心にバックエンドエンジニアとして開発を行ってきました。 最近は新レポートや進捗管理機能の開発を行っています。 ATOMのリニューアル版では、新レポートや進捗管理機能の媒体データの実績値の集計をclickhouseというデータベースを採用しております。 長らく苦戦し続けていましたが運用が安定してきたので、採用経緯から苦戦してきた過程について、簡単にご紹介させていただければと思います。 採用経緯について mysqlから集計処理を切り出したいと思った際に、1つの候補として挙がるのではないしょうか? 実際に調査をしてみると、select, insertが圧倒的に早い!!となるはずです。 そして、扱うデータ量が多くなればなるほどに、mysqlとの集計処理の性能差に驚くはずです。 同
こんにちは。ATOM事業部エンジニアのyuinaです。 Githubの Draft Pull Request という機能をご存知でしょうか? とても便利な機能のため、ご紹介します。 github.blog Draft Pull Request を使うメリット 通常、PullRequestを作るのは以下のタイミングかと思います。 作ったコードをマージしたい時 作ったコードをとりあえず見てほしい時 コードの実装方針についてディスカッションをしたい時 コードをマージしたい時は通常のPRをそのまま出し、コードをマージしたい時以外はWIPをつける運用が一般的ではないでしょうか。 WIP管理には様々な方法があると思います。 開発者間でのルールのみで運用することもあるでしょうし、Github AppsのWIPというアプリを導入するのもよく見る光景かもしれません。 github.com もしアプリを導入す
「休憩中Gopherくん」 Powered by Gopherize.me - A Gopher pic that's as unique as youThe Gopher character is based on the Go mascot designed by Renée French はじめに このブログを書こうとしたきっかけ 目的 用語の意味 メモリ レキシカルスコープ GC アロケーション コンパイラ ランタイム 「Where Go Values Live」について スタック ヒープ スタックとヒープにそれぞれ割り当てられる場合 終わりに 参考にさせていただいた記事 はじめに こんにちは!!!!ライクル事業部エンジニアの黒田(@knkurokuro7)です。 画像のGopherくんみたいに休憩中はよくコーヒーを飲んでいます!笑 今日もGoについてブログを書こうと思います! こ
ATOM開発チームの上野です。 普段はGo言語を使ってAPIサーバやバッチ処理機構の実装などを担当しています。 今回はATOMのAPIサーバのプロジェクトにおける マスターデータの運用手法をご紹介します。 マスターデータとは マスターデータはサービスを動かす上で必要な基本的な情報であり、 サービスを提供する側が定義するデータになります。 ATOMでは、設定画面で選択できる項目やそのカテゴリ情報など さまざまなデータをマスターデータとして扱っています。 マスターデータは各ユーザが登録した情報と比較して データ量が少なく、更新頻度が少なく、参照される頻度が多いという特徴があります。 マスターデータの運用 ATOMではバックエンドのサービスでマスターデータを利用するために リレーショナルデータベースにインポートする形式にしています。 マスターデータの更新作業以下のフローで行っています。 Goog
こんにちは、こんばんは医師崎です。 業務でslack event apiを使ったのでその時に設定した事などをまとめます。 slack event api とは EventAPIは、Slack内で起きたイベントをトリガーに、発生した内容をApp指定のURLに送る仕組みです。インターネット経由でコールバックを受ける仕組みです。Slackが送信元になり、HTTPSで待ち受ける形式です。 slack appの設定 まずは Slack API: Applications | Slack にアクセスし、Create New Appからslack appを作成します。 slack appの権限設定 左側のメニューからOAuth & Permissionsをクリックし、Bot Token ScopesのAdd an OAuth Scopeをクリックし、必要な権限のScopeを追加します。 scopeはap
こんにちは、ライクル事業部 エンジニアの菊池@kichionです 現在、ライクルでは大きく2チームで分かれて開発を進めており、私は技術負債解消を行うチームでシステム改善を行っています ライクルでは早すぎたマイクロサービス化によりコードベースが30近いGithub repositoryに分散しており、システムツールのrepositoryを含めると50のrepositoryが存在していました。 アジリティ向上のため、コンテキストをまとめrepositoryを17個削ったのでその方法論を紹介したいと思います 背景 分散モノリスとの闘い 1. 重複コード・知識の分散を"なるべく"解消する 2. 使っていない・今後の仕様に耐えられない機能を消す 3. メンテナンスが辛くなったrepositoryの整理 4. 問題の複雑化を招いていたデータソースの整理 5. コンテキスト毎にrepositoryをまと
こんにちは、ライクル事業部 エンジニアの菊池@kichionです 去年(2021年)からフロントエンド環境の立ち上げを行い、現在はバックエンドに戻ってきて技術負債の解消などを中心にシステム改善を行っています 現在システムのリプレイスなどでデータ設計から見直すこともあり、イベントデータをRDB(MySQL)のトリガーで生成しようと取り組んでいたところで罠のようなAWS RDSの仕様に引っかかってしまったのでその内容を紹介します 前提 AWS RDS(MySQL) バックアップ 事件 調査 原因 解決 検証 まとめ 前提 AWS RDS(MySQL) AWSで使えるRDBサービスです ライクルではデータベースエンジンでMySQL(Auroraではない)を利用しています 記事を書いている時点ではver 5.7.33を利用しています バックアップ AWS RDSではいくつかバックアップ方式がありま
こんにちは。ATOM事業部フロントエンドテックリード兼デザイナーの河原です。 今回は Next12が提供する React Server Components について調べてみました。 サーバサイドでコンポーネント単位でレンダリングするというのが意味不明だったので、気になってました。 React Server Componentsとは nextjs.org React Server Components allow us to render everything, including the components themselves, on the server. This is fundamentally different from server-side rendering where you're pre-generating HTML on the server. With Se
こんにちは、ライクル事業部 エンジニアの菊池@kichionです 去年(2021年)からフロントエンド環境の立ち上げを行い、現在はバックエンドに戻ってきて技術負債の解消などを中心にシステム改善を行っています ライクルでは早すぎたマイクロサービス化により、コードベースが30近いGithub repositoryに分散しており重複コードが散乱している状態でした 今回はコードベースの共通化策としてgolangで書かれた社内用のライブラリを配布する方法を紹介します 前提 外部API 開発言語 Github Organization 解決したかった問題 社内ライブラリ配布 配布フロー 各項目 配布元の構成 Github Actions workflow 配布先の構成 Github Actions workflow GOPRIVATE 終わりに 前提 外部API ライクルでは事業ドメインとしてGoog
Photo by Michael Longmire on Unsplash こんにちは。並河(@namikawa)です。 最近は、朝晩がずいぶん冷え込んできまして、まだ秋かと思いきや既に冬に突入しそうな雰囲気です。どちらもラーメンが美味しいことに変わりはありませんが。 そして、このテックブログはメンバーで持ち回りにしているのですが、今回から2巡目になります。開設してから約4ヶ月。思ったより早いw さて、今回のエントリではAWSのコスト削減の話をしようかと思います。 弊社で稼働させているプロダクト・サービスの基盤は、基本的にAWSを採用しており、コスト感でいうと、AWSだけで月額数百万円くらいの規模感です。 おかげさまでサービスの伸長に伴い、この1年くらいで特にこれらの基盤コストも伸びてきているので、コスト削減の取り組みをぼちぼちしていかねば、というところで、いくつかの切り口で施策に取り組ん
目次 この記事で書いていきたいこと(何故このテーマか) 軽く自己紹介 私は誰か どういうことをしてきたか 今何をしているか SOTに入ったきっかけ 入社した時の事 コロナ時代の幕開け リモートワーク(実家&一人暮らし) 入社後の事 試行錯誤期 画期的な出会い チームの事 最近の事(久しぶりの再会) まとめ この記事で書いていきたいこと(何故このテーマか) コーヒーを飲みながら仕事をする…してない私 こんにちは、SO TechnologiesでATOMという製品開発に関わっている戸田です。 初めてテックブログを書かせていただく事になり動揺から筆が全く進んでいませんでしたが、今回は地方からフルリモートワークで働かせて頂いている自分の事例についてご紹介しようと思います。 こういう風に働いている人もいる会社なんだな、という参考になれば幸いです。 軽く自己紹介 私は誰か 高知県の真の田舎出身で、高校
はじめまして。ATOM事業部 デザイナー、ポニーテールのponyです。 事業部専属のインハウスデザイナーのため、普段の業務はバナーやロゴのグラフィックの作成からATOMのUIやUXの提案、WEBサイトのデザインやコーディングなど幅広く業務を行っています。 今回は、ATOMの機能リニューアルのためにユーザビリティテストを行いました。 サービス概要 ATOM ATOMのユーザー SO Technologies株式会社の社員 ユーザーヒアリングについて テレワーク環境下おけるヒアリングの重要性 ユーザーテスト(ユーザビリティテスト)とユーザーインタビューとは ユーザーテスト(ユーザビリティテスト) ユーザーインタビュー ヒアリング(ユーザーテストとユーザーインタビュー)方法 ヒアリングの前準備 ヒアリング当日 ヒアリングの際に気をつけたこと テレワーク環境下のヒアリングのメリット テレワーク環境
こんにちは。ATOM事業部エンジニアの松尾です。 普段は、広告媒体からのデータ取得処理やAPI実装を行っています。 最近、同一システム内で顧客ごとにDBを分ける対応を進めています。今回は、こちらについてご紹介させていただきます。 マルチテナントとシングルテナントについて まずはマルチテナントとシングルテナントについて説明させてください。 マルチテナント マルチテナントとは、複数のユーザが同じ1つのシステムやサービスを共有する仕組みです。 こちらのアーキテクチャは、SaaS型のサービスの多くで利用されています。 メリットは、リソースや運用コストを大幅に削減でき、低コストで導入可能です。 シングルテナント シングルテナントとは、複数のユーザがユーザごとに1つのシステムやサービスを占有する仕組みです。 こちらのアーキテクチャは、PaaS型のサービスの多くで利用されています。 メリットは、ユーザご
こんにちは。ATOM 事業部エンジニアの田村です。 広告媒体からのデータ取得処理や、レポート生成処理の開発・保守をしています。 今回は Lambda を使って巨大なファイルを処理する方法を紹介します。 また、S3へのアップロードをストリームで行う方法について、検索してもそれらしい日本語の情報が少ないので、ついでにここでやり方を紹介します。 ストレージをどうするか EFS メモリ 番外 EC2 ストレージに保存しない方法 例 : hash 計算 例 : gzip 圧縮 S3 へストリームアップロード (あまりエレガントでない)解決法 コスト おわりに ストレージをどうするか Lambda での巨大ファイル処理の際に問題となるのがストレージです。 512 MB しかないため、それ以上のファイルサイズを扱うことができません。 AWS Lambda 実行環境 - AWS Lambda 各実行環境は
こんにちは。AG-Boost事業部開発部の宇野です。現在AG-Boostというサービスのフロント、バックエンドの開発を行っております。最近Google Analytics(以下GA)のデータを取得した時のことについて紹介していきます。 事前準備 まずGoogle APIにアクセスするための認証情報を取得する必要があるのでその作業から始めていきます。 Google Cloud Platformでプロジェクトを作成する 以下のリンクから新規プロジェクトを作成します。 https://console.developers.google.com/projectcreate Analytics APIを有効化する。 以下のリンクから検索をかけGoogle Analytics Reporting APIを探します。 https://console.developers.google.com/apis/
こんにちは。 データ戦略室の小宮です。 データ戦略室では主に、弊社の各プロダクトのデータを活用しやすいように データを集めたり、分析基盤の構築を行なったりしています。 今回は分析基盤構築の一環で作成した「BigQueryコスト管理ダッシュボード」の作り方を一部ご紹介します。 作ろうと思った背景 概要 前提として 利用するサービス 手順 やってみよう 1.BigQueryのログ出力設定 2.ログからコスト算出 3. GoogleDataPortalからカスタムクエリで接続する 4. グラフを作成する おわりに 作ろうと思った背景 データ戦略室は2021年2月に立ち上がった新しい部署で、 現在はデータパイプラインを構築し、必要なデータを弊社各プロダクトから収集しているフェーズです。 ですので現段階では分析基盤であるBigQueryの利用ユーザはそれほど多くはないのですが、 今後データが豊富に集
こんにちは。ATOM事業部フロントエンドテックリード兼デザイナーの河原です。 ATOMでは現在大規模なリファクタリングを実施してます。 今回はその一環で ビジュアルリグレッションテスト を導入した事例を紹介します。 はじめに ビジュアルリグレッションテスト(VRT)とは 名前の通り見た目をテストするための手法です。 実際にブラウザにレンダリングした際のスクリーンショットを改修前後で比較し、ピクセル単位で差分を検出します。 一般的なE2Eテストコードでは検出困難な意図しないデザイン変更を検出することができます。 VRTの例 VRT導入で実現したかったこと バグの削減と早期発見 回帰テストの工数削減 これにより積極的なリファクタリングを可能にしたい 上記をなるべく楽して実現したい テストは費用対効果が大事ですよね。。 ATOMとは www.atom.tools ATOMは運用型広告統合管理プラ
はじめまして、ライクル事業部 エンジニアの菊池@kichionです。 普段の業務では主にエンジニアチーム運営・運用の課題解決やビジネスサイドとのやり取りが多く、中長期目線でのアプローチを行っています。 エンジニアとして行っている技術選定や実装関連についてはZenn - kichionにも投稿していますので興味があればご覧になってください。 今回はライクル事業部として少しづつ取り入れ始めている「ドメイン駆動開発」に焦点を当てて見ます (ドメイン駆動に関わる内容については、端的ですがQiita - kichionにも投稿してますので気になったらご参照ください) ドメイン駆動開発(DDD) ドメイン ドメインモデリング 技術的要素 ドメイン駆動開発の目的 ドメイン駆動開発を浸透させるための取り組み ドメイン駆動開発 勉強会 ドメインオブジェクト整理会 今後やっていきたいこと 続・DDD勉強会 現
DKIM (Domainkeys Identified Mail) という公開鍵をSESに登録したメールアドレスに設定しないとG Mail(G Suite)等のメールサービスが提供するメーリングリスト(ML)にメールが届かないことがあります。 ということについて書こうと思います。 自己紹介 こんにちは。 AG-Boost事業部の開発責任者の清水(@shimizu_yoo)と申します! 現在はAG-Boost という広告提案支援をするツールの開発をしております。 今日はタイトルの通り社内のシステムにおいてAWSのSESを使ったときにDKIM設定が原因で起きたなかなか気づけなかった障害の話をしようと思います。 AWS SESについて 多くは説明する必要ないと思うので省きますが、SES(Simple Email Service)はAWSにおけるメール送信サービスです。 aws.amazon.co
はじめに はじめまして、ライクル事業部 エンジニアの府川(@fuppi)です。 職種はエンジニアなのですが、最近はコーディングより "皆が生産性高く働ける環境作り" をメインミッションとして活動をしています。 コロナ禍による職場環境の変化 コロナ禍でリモートワークが増えた会社では、チームメンバーとのコミュニケーション量が減ってしまったのではないでしょうか? 出社していたら毎日のようにしていた挨拶や雑談。一緒にランチに行ったり、夜は飲みに行ったり、そういうことの積み重ねでメンバー間での信頼関係が築かれていたと思います。 信頼関係の重要性 信頼関係が築けている環境では、以下のようなメリットがあると思います。 困ったときには気軽に相談できる 雑談から、より良いアイディアの創出ができる つながりを感じられるだけで精神的に楽になる ただ、「メリットはわかっているものの、リモートワークで気軽なコミュニ
こんにちは。 新規プロダクト開発のテックリードとして働いている島田 (@curryisdrink) です。 去年までエストニアという国に住んでいたのですが、コロナが原因で緊急帰国しまして、縁あって今はここで働かせて頂いています。 入社の経緯を以前記事にして貰ったので、もしご興味ありましたらこちらもご覧ください。 https://pr.forkwell.com/2021-05-25-so-tech ECS タスクからの秘匿情報の参照について 現在開発しているアプリケーションは、ECS + Fargate で実行するようになっています。 開発の際に調べたところ、AWS 公式の見解としては、秘匿情報の扱いに関して、それらをまず AWS Secrets Manager 及び AWS Systems Manager Parameter Store に格納し、その後コンテナの環境変数として参照できるよ
はじめに 記事のターゲット とある一週間の 1 日目(木曜日) とある一週間の 2 日目(金曜日) とある一週間の 3 日目(月曜日) とある一週間の 4 日目(火曜日) とある一週間の 5 日目(水曜日) 終わりに はじめに どうもみなさまはじめまして。 ライクル事業部エンジニアの hada@nus3_です。 普段は、ふろんとえんどりーだー的なことをやってたりします。 たまーにZennに記事を書いてたりもします。 ついにSO Technologies(SOT)のテックブログができました! 多分、詳細はうちの CTO が別記事で書いてくれると思いますのでお楽しみに! そんなウチのテックブログの最初の記事の担当になりました。(うっ・・・) まぁ一発目だからといって気負わず張り切りすぎず、 今回は hada がライクルチームでどのように 1 週間働いているのかをゆるーくご紹介します。 記事のタ
このページを最初にブックマークしてみませんか?
『SO Technologies 開発者ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く