ブックマーク / tech.classi.jp (40)

  • dbtを導入した話、そしてClassiのデータ基盤「ソクラテス」の現在地 - Classi開発者ブログ

    こんにちは、データプラットフォームチームの鳥山(@to_lz1)です。 Classiでは、2019年ごろからデータ基盤に「ソクラテス」の愛称をつけて運用を続けています。初期の構成は2021年に書かれたエントリ*1にも詳しいですが、数年の間に進化したことも増えてきました。 大きな変化の一例として、最近、私たちのチームではdbt*2を導入してジョブ間の依存管理やメタデータの管理を改善しました。 記事ではこの取り組みをピックアップして紹介します。また、進化したソクラテスの構成図をアップデートするとともに、Classiデータプラットフォームチームの最新版の雰囲気もお伝えできればと思います。 dbt移行前の構成 ジョブ間の依存管理がつらい メタデータの管理がつらい 過去との差分と、移行への機運 周辺ツールのエコシステムが整った エンジニア以外のメンバーがPull Requestを出すことが減った

    dbtを導入した話、そしてClassiのデータ基盤「ソクラテス」の現在地 - Classi開発者ブログ
    yug1224
    yug1224 2024/05/30
  • Classiは技術コミュニティの勉強会・ミートアップに会場提供を行います

    はじめに ソフトウェアエンジニアの onigra です。タイトルの通り、Classiは技術コミュニティの勉強会・ミートアップ等に、自社のイベントスペースを会場として提供致します。 昨今、オフラインでの勉強会・カンファレンス・ミートアップの盛り上がりを強く感じており、RubyKaigiはもちろんのこと、 Omotesando.rb などをはじめとした地域Ruby Meetupもオフライン開催がされるようになってきました。私も先日再開した Shinjuku.rb のドリンクアップに参加してきました。 参加者と交流する中で、今後の会場探しに困っていると伺ったので、西新宿にオフィスがあるClassiも会場提供できるという話をし、その流れからオーガナイザーの1人である tdakakさん より運営参加のお誘いを受けたので、引き受けることにしました。 Shinjuku.rbの再会&運営参加の経緯について

    Classiは技術コミュニティの勉強会・ミートアップに会場提供を行います
    yug1224
    yug1224 2024/05/01
  • たった1行のPRでチームの"速さ"を可視化できる計測基盤を作った話 - Classi開発者ブログ

    こんにちは、データプラットフォームチームの鳥山(@to_lz1)です。エンジニアの皆さん、自分のチームのパフォーマンス、計測していますか? DevOps Research and Assessment(DORA)の2019年のレポート により、開発チームのパフォーマンスを示す指標として提唱された「Four Keys」。この中に「デプロイ頻度」「変更のリードタイム」という指標があります。 『LeanとDevOpsの科学』など有名な書籍で取り上げられたこともありFour Keysそのものが広く知られるようになりましたが*1、この度Classiでもこれらの指標を可視化するダッシュボードを構築し、社内提供を始めました。 計測の事例がインターネット上に多くある中でも、 横展開を極力容易にするための設計 リリースをしてみてから「実際に役に立てる」までの工夫とフォローアップ といった辺りに独自性があるか

    たった1行のPRでチームの"速さ"を可視化できる計測基盤を作った話 - Classi開発者ブログ
    yug1224
    yug1224 2024/03/16
  • リードタイムを測るシェルスクリプトを作ってチームの振り返り会を活発にした話 - Classi開発者ブログ

    こんにちは。エンジニアのすずまさです。 去年の夏頃にリードタイムの計測を始めてから、振り返りで良い気づきを得られるようになったりリードタイムを減らすアクションが生まれたりと良いことがたくさんあったので、今回はその紹介をしようと思います。 リードタイムの定義 『LeanとDevOpsの科学』では、リードタイムを「コードのコミットから番稼働までの所要時間」として定義しています。 私たちのチームのリポジトリではブランチ戦略としてGitHub Flowを採用しており、mainへのマージと番稼働のタイミングが近しいため「PRをopenしてからマージするまでの期間」をリードタイムとして定めて計測しました。 リードタイム計測を始めた動機 私たちのチームでは「チームのスピードがあまり出ていない気がする」という漠然とした課題感がありました。しかし、課題感はありつつも、ではどうするかと言われると具体的なア

    リードタイムを測るシェルスクリプトを作ってチームの振り返り会を活発にした話 - Classi開発者ブログ
    yug1224
    yug1224 2024/02/29
  • コスト削減成功!Amazon Auroraの監査ログをS3に保存する仕組みを構築した話 - Classi開発者ブログ

    こんにちは。プロダクト部Growth部でエンジニアをしている id:ruru8net です。 前回はこちらの記事を書かせていただきました。 tech.classi.jp 今日は前述したSRE留学中にやったことの中の「Amazon Auroraの監査ログをCloudWatch Logsを経由せずS3に保存する」を紹介したいと思います。 前提 前掲の記事にもある通り、弊社のAWSにかかっているコストを調査したところCloudWatch Logsの特にAmazon RDSの監査ログの保存にコストがかかっていることがわかりました。今回は弊社で最も使用しているAmazon AuroraMySQLのみを対象として、監査ログをCloudWatch Logsを経由せずS3に保存する仕組みを作成しました。 作成した仕組み こちらのオープンソースの仕組みを参考に構築、またLambdaのソースを使いました。

    コスト削減成功!Amazon Auroraの監査ログをS3に保存する仕組みを構築した話 - Classi開発者ブログ
    yug1224
    yug1224 2024/01/18
  • Browserslist + GitHub Packageでサポート対象への対応を簡単にする - Classi開発者ブログ

    こんにちは!エンジニアのすずまさです。 皆さんが開発しているプロダクトでは、サポート対象の OS やブラウザのバージョンは規定されていますか? Classi ではそういった推奨環境が定められています。 ビルド後に推奨環境で動作させるために、社内で GitHub Package として公開された Browserslist の設定ファイルを使ったところ体験が良かったので、今回はその紹介をしようと思います。 Browserslist とは browserslist/browserslist: 🦔 Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-preset-env その名の通り、下記のようなブラウザのリストを記述することで、フロントエンドのツール間でサ

    Browserslist + GitHub Packageでサポート対象への対応を簡単にする - Classi開発者ブログ
    yug1224
    yug1224 2023/12/05
  • 今年はAdvent calendarをやらないと決めた話 - Classi開発者ブログ

    みなさん、こんにちは。日頃からClassi開発者ブログをご覧いただき、ありがとうございます。編集部のid:tetsuro-ito です。 すっかり秋も深まって寒くなってきました。今年の夏は暑く、冬も暖冬傾向が続くそうですが、寒いものはやはり寒いですね。季節の変わり目は体調を崩しやすい時期なので、注意したいところです。 さて、冬になると、IT業界では恒例のイベントとなったAdvent calendarがさまざまな切り口で開催されます。 Classiも2016年から毎年このイベントの企画をやってきました。 Classi Advent Calendar 2016 Classi Advent Calendar 2017 Classi Advent Calendar 2018 Classi Advent Calendar 2019 Classi Advent Calendar 2020 Classi

    今年はAdvent calendarをやらないと決めた話 - Classi開発者ブログ
    yug1224
    yug1224 2023/12/02
  • 「Terraform活用大全 - IaCの今。」に登壇してきました - Classi開発者ブログ

    こんにちは、 Classi でソフトウェアエンジニアやってます koki です。 Findy さま主催の「Terraform活用大全 - IaCの今。 Lunch LT」に「Terraform に test コマンドがやってきた」というタイトルで登壇してきました。 Togetter まとめ イベントのアーカイブ動画は Findy にログインするとイベントページから閲覧できます。 登壇のきっかけ SNS 経由で Findy さまからお声がけいただきました。 よく ZennTerraform に関する記事を書いていたのを見ていただけたようです。 ちょうど最近リリースされたTerraform の test コマンドをキャッチアップしたいと思っていたところだったので、自分の学びのためにも登壇を快諾しました。 これが俗に言う登壇駆動学習ですね。 発表内容 Terraform v1.6 で新しく

    「Terraform活用大全 - IaCの今。」に登壇してきました - Classi開発者ブログ
    yug1224
    yug1224 2023/11/30
  • Step Functions を使って、ECS のワンショットタスクを実行する - Classi開発者ブログ

    こんにちは、プロダクト開発部の藤田です。 今回は Amazon ECS(以下、ECS) と AWS Step Functions(以下、Step Functions) を組み合わせた「ワンショットタスクの実行基盤」についてご紹介します。 「ワンショットタスク」とは、指定されたコマンドやスクリプトを1度だけ実行して、終了するタスクのことです。 このようなワンショットタスクは「プライベートネットワークの内側にあるリソースへのアクセスが必要な、非定型的な操作」を実行する際などに用いられます。 例えば、プライベートネットワークの内側にある DB に対して、以下のような作業をエンジニアが実施する際に、ssh を利用して踏み台サーバーに接続して、決められた手順書を実行する・・・といったような場面を想像していただければ、イメージしやすいと思います。 DB にテーブルを追加するための migration

    Step Functions を使って、ECS のワンショットタスクを実行する - Classi開発者ブログ
    yug1224
    yug1224 2023/11/18
  • 社内npm packageをRenovateで更新する方法 - Classi開発者ブログ

    こんにちは、 Classi でソフトウェアエンジニアやってます koki です。 この記事では、 Renovate によって Classi の社内向け npm package を自動アップデートさせるために行った設定についてまとめます。 概要 Classi では、社内向けの共通ライブラリや Docker イメージなどを GitHub Packages で管理しています。 この GitHub Packages の利用により、それらのプライベートなパッケージを社内の様々なシステムから安全且つ効率的に利用することを実現しています。 例えば、今年の 6 月にプレスリリースが出された学習トレーニング機能を裏で支えているコンテンツ管理システムで利用している GraphQL Schema は GitHub Packages の npm registry でプライベートな npm package として管

    社内npm packageをRenovateで更新する方法 - Classi開発者ブログ
    yug1224
    yug1224 2023/10/27
  • ライブラリのアップデートを自動化した仕組みの紹介 - Classi開発者ブログ

    こんにちは!学習動画・Webテストの開発を行っています エンジニアの daichi (id:kudoa) です。 この記事では、最近チームで導入したライブラリアップデートを自動化した仕組みとその経緯について紹介します。 なぜ自動化しようと思ったか サービスを開発するだけではなく、日々の運用も必要です。 その運用業務の1つとして、ライブラリのアップデートがあります。 これはサービスを運用する上では大切なことではありますが、日々ライブラリアップデートのPRをさばき続けるのも大変です。 その時間をできるだけ減らし、その分空いた時間をユーザーへの価値提供や将来の投資に充てるために、今回の自動化の仕組みを作成しました。 この辺りの話は以前勉強会でLTしたことがありますので、興味があればご覧ください。 作ったもの 前置きは長くなりましたが、凝ったものを作ったわけではありません。 作成したものはライブラ

    ライブラリのアップデートを自動化した仕組みの紹介 - Classi開発者ブログ
    yug1224
    yug1224 2023/10/07
  • 実践OpenTelemetry - Classi開発者ブログ

    こんにちは・こんばんは・おはようございます、エンジニアのid:aerealです。 この記事では筆者が開発に参加しているサービスの監視フレームワークをOpenTelemetryへ移行した際の体験を紹介します。 OpenTelemetryとは OpenTelemetry is an Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. What is OpenTelemetry? サイトの説明にある通り分散トレースやメトリクス、ログなどの指標を扱う監視フレームワークです。 OpenTracingやOpenCensusなどを継承・統合したプロジェクトと言うと合点がいく方も多いのではないでしょうか。 OpenTelemet

    実践OpenTelemetry - Classi開発者ブログ
    yug1224
    yug1224 2023/09/16
  • ユーザーインタビューを経て学んだこととユーザーと話すことのすすめ - Classi開発者ブログ

    こんにちは!プロダクト開発部のすずまさです。 今回は、ある新機能を追加するプロジェクトでユーザーインタビューをしてみたら、予想外の回答がたくさん返ってきて「ユーザーに話を聞きに行っといてよかった…」となった話をしようと思います。 経緯 マネージャーから「CS(カスタマーサクセス)によるとここの機能の改善要望が提案校に対して50%あるみたいです!」と連絡を受けたことをきっかけに、やる価値は大きそうだと判断しプロジェクトが始動しました。 エンジニアとマネージャーで話し合った結果、大きく分けて3パターンのUI案が出揃いました。 3案のうち、どのUIパターンがユーザーに適切かを判断するべく、何校かの学校の先生にアポイントを取ってユーザインタビューする機会を得ました。 インタビューの結果 期待していた通り、インタビューをしたことによりどのUI案が良いか絞ることができました。 また、UI案を考える段階

    ユーザーインタビューを経て学んだこととユーザーと話すことのすすめ - Classi開発者ブログ
    yug1224
    yug1224 2023/08/13
  • AWS GlueからAWS Batchにしたことで費用を75%削減した - Classi開発者ブログ

    こんにちは、最近データエンジニア業を多くやっているデータサイエンティストの白瀧です。 これまでClassiのデータ基盤は、Reverse ETLをしたり監視システムを導入したりとさまざまな進化をしてきました。しかし、Classiプロダクトが発展するとともにデータ量が増加し、これまでのデータ基盤では耐えられない状態に近づいてきました。 そこでデータ基盤の一部(DBからのExportを担う部分)のリアーキテクチャを実施したので、この記事で紹介したいと思います。 概要 Classiのデータ基盤では、Amazon RDSからAmazon S3へJSONで出力し、その後GCS→BigQueryという流れでデータを送り、BigQueryからもBIツールやReverse ETLなどで使っています。詳細は、Classiのデータ分析基盤であるソクラテスの紹介 - Classi開発者ブログを参照してください。

    AWS GlueからAWS Batchにしたことで費用を75%削減した - Classi開発者ブログ
    yug1224
    yug1224 2023/08/07
  • ブラウザ拡張機能をChatGPTと作成した記録 - Classi開発者ブログ

    先日「Google Meet Chat to Clipboard」というChrome拡張機能を公開しました。Google Meetから退出する時に、チャットが残っていれば自動でクリップボードに保存するというものです。 このアイデアは、社内のSlackでたびたび見かけた「Google Meetのチャットを保存し忘れた」という問題から生まれました。 個人のプロジェクトとして作成・公開しましたが、きっかけは社内にありました。そして、ChatGPTに併走してもらいながら制作した過程について少し話したところ、思った以上に興味をもってもらい、ここで紹介することになりました。 こういった弊社での小ネタ的ChatGPTの活用事例は、ChatGPTと大規模言語モデルのLT会を開きました - Classi開発者ブログでも紹介されていますので、興味があるかたはご覧ください。 制作過程 冒頭にもあるとおり、最初か

    ブラウザ拡張機能をChatGPTと作成した記録 - Classi開発者ブログ
    yug1224
    yug1224 2023/08/04
  • GitHub Actions と Release Please を使ったアプリケーションのリリース自動化 - Classi開発者ブログ

    GitHub Actions と Release Please を使ったアプリケーションのリリース自動化 こんにちは @lacolaco です。最近は、先日プレスリリースが出された「学習トレーニング」機能を裏で支えているコンテンツ管理システム(以下内部CMS)の開発に携わっています。 corp.classi.jp この記事では、内部CMSのフロントエンドAngular アプリケーション)のリリースフローを自動化している仕組みを紹介します。現在のリリースフローの全体像は次の図のようになっています。この中にある Release Please というのが、今回特に紹介したいツールです。いくつか日語でのブログ記事などもあるので特にマイナーというわけではないと思いますが、多くの場合はライブラリのリリースに使われています。一方、アプリケーションのリリースで使っているケースはあまり発信されてないよう

    GitHub Actions と Release Please を使ったアプリケーションのリリース自動化 - Classi開発者ブログ
    yug1224
    yug1224 2023/06/13
  • 中立的なGraphQLスキーマの管理 - Classi開発者ブログ

    こんにちは、id:aerealです。 今回はGraphQLのスキーマ管理を工夫している点について紹介します。 背景 対象となるアプリケーションは先日プレスリリースが出された学習トレーニング機能を裏で支えているコンテンツ管理システム (以下、内部CMS) で、エンドユーザ向けを含む複数のサービスから呼び出されます。またAngularで書かれたWeb UIを備えます。 内部CMSを開発するチーム内には主にサーバサイドを担当するメンバーと、主にクライアントサイドを担当するメンバーとがおり、どちらもGraphQLを用いた開発経験があります。 この内部CMSはスクラッチから開発を始めており、目指すリリース予定日に対してやることは山積みなのでうまくタスクを分担したい状況にありました。 時と場合によってはクライアントサイドのチームの手が空いていたりあるいは逆になったり、状況は目まぐるしく変わります。 で

    中立的なGraphQLスキーマの管理 - Classi開発者ブログ
    yug1224
    yug1224 2023/05/27
  • Classi developers Advent Calendar 2022の振り返り - Classi開発者ブログ

    ついに今年もラストの更新となりました。開発者ブログ編集委員のid:tetsuro-itoです。 時は師走、ソフトウェアテック界隈ではおなじみとなったアドベントカレンダーの季節でした。 当社もClassi developers Advent Calendar 2022と銘打ち、24の記事が集まりました。 今年のアドベントカレンダーを振り返る記事で締めさせていただきます。 Classi developers Advent Calendar2022 昨年も同じ方式での振り返りをしていますが、今年も同様のテイストで編集部で改めて投稿された記事を振り返り、一言ずつコメントで紹介することにしました。 もしまだご覧になっていない記事があったらぜひこの機会に読んでみてください。 振り返り 12/1 id:tetsuro-ito: 開発部でレポートラインを整理してユニット制度を導入した話 id:Clas

    Classi developers Advent Calendar 2022の振り返り - Classi開発者ブログ
    yug1224
    yug1224 2022/12/25
  • ミニアプリからはじめる新規プロジェクト開発 - Classi開発者ブログ

    この記事は Classi developers Advent Calendar 2022 の 22 日目の記事です。 こんにちは!Classiでモバイルエンジニアをしています、楠瀬大志(id:indiamela)です。 最近、とあるプロジェクトを進めるにあたって、動作検証用のミニアプリを作りました。 稿ではiOSアプリ開発に絞り、ミニアプリからはじめる新規プロジェクト開発の進め方やメリットについて、僕が学んだことを書いていきたいと思います。 ※現在進行中のプロジェクトなので詳しい技術や画面は今回紹介しません。そういった内容はまた別の記事で紹介できればと思います。 背景 今回のプロジェクトは、先の見えないことが多く、ロジックや画面設計を手探りで決めるところから始めなければいけませんでした。 そういった状況では、新しいAPIの仕様やUI/UXを検討するために、モバイルアプリ上ですぐ試して確認

    ミニアプリからはじめる新規プロジェクト開発 - Classi開発者ブログ
    yug1224
    yug1224 2022/12/23
  • GitHub運用委員の紹介 - Classi開発者ブログ

    みなさま、おはこんハロチャオ〜。開発支援部所属のid:aerealです。 この記事ではClassiにおけるGitHub運用委員という役割とその仕事について紹介します。 また、この記事はClassi developers Advent Calendar 2022 - Adventarの2日目の記事としてお届けします。 GitHub運用委員とは Classiでは開発のコラボレーションツールとしてGitHubを活用しています。 Webサービスで事業を提供する企業にとって最も重要なソフトウェア資産といえるソースコードをホストするサービスですから不適切に扱えば重大な損害を被ることになりますし、最近はGitHub ActionsというCIサービスも利用できますから一歩間違えれば番環境で稼働動しているサービスに大きな影響を与えかねません。 当社には情シスやサイバーセキュリティ推進部といった部署が存在し

    GitHub運用委員の紹介 - Classi開発者ブログ
    yug1224
    yug1224 2022/12/03