Classi開発者ブログ
https://tech.classi.jp/
教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。
フィード

GitHub ActionsとSchemaSpyを活用したデータベースドキュメント自動生成とGitHub Pagesへの公開方法
Classi開発者ブログ
こんにちは、kobitoチームのアインです。この記事では、最近チームで導入したデータベースのドキュメント自動生成の仕組みとその経緯について紹介します。 なぜ自動化しようと思ったか サービスを運用する上で、データベースのドキュメント管理は重要な業務の一つです。データベースのスキーマが変更される度に、ドキュメントを手作業で更新する必要があります。しかし、このような手動更新には以下の課題があります。 記録漏れや実際のデータベースとの乖離が生じやすい 複数人が同時に開発すると、ドキュメントと実際のデータベースの状態に差が生じやすい これらの課題を解決するため、GitHub Actionsを活用したドキ…
10日前

Amazon GuardDutyの保護プランで実現する脅威検知とマルウェア対策
Classi開発者ブログ
こんにちは、プロダクト本部プラットフォーム部SREチームの坪井(@boy2)です。 AWSをご利用のみなさん、Amazon GuardDuty (以下 GuardDuty)は活用されていますか? GuardDutyの設定を有効にしただけで、安心していませんか?それだけではGuardDutyの機能を十分に活用できているとは言えません。この記事では、GuardDutyの基本的な機能から、さらに効果的な活用方法までを解説していきます。GuardDutyをすでに利用されている方も、これから利用を検討されている方も、ぜひ最後までご覧ください。 要約 GuardDutyはAWSの脅威検知サービスであり、標…
10日前

狼少年と化していたSentryが機能するようになるまで
Classi開発者ブログ
こんにちは。エンジニアのすずまさです。 弊社では、エラー監視ツールとしてSentryを利用しています。 私のチームではSentryをうまく活用できていない状態が続いていましたが、最近は運用負荷を軽減しつつ障害を早期発見するなど、以前よりも運用が改善されてきたので今回はその紹介をします。 当時の課題「とにかくエラーが多すぎる」 ノイズを減らす 積極的にArchiveする Issue Groupingを活用する 重要なエラーだけピックアップ可能にする 現在の運用 まとめ 当時の課題「とにかくエラーが多すぎる」 トリアージがほとんどされておらず、S/N比が低くなっていました。 そのため、ノイズが多く…
1ヶ月前

Prompt Engineering勉強会をやった
Classi開発者ブログ
こんにちは。データサイエンティストのオウです。先日、チームで生成AIのPrompt Engineeringに関する勉強会を実施しました。本記事ではその勉強会について紹介します。 なぜ取り組んだか? 現在、生成AIの時代が本格的に到来しています。Classiでは以前からAI技術を活用し、英語の自動作問技術を開発してきましたが、今後は生成AIを活用することでさらに大きな価値を生み出せると考えています。 そのためには、生成AIの全体像を把握し、適切に活用することが重要です。一方で、生成AIの制限やリスクについても考慮しなければ、安全で信頼できるサービスを提供することはできません。生成AIを効果的かつ…
1ヶ月前

ノンデザイナーの開発チームで『ノンデザイナーズ・デザインブック』読書会を行いました
Classi開発者ブログ
開発グループ2(通称:kobitoチーム)のチームリーダーをしている前川です。今回は、チームメンバーを中心に『ノンデザイナーズ・デザインブック』という本の読書会を行いました。 kobitoチームでは以前『ルールズ・オブ・プログラミング』の読書会を行いました。その後、Angular コーディングスタイルガイドを読む会を行い、今回の『ノンデザイナーズ・デザインブック』を行いました。 『ノンデザイナーズ・デザインブック』 『ノンデザイナーズ・デザインブック』は、デザインの基本原則をわかりやすく解説した入門書です。コントラスト・反復・整列・近接という4つの原則を中心に、非デザイナーでも見やすく美しいデ…
1ヶ月前

スマートフォンアプリの改善、進めます
Classi開発者ブログ
プロダクト本部のディレクター、安田です。 2024年6月からアプリ改善の担当をしています。 私がアサインされる直前に組織変更があり、ホームアプリの改善はほぼ新しいチームでのスタートとなりました。 先日、第一弾の改善として「ホームアイコンの並べ替え」と「カラーテーマの変更」の2つの機能をリリースしましたので、その経緯をご紹介したいと思います。 社として何をやるべきか?チームは何をやりたいのか? 最初に取り組んだのは、もちろんチームメンバーとの関係構築です。 ただし、今回はその話は省略し、以下の2点に絞って説明します。 Classiホームアプリを社としてどうするべきか? チームメンバーは何をやりた…
2ヶ月前

tetoru開発部にジョインしました。
Classi開発者ブログ
こんにちは。tetoru開発部に所属しているエンジニアの中島です。 弊社には現在、主に高校をターゲットとする「Classi」というサービスと、主に小中学校をターゲットとする「tetoru」というサービスが存在します。 会社やサービスについて詳しくは下記資料を御覧ください。 tetoruについて(採用・エンジニア向け) - Speaker Deck Classiを担当する部署とtetoruを担当する部署は分かれていて、筆者は2024年10月にClassiを開発するチームからtetoruを開発するチームへ社内異動しました。 今回の記事では、その経緯やtetoruでの現在の様子をお伝えします。 Cl…
2ヶ月前

生成AIを使って、自動で議事録を生成した話
Classi開発者ブログ
はじめに こんにちは、データプラットフォームチームのマイン(id:manhnguyen1998)です。 近年、生成AIが急速に注目を集めています。皆さんの企業ではすでに活用されていますか? それとも、現在検討中でしょうか? あるいは、すでにプロダクトをリリースされた方もいるかもしれません。 Classiでもこの流れに乗り、数ヶ月前から生成AIを活用したプロダクト開発に取り組み、生産性向上を目的としたツールの開発を進めています。本記事では、データプラットフォームチームが開発した、AIを活用して会議の議事録を自動生成するツール「Turing」について紹介します。 tech.classi.jp 背景…
2ヶ月前

ClassiにおけるGo現状確認 2025
Classi開発者ブログ
id:aerealです。Classi内でGoがどのような立ち位置にあるか、2025年現在の最新情報をまとめます。 リポジトリ概況 商用環境でエンドユーザへの機能提供に寄与するもの: 6 開発者向けツール: 3 その他社内向けツール: 1 リポジトリ数は上記の通りです。 機能提供に寄与するものとは直接トラフィックを受けるものはもちろん、エンドユーザの求めを起点に生じるシステム間通信に現れるものも含まれます。 過去に開発者ブログで紹介したcron代替やコンテンツ管理システムなどが代表例です。 参考: tech.classi.jp tech.classi.jp 開発者向けツールとはDBスキーマの内製…
3ヶ月前

ポストモーテムを読む会を開催しました
Classi開発者ブログ
こんにちは。ソフトウェアエンジニアのいもりです。 研修を終えた後*1、新卒OJTの一環として欠席連絡チームに所属しています。 先日、社内で「ポストモーテムを読む会」を開催しましたので、その様子をお伝えします。 ポストモーテムを読む会とは? 「ポストモーテムを読む会」とは、過去に発生した障害を記録した文書(ポストモーテム)を第三者である私が読み、その内容をもとに当事者と意見交換を行う場です。具体的には、ポストモーテムを読んだ感想を伝えたり、ネクストアクションについて質問したり、対応を通じて得られた教訓を共有してもらいます。 今回はClassiの欠席連絡機能に関するポストモーテムを取り上げ、その内…
4ヶ月前

(イベント参加レポート)【Edtech Meetup】急成長サービスの秘訣と実践戦略
Classi開発者ブログ
こんにちは、プロダクト本部プラットフォーム部SREチームの坪井(@boy2)です。当社の伊藤が2024年11月27日(水)にアマゾン ウェブ サービス ジャパン合同会社(以下、AWS)で開催された「【Edtech Meetup】急成長サービスの秘訣と実践戦略」のパネルディスカッションへ登壇しました。複数のEdtech企業のCxOと業界の特性や急成長の秘訣について語りました。今回はそのイベント模様の一部をご紹介します。 パネルディスカッション オープニングの挨拶の後、3人のパネリストの自己紹介と会社紹介が行われました。テーマとしては、どのようにサービスを広めていったのかというテーマにてパネリスト…
4ヶ月前

Classiの教科コンテンツ制作 - 紙教材をデジタルでも -
Classi開発者ブログ
こんにちは。教材コンテンツディレクターの今井です。 教材コンテンツディレクターとは、一言でいうと「Classiの教科コンテンツの企画・制作」を担当している職種です。今回はその中でも、特に「教科コンテンツの制作」についてご紹介します。 教科コンテンツ制作の流れ Classiの教科コンテンツ制作は図のような流れで、問題の出題内容や原稿制作は編集プロダクション、システムにコンテンツを搭載する作業はデータ入力会社など、社外とも協業しながらの制作を行っています。社外にも関係者が多いため制作進行管理を丁寧に行う必要がありますし、企画の主旨に沿った出題内容になるように編集プロダクションとはコミュニケーション…
4ヶ月前

dbt周辺ツールを使った「圧倒的に楽」なメタデータ管理
Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(@to_lz1)です。 本記事はdbt Advent Calendar 2024の10日目の記事です。 データ基盤を扱う上で避けて通れない「メタデータの管理」ですが、あなたのチームではどのように取り組まれているでしょうか?独自メタデータカタログを作ったけど、運用がつらくなっているとか、はたまた構築初期なのであえてdescriptionなしのまま突き進んでいるなど、データ基盤整備のフェーズによっても各社さまざまかと思います。 弊社も例に漏れず上記のようなフェーズを通過してきましたが、最近ではdbtやその周辺ツールを使った効率化がうまく回り始めてきま…
5ヶ月前

朝当番をやめた話
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部SREチームのid:ut61zです。 サービスを運用していくうえで監視は避けて通れません。 Classiでは長らく朝当番という制度を設け、平日朝のピークタイムにエンジニアを監視担当としてアサインし、何らかの問題が発生した際、即座に対応できる体制を整えてきました。 2020年9月からスタートした朝当番制度ですが、2024年4月をもってこの制度を終了しました。 今回はその経緯や理由、現在のClassiの運用体制などをご紹介します。 朝当番とは あらためて朝当番制度とは、平日朝のピークタイムにエンジニアが常に1名待機し監視する制度になります。担当エンジニア…
5ヶ月前

GraphQL スキーマから API ドキュメントを自動生成して GitHub Pages へデプロイする
Classi開発者ブログ
Classi で提供している学習トレーニング機能を裏で支えているコンテンツ管理システム ( 以下、内部 CMS ) では、バックエンドに GraphQL を採用しています。 この GraphQL は Classi 内の様々なシステムで広く利用されています。 tech.classi.jp 内部 CMS の開発チームでは、この GraphQL スキーマの API ドキュメントを自動生成して GitHub Pages でホスティングしています。 GitHub Pages は GitHub Actions ワークフローを作成するだけで簡単に静的サイトをデプロイすることができます。また、 Classi …
6ヶ月前

sql.Openとsql.OpenDBの違い、そしてドライバーごとにsql.OpenDBを使うべきかの検討
Classi開発者ブログ
id:aerealです。Goの話をします。 sql.Openとsql.OpenDBの違い GoでRDBMSなどに繋ぐ際にはふつうdatabase/sqlを使います。 ORMを使う場合でも内部的にはこのパッケージに依存していることがほとんどです。 特定のデータベースに対して接続を確立したりクエリを実行する実装をドライバーと呼び、契約によって定められたインターフェースを実装したドライバーを利用者がdatabase/sqlに渡すことで、拡張性と独立性を実現しています。 sql.DBはa database handle representing a pool of zero or more under…
6ヶ月前

Kaigi on Rails 2024 に「ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)」というタイトルで登壇します
Classi開発者ブログ
こんにちは、ソフトウェアエンジニアの中村 ( id:kozy4324 ) です。 2024年10月25日 (金) から 26日 (土) に、東京の有明セントラルタワーホール & カンファレンスで開催予定の Kaigi on Rails 2024 にて、「ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)」というタイトルで登壇させていただくことになりました。 今回は、このテーマを選んだ背景や、登壇を通じて達成したいことについて、事前にお伝えしようと思います。 Rails アプリケーション開発におけるセキュアコーディング、できていますか? これは自戒の念を込めた…
7ヶ月前

社内の9個のリポジトリの CI/CD を CircleCI から GitHub Actions に移行した際に考えたこと
Classi開発者ブログ
はじめに こんにちは、エンジニアの id:kiryuanzu です!今回はチームで管理するRailsリポジトリ9個の CI/CD を CircleCI から GitHub Actions に移行した際の話を共有します。 概要 Classi では全社的な方針により、メインで使う CI/CDプラットフォームを CircleCI から GitHub Actions に移行することにしました。 主な理由としては、複数の CI/CD サービスを並行して利用し続けるのは運用管理・コスト管理で負担があったこと、社内の知見交換で片方に寄せた方が良いと判断したためです。 筆者が所属するチームでは当時9個のリポジ…
7ヶ月前

tetoruのチームビルディング施策 -Wevox Values Cardの事例を添えて-
Classi開発者ブログ
こんにちは。tetoruでUXデザイナーをしている原田です。 tetoruチームでは年数回、チームビルディングとして関係者全員参加のワークショップを開催しています。今回はその取り組みを具体例を交えてご紹介します。 tetoruのチームビルディングとは このチームビルディングは2時間のワーク/3ヶ月程度に1回開催/メンバー全員参加(ただし商談などは優先)/普段の業務から離れ、異なる視点でtetoruを捉えるための対話の時間として開催されています。tetoruのチームメンバーはセールス/マーケ/CS/デザイナー/エンジニア/QAなどがひとつのチーム(※)としてまとまっており、業務内容によってはよく…
7ヶ月前

24年度新卒エンジニアが研修を終えて
Classi開発者ブログ
こんにちは。4月にClassiへ新卒で入社した伊森です。 私は4月から8月上旬までの約4ヶ月、Classiのエンジニアとして働くための新卒研修を受けてきました。 今回はその研修期間を経て、大まかな内容の振り返りや身についた考え方を紹介していきます。 入社前の状態 研修内容の概要 4月 5・6月 7・8月上旬 AWS研修 良かったところ 物足りなかったところ QA研修 実際に手を動かすテスト項目の作成課題 「品質が高い」とはどの状態を指す言葉?というディスカッション 万葉カリキュラム 研修プログラム以外にも学んだこと まとめ 入社前の状態 大学生時代はPythonを使用した画像処理を主に勉強して…
8ヶ月前

SRE NEXT 2024にSILVER SPONSORとして協賛&参加してきました
Classi開発者ブログ
ソフトウェアエンジニアの onigra です。2024年8月3日から4日にかけて開催された SRE NEXT 2024に参加してきました。 https://sre-next.dev/2024/ ClassiはSILVER SPONSORとして協賛し、いただいたスポンサーチケットで参加しました。 https://x.com/onigra_/status/1819594542586401140 印象に残ったセッション 工学としてのSRE再訪 さくらインターネット株式会社の yuuk1 さんの発表です。 SREの工学(Engineering)的側面に着目し、日本国外の発表事例を紹介しながら、Webサ…
8ヶ月前

tetoru は Ruby 3.3 + YJIT で本番運用しています
Classi開発者ブログ
プロダクト本部 tetoru 開発部の中田です。普段は giraffate という ID を使っていることが多いです。 ここでは、弊社が提供している小中学校向け保護者連絡配信サービス tetoru の利用している Ruby のバージョンを 3.2 から 3.3 にバージョンアップしたときの話を共有します。 概要 tetoru では、本文章の執筆時点で Ruby 3.3.4 + YJIT で Rails アプリケーションを動かしています。YJIT とは、Ruby が備えている Just-In-Time (JIT) コンパイラの機能で、これを有効化することで実行時に機械語が生成されアプリケーション…
8ヶ月前

QAチームで新卒エンジニア研修を開催して感じた効果
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部QAチームの牛木です。 今年度、新卒エンジニアの研修にQAチームによる研修が新たに追加されました。今回は、その研修を開催した経緯と、実際に開催して感じた効果をお伝えします。 なぜ開催したか QAチームの活動は、開発エンジニアの活動と深く結びついています。開発エンジニアとして入社する新卒エンジニアに、QAチームの活動を知ってもらい、「品質」に対する理解を深めてもらうことで、開発プロセスで品質を作り込むことを意識した活動が行えると考えたからです。 開催した研修のカリキュラム 5日間にわたり開催しました。以下が実際のカリキュラムです。 実際のカリキュラム …
8ヶ月前

S3上のログデータをBigQueryにニアリアルタイム連携する基盤を作った話
Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(id: to_lz1)とマイン(id: manhnguyen1998)です。 Classiでは、AWS上にあるサービスが出力したログをBigQueryに連携するプロダクト「Seneka」を開発し*1、社内の開発者・分析者に役立ててもらっています。 ログの連携はこれまでバッチ処理で行っていたのですが、この夏に技術的なチャレンジも兼ねてニアリアルタイムでの連携が出来るように移行しました。そこで、この記事で移行前後の構成と、移行時に気をつけたことについて、紹介できればと思います。 Senekaのそれまでの構成 改善方法を議論する前に、まずは従来の構成に…
8ヶ月前

SRE留学体験記(第5期生)
Classi開発者ブログ
こんにちは、学習PMF部でエンジニアをしている辻です。 私は2023年12月から2024年5月までSRE留学という社内制度を利用して、SREチームに期間限定で所属していました。 SRE留学とは?や、第1期生、2期生、3期生の体験記はこちらをご覧ください。 tech.classi.jp tech.classi.jp tech.classi.jp 留学を志望した理由 SRE留学をする以前は主にCALEというシステムの開発・運用を担当しており、その中でパフォーマンス改善やSLI/SLOの設定、Toil削減などに取り組んだことで、SREに興味を持ちました。 SREの活動に必要なAWSの知識やTerra…
9ヶ月前

詳解Terraform読書会を実施しました
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部SREチームの id:ut61z です。 SREチームが主体となって書籍『詳解 Terraform 第3版』(以後、詳解Terraform)の読書会を社内で実施しました。 www.oreilly.co.jp どう進めたか、実施してみた感想や反響、学んだことをご紹介しようと思います。 なお、過去にもSREチームが開催した読書会を実施しているので、よければこちらもご覧ください。 tech.classi.jp 詳解 Terraform 第3版について 詳解TerraformはTerraformについて体系的に学べる一冊で、サンプルコードとともにハンズオン形…
10ヶ月前

なれる!データエンジニア
Classi開発者ブログ
はじめに こんにちは。データプラットフォームチームのマイン(id:manhnguyen1998)です。 2024年1月からデータエンジニア留学(第1期)という制度を利用して、データプラットフォームチームに配属されています。第1期生として、このデータエンジニア留学制度について、自分の経験をもとに紹介したいと思います。 データエンジニア制度とは データエンジニア留学制度は基本的にSRE留学と同じですが、留学先はデータプラットフォームチームです。SRE留学に関する記事はいくつかありますのでご覧ください。 tech.classi.jp tech.classi.jp tech.classi.jp なぜ留…
10ヶ月前

Classiのエンジニア2名が RubyKaigi 2024 に参加しました
Classi開発者ブログ
はじめに こんにちは、エンジニアの id:kiryuanzu です! 今回の記事は 5月15日(水)から 5月17日(金)の3日間を通して開催された RubyKaigi 2024 の参加レポートです。 rubykaigi.org 弊社からは 2名のエンジニアが参加しました。本記事では各メンバーによる参加レポートをお送りします。 id:kiryuanzu の参加レポート 改めて今回の RubyKaigi 2024 に参加してきた id:kiryuanzu です。 自分自身は学生の頃(2017年)からほぼ毎年参加していますが、弊社のメンバーと参加するのは RubyKaigi 2022 以来で 2年…
10ヶ月前

Strict CSP を Content Security Policy Level 3 に対応したブラウザに絞って適用する
Classi開発者ブログ
こんにちは、プロダクト本部エンジニアの中村 (kozy4324) です。 現在 Classi が提供している Web サービスでは Content Security Policy を導入しています。その導入時の話は以下の記事で紹介させてもらいました。 今回の記事では、運用を続けていく中でわかったことや出てきた課題、またそれらを踏まえて現在どういった CSP のポリシーで運用を行っているのか紹介します。 オリジンの許可リストをベースにしたポリシー 導入時の記事でも紹介している通り、運用開始時のポリシーは以下のようなものでした。 Content-Security-Policy: default-s…
1年前