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

データ基盤とデータ活用に関する合同勉強会を開催しました!
1

Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(to_lz1)です。 この度Classi新宿オフィスで、株式会社マネーフォワードさんとの合同勉強会を開催しました。データ基盤とデータ活用にフォーカスし、エンジニアやアナリストなど広い職種が交わって話す良い機会となったため、その模様を開発者ブログの形でお伝えします。 クローズドな勉強会として実施したため、お伝えできる内容には限りがありますが、勉強会開催の一事例として参考になれば幸いです。 きっかけ〜開催まで 当日の流れ 筆者が発表した内容 ハイブリッド開催を支えた工夫 振り返り・まとめ
1日前

GitHub CI/CD実践ガイド読書会をしたら自社への理解が深まった
Classi開発者ブログ
こんにちは、SREチーム kaoru.inoueです。 約半年間、「GitHub CI/CD実践ガイド」を用いた読書会を開催しました。 本記事では、その活動内容や参加者の感想を含めてご紹介します。 なぜこの本を選んだのか? Classiでは既にGithub Actionsの活用が進んでいます。私のGitHub Actions力が弱かったのでキャッチアップを図りたかったのと、同様に困ってる人もいるんじゃないかという点がありました。 GitHub CI/CD実践ガイドについて gihyo.jp 後半に向かうにしたがって難易度が上がっていく構成になっています。 1〜4章まで読むと構文への理解からCI…
14日前

視覚障害者の声から始まったtetoruのアクセシビリティ改善の取り組み
Classi開発者ブログ
保護者連絡サービス「tetoru」のプロダクトマネージャーを担当している米谷です。 tetoruは全国5,000以上の教育機関で、200万人を超える保護者の方にご利用いただいています。今回は、ある保護者の方のSNS投稿をきっかけとして取り組んだ、tetoruアプリのアクセシビリティ改善についてお伝えします。 視覚障害のある保護者の声 ある日、視覚障害のある保護者のSNSの投稿が目に留まりました。そこでは、お子さんの通う学校で利用されている連絡アプリの音声読み上げについてやりとりされており、その対応状況によっては視覚障害のある方にとって利用そのものが困難になるケースがあることを知りました。 この…
1ヶ月前

Classiのエンジニアが 関西Ruby会議08 に参加しました
Classi開発者ブログ
はじめに 2025年6月に入社しました、id:tommy1038 です! 2025年6月28日、京都・先斗町歌舞練場にて開催された「関西Ruby会議08」に参加してきました。 regional.rubykaigi.org 関西圏ではこれまでも「大阪Ruby会議」など地域のRubyイベントが継続的に開催されてきましたが、「関西Ruby会議」としての開催は実に8年ぶり。 久しぶりにこの“冠”が復活したこともあり、全国から多くのRubyistが集まりました。 会場となった先斗町歌舞練場は、歴史ある建物で、出囃子や「めくり」などの演出もあり、Rubyのイベントでありながら、どこか和の趣が感じられる特別…
1ヶ月前

ライブラリメンテナンスのための自作ESLintルール作成
Classi開発者ブログ
こんにちは、プラットフォーム部の id:lacolacoです。 Classi社内では、複数のWebアプリケーションで共通のUIコンポーネントを社内ライブラリ化しています。ライブラリを長くメンテナンスしていると、過去に提供していたAPIを廃止して、新しいAPIに置き換えたいことが多々あります。いきなり古いAPIを消して新しいAPIを提供する破壊的変更のアプローチは、社内ライブラリであれば利用者とコミュニケーションしやすいため妥協してしまいそうになります。しかし、破壊的変更への追従が利用者側で負担となって棚上げされた結果、後になって急いで適用して欲しいセキュリティパッチのバージョンアップがなかなか…
1ヶ月前

関西Ruby会議08に「『1ヶ月でWebサービスを作る会』で出会った rails new、 そして今に至る rails new」というタイトルで登壇します
Classi開発者ブログ
こんにちは、Classi でソフトウェアエンジニアをやっている id:kiryuanzu です。 2025年6月28日(土) に京都府京都市の先斗町歌舞練場にて開催される関西Ruby会議08で「『1ヶ月でWebサービスを作る会』で出会った rails new、そして今に至る rails new」というタイトルで登壇させていただくことになりました。 regional.rubykaigi.org 今回はこの発表のプロポーザルを提出した時の背景や、登壇の意気込みについて事前にお伝えしたいと思います。 プロポーザルを提出した際の背景 実は、LT形式ではない少し長めの発表(今回は20分)のプロポーザルを…
2ヶ月前

Classiエンジニアの「OSSやっていきの集い」 〜4ヶ月間の取り組みと、初めてのOSSコントリビューション〜
Classi開発者ブログ
こんにちは。Classiでソフトウェアエンジニアをしている中村( id:kozy4324 )です。 今回は、社内で継続している技術活動「OSSやっていきの集い」についてご紹介します。活動開始から4ヶ月の間に取り組んできたこと、そして実際にOSSプロジェクトへプルリクエストを送ってマージされた経験についてまとめました。 OSSやっていきの集いとは この活動は、SmartHRさんの取り組み「OSSやっていきの集い」から着想を得て、名称もそのままお借りして始めました。 SmartHRのOSS活動、登壇活動を盛り上げるべく、「OSSやっていきの集い」が立ち上がりました OSSに関心はあるものの、実際に…
2ヶ月前

Classi 2025年新卒エンジニア研修「そーだい塾」を開催しました
Classi開発者ブログ
こんにちは。Classiのみんなの頼れるお兄さん id:Soudai です。 Classiでは例年、新卒エンジニア向けの研修「そーだい塾」を実施しており、今年も2時間の研修を3回にわたって開催しました。 今日はこの研修をご紹介しながら、当日の雰囲気やスライドには書いていない部分や大切な考え方をご紹介します。 第1回:リリースの極意 第2回:日々の仕事の中で成長する 第3回:具体と抽象と現場 第1回:リリースの極意 第1回では、ソフトウェアエンジニアにとって最も重要な「リリース」について取り上げました。 登壇資料 speakerdeck.com speakerdeck.com 伝えたかった狙い …
2ヶ月前

NPS70超。社内AI議事録ツール「Turing」がClassiの"当たり前"になるまで
Classi開発者ブログ
こんにちは、エンジニアの鳥山です。 Classiでは、2024年の12月ごろから当時最新であったGemini 1.5 Proを用いた議事録生成ツール「Turing」を開発、リリースし、社内のメンバーに使ってもらっています。 tech.classi.jp 本記事では、 リリースからおよそ半年経った今、Turingはどの程度普及したのか 利便性や運用性の向上のためにどんな継続的改善をしたのか の大きく2点に焦点を当てて紹介し、最後にTuringの成功要因についても考察します。 モデルのアップデートや新技術の発表が毎週のように起きる昨今、個人的にはAIをプロダクトに取り入れることのみならず、社内ツー…
2ヶ月前

ライブラリの継続的アップグレードを支援する活動にQAメンバーとして参加した1年のふりかえり
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部QAチームの牛木です。 弊社にはライブラリの継続的アップグレードを支援する活動があります。この活動にQAメンバーとして1年間参加しました。活動の内容や、活動を通じて感じたことをお伝えします。 ライブラリの継続的アップグレードを支援する活動とは この活動は、EOL*1を迎えたライブラリやフレームワークを使わないように、” 継続的 ” にバージョンを ” アップグレードしよう ” という取り組みです。サポート状況の最新情報や、現時点での対応状況などを収集し見える化することにより、対応が遅れているチームに対しリマインドやバージョンアップのサポートなどを行う…
2ヶ月前

Pull Request ごとに S3 + CloudFront へ SPA のプレビュー環境をデプロイする
Classi開発者ブログ
Classi でソフトウェアエンジニアをやっている koki です。 S3 + CloudFront でホスティングしている SPA (Single Page Application) で Pull Request ごとにプレビュー環境をデプロイする仕組みを作ってみたところ、かなり体験が良かったので紹介します。 前提 Classi で提供している学習トレーニング機能には、それを裏で支えるコンテンツ管理システム ( 以下、内部 CMS ) が存在しています。 この内部 CMS については以下の記事でも簡単に紹介されているので、こちらをご参照ください。 tech.classi.jp 内部 CMS …
3ヶ月前

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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…
10ヶ月前

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 アプリケーション開発におけるセキュアコーディング、できていますか? これは自戒の念を込めた…
1年前

社内の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個のリポジ…
1年前