Classi開発者ブログ

https://tech.classi.jp/

教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。

フィード

記事のアイキャッチ画像
(イベント参加レポート)【Edtech Meetup】急成長サービスの秘訣と実践戦略
Classi開発者ブログ
こんにちは、プロダクト本部プラットフォーム部SREチームの坪井(@boy2)です。当社の伊藤が2024年11月27日(水)にアマゾン ウェブ サービス ジャパン合同会社(以下、AWS)で開催された「【Edtech Meetup】急成長サービスの秘訣と実践戦略」のパネルディスカッションへ登壇しました。複数のEdtech企業のCxOと業界の特性や急成長の秘訣について語りました。今回はそのイベント模様の一部をご紹介します。 パネルディスカッション オープニングの挨拶の後、3人のパネリストの自己紹介と会社紹介が行われました。テーマとしては、どのようにサービスを広めていったのかというテーマにてパネリスト…
11日前
記事のアイキャッチ画像
Classiの教科コンテンツ制作 - 紙教材をデジタルでも -
Classi開発者ブログ
こんにちは。教材コンテンツディレクターの今井です。 教材コンテンツディレクターとは、一言でいうと「Classiの教科コンテンツの企画・制作」を担当している職種です。今回はその中でも、特に「教科コンテンツの制作」についてご紹介します。 教科コンテンツ制作の流れ Classiの教科コンテンツ制作は図のような流れで、問題の出題内容や原稿制作は編集プロダクション、システムにコンテンツを搭載する作業はデータ入力会社など、社外とも協業しながらの制作を行っています。社外にも関係者が多いため制作進行管理を丁寧に行う必要がありますし、企画の主旨に沿った出題内容になるように編集プロダクションとはコミュニケーション…
16日前
記事のアイキャッチ画像
dbt周辺ツールを使った「圧倒的に楽」なメタデータ管理
Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(@to_lz1)です。 本記事はdbt Advent Calendar 2024の10日目の記事です。 データ基盤を扱う上で避けて通れない「メタデータの管理」ですが、あなたのチームではどのように取り組まれているでしょうか?独自メタデータカタログを作ったけど、運用がつらくなっているとか、はたまた構築初期なのであえてdescriptionなしのまま突き進んでいるなど、データ基盤整備のフェーズによっても各社さまざまかと思います。 弊社も例に漏れず上記のようなフェーズを通過してきましたが、最近ではdbtやその周辺ツールを使った効率化がうまく回り始めてきま…
1ヶ月前
記事のアイキャッチ画像
朝当番をやめた話
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部SREチームのid:ut61zです。 サービスを運用していくうえで監視は避けて通れません。 Classiでは長らく朝当番という制度を設け、平日朝のピークタイムにエンジニアを監視担当としてアサインし、何らかの問題が発生した際、即座に対応できる体制を整えてきました。 2020年9月からスタートした朝当番制度ですが、2024年4月をもってこの制度を終了しました。 今回はその経緯や理由、現在のClassiの運用体制などをご紹介します。 朝当番とは あらためて朝当番制度とは、平日朝のピークタイムにエンジニアが常に1名待機し監視する制度になります。担当エンジニア…
1ヶ月前
記事のアイキャッチ画像
GraphQL スキーマから API ドキュメントを自動生成して GitHub Pages へデプロイする
Classi開発者ブログ
Classi で提供している学習トレーニング機能を裏で支えているコンテンツ管理システム ( 以下、内部 CMS ) では、バックエンドに GraphQL を採用しています。 この GraphQL は Classi 内の様々なシステムで広く利用されています。 tech.classi.jp 内部 CMS の開発チームでは、この GraphQL スキーマの API ドキュメントを自動生成して GitHub Pages でホスティングしています。 GitHub Pages は GitHub Actions ワークフローを作成するだけで簡単に静的サイトをデプロイすることができます。また、 Classi …
3ヶ月前
記事のアイキャッチ画像
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…
3ヶ月前
記事のアイキャッチ画像
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 アプリケーション開発におけるセキュアコーディング、できていますか? これは自戒の念を込めた…
3ヶ月前
記事のアイキャッチ画像
チームでやろう!「ルールズ・オブ・プログラミング」読書会
Classi開発者ブログ
今回は、チームメンバーを中心に『ルールズ・オブ・プログラミング』という本の読書会を行いました。
3ヶ月前
記事のアイキャッチ画像
社内の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個のリポジ…
3ヶ月前
記事のアイキャッチ画像
tetoruのチームビルディング施策 -Wevox Values Cardの事例を添えて-
Classi開発者ブログ
こんにちは。tetoruでUXデザイナーをしている原田です。 tetoruチームでは年数回、チームビルディングとして関係者全員参加のワークショップを開催しています。今回はその取り組みを具体例を交えてご紹介します。 tetoruのチームビルディングとは このチームビルディングは2時間のワーク/3ヶ月程度に1回開催/メンバー全員参加(ただし商談などは優先)/普段の業務から離れ、異なる視点でtetoruを捉えるための対話の時間として開催されています。tetoruのチームメンバーはセールス/マーケ/CS/デザイナー/エンジニア/QAなどがひとつのチーム(※)としてまとまっており、業務内容によってはよく…
3ヶ月前
記事のアイキャッチ画像
24年度新卒エンジニアが研修を終えて
Classi開発者ブログ
こんにちは。4月にClassiへ新卒で入社した伊森です。 私は4月から8月上旬までの約4ヶ月、Classiのエンジニアとして働くための新卒研修を受けてきました。 今回はその研修期間を経て、大まかな内容の振り返りや身についた考え方を紹介していきます。 入社前の状態 研修内容の概要 4月 5・6月 7・8月上旬 AWS研修 良かったところ 物足りなかったところ QA研修 実際に手を動かすテスト項目の作成課題 「品質が高い」とはどの状態を指す言葉?というディスカッション 万葉カリキュラム 研修プログラム以外にも学んだこと まとめ 入社前の状態 大学生時代はPythonを使用した画像処理を主に勉強して…
4ヶ月前
記事のアイキャッチ画像
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サ…
4ヶ月前
記事のアイキャッチ画像
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) コンパイラの機能で、これを有効化することで実行時に機械語が生成されアプリケーション…
4ヶ月前
記事のアイキャッチ画像
QAチームで新卒エンジニア研修を開催して感じた効果
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部QAチームの牛木です。 今年度、新卒エンジニアの研修にQAチームによる研修が新たに追加されました。今回は、その研修を開催した経緯と、実際に開催して感じた効果をお伝えします。 なぜ開催したか QAチームの活動は、開発エンジニアの活動と深く結びついています。開発エンジニアとして入社する新卒エンジニアに、QAチームの活動を知ってもらい、「品質」に対する理解を深めてもらうことで、開発プロセスで品質を作り込むことを意識した活動が行えると考えたからです。 開催した研修のカリキュラム 5日間にわたり開催しました。以下が実際のカリキュラムです。 実際のカリキュラム …
4ヶ月前
記事のアイキャッチ画像
S3上のログデータをBigQueryにニアリアルタイム連携する基盤を作った話
Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(id: to_lz1)とマイン(id: manhnguyen1998)です。 Classiでは、AWS上にあるサービスが出力したログをBigQueryに連携するプロダクト「Seneka」を開発し*1、社内の開発者・分析者に役立ててもらっています。 ログの連携はこれまでバッチ処理で行っていたのですが、この夏に技術的なチャレンジも兼ねてニアリアルタイムでの連携が出来るように移行しました。そこで、この記事で移行前後の構成と、移行時に気をつけたことについて、紹介できればと思います。 Senekaのそれまでの構成 改善方法を議論する前に、まずは従来の構成に…
4ヶ月前
記事のアイキャッチ画像
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…
6ヶ月前
記事のアイキャッチ画像
詳解Terraform読書会を実施しました
Classi開発者ブログ
こんにちは。プロダクト本部プラットフォーム部SREチームの id:ut61z です。 SREチームが主体となって書籍『詳解 Terraform 第3版』(以後、詳解Terraform)の読書会を社内で実施しました。 www.oreilly.co.jp どう進めたか、実施してみた感想や反響、学んだことをご紹介しようと思います。 なお、過去にもSREチームが開催した読書会を実施しているので、よければこちらもご覧ください。 tech.classi.jp 詳解 Terraform 第3版について 詳解TerraformはTerraformについて体系的に学べる一冊で、サンプルコードとともにハンズオン形…
6ヶ月前
記事のアイキャッチ画像
なれる!データエンジニア
Classi開発者ブログ
はじめに こんにちは。データプラットフォームチームのマイン(id:manhnguyen1998)です。 2024年1月からデータエンジニア留学(第1期)という制度を利用して、データプラットフォームチームに配属されています。第1期生として、このデータエンジニア留学制度について、自分の経験をもとに紹介したいと思います。 データエンジニア制度とは データエンジニア留学制度は基本的にSRE留学と同じですが、留学先はデータプラットフォームチームです。SRE留学に関する記事はいくつかありますのでご覧ください。 tech.classi.jp tech.classi.jp tech.classi.jp なぜ留…
6ヶ月前
記事のアイキャッチ画像
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年…
7ヶ月前
記事のアイキャッチ画像
Strict CSP を Content Security Policy Level 3 に対応したブラウザに絞って適用する
Classi開発者ブログ
こんにちは、プロダクト本部エンジニアの中村 (kozy4324) です。 現在 Classi が提供している Web サービスでは Content Security Policy を導入しています。その導入時の話は以下の記事で紹介させてもらいました。 今回の記事では、運用を続けていく中でわかったことや出てきた課題、またそれらを踏まえて現在どういった CSP のポリシーで運用を行っているのか紹介します。 オリジンの許可リストをベースにしたポリシー 導入時の記事でも紹介している通り、運用開始時のポリシーは以下のようなものでした。 Content-Security-Policy: default-s…
7ヶ月前
記事のアイキャッチ画像
Shinjuku.rb#92をClassiで開催しました
Classi開発者ブログ
ソフトウェアエンジニア&Shinjuku.rbオーガナイザーの onigra です。5/31にClassiオフィスにてShinjuku.rbを開催いたしました。足元の悪い中ご参加くださった方々、本当にありがとうございました。 Shinjuku.rb とは、新宿周辺のRuby技術者たちが気軽に集まるコミュニティです。 ミートアップでは一方的な発表のみならず、ディスカッションを通じたインタラクションを大事にしているのが特徴の1つです。 今回の開催にあたり、同じくShinjuku.rbオーガナイザーである yuki3738さんが所属する 株式会社mov様より、フード&ドリンクスポンサーの協賛をいただ…
7ヶ月前
記事のアイキャッチ画像
dbtを導入した話、そしてClassiのデータ基盤「ソクラテス」の現在地
Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(@to_lz1)です。 Classiでは、2019年ごろからデータ基盤に「ソクラテス」の愛称をつけて運用を続けています。初期の構成は2021年に書かれたエントリ*1にも詳しいですが、数年の間に進化したことも増えてきました。 大きな変化の一例として、最近、私たちのチームではdbt*2を導入してジョブ間の依存管理やメタデータの管理を改善しました。 本記事ではこの取り組みをピックアップして紹介します。また、進化したソクラテスの構成図をアップデートするとともに、Classiデータプラットフォームチームの最新版の雰囲気もお伝えできればと思います。 dbt移…
7ヶ月前
記事のアイキャッチ画像
Classiは技術コミュニティの勉強会・ミートアップに会場提供を行います
Classi開発者ブログ
はじめに ソフトウェアエンジニアの onigra です。タイトルの通り、Classiは技術コミュニティの勉強会・ミートアップ等に、自社のイベントスペースを会場として提供致します。 昨今、オフラインでの勉強会・カンファレンス・ミートアップの盛り上がりを強く感じており、RubyKaigiはもちろんのこと、 Omotesando.rb などをはじめとした地域Ruby Meetupもオフライン開催がされるようになってきました。私も先日再開した Shinjuku.rb のドリンクアップに参加してきました。 参加者と交流する中で、今後の会場探しに困っていると伺ったので、西新宿にオフィスがあるClassiも…
8ヶ月前
記事のアイキャッチ画像
GitLab本輪読会、他社と合同で振り返りを行いました
Classi開発者ブログ
こんにちは。プロダクト本部でエンジニアをしています daichi ( id:da1chi24 ) です。 先日、社内でGitLab本の輪読会を実施しました。 さらに今回はそれだけでなく、同時期に同じ本の輪読会をした他社の方と合同で振り返りを行うイベントに参加しました。 今回は輪読会や、他社と合同で行った輪読会の振り返りの内容、経緯や学び、参加した感想をシェアします。 GitLab本とは 「GitLabに学ぶ世界最先端のリモート組織のつくりかた」(以下 GitLab本)という本です。 www.shoeisha.co.jp この本はGitLab社が公開している「The GitLab Handboo…
8ヶ月前
記事のアイキャッチ画像
データを活用したQA検証の取り組み
Classi開発者ブログ
こんにちは!QAチームの池田です。 今回は、2023年度でQAチームが行った取り組みについてご紹介します! QAチームでは、2023年度で2つ目標を掲げ活動をしてきました。 そのうちの1つの目標が「機能別の検証密度と優先度の抽出」です。 この目標は、検証漏れによる本番環境での不具合を防止することを主な目的としていました。 また、検証実施時の負荷の分散にも考慮し、利用頻度の高い機能の検証密度を高くすることにより効率的に検証を進めていくことを目的としていました。 「機能別の検証密度と優先度の抽出」をするには? 弊社のプロダクト「Classi」には多くの機能があり、それに伴い開発チームも複数存在しま…
8ヶ月前
記事のアイキャッチ画像
IME変換中のエンターキーで送信される!への対処法[追記あり]
Classi開発者ブログ
[2024年4月25日 追記] Safariの動作について考慮漏れがありましたので、一部追記・編集しました。 新宿にオフィスのあるClassiは、岡山在住の私のような地方在住者だけでなく、いわゆる通勤圏内に在住していてもリモートワークで働いている人が多い会社です。必然的にミーティングはいわゆるオンラインミーティングとなり、主にGoogle Meetが利用されています。 そのGoogle Meetのチャット機能、ここ1週間ぐらい「IMEで日本語に変換のために押すエンターキーで送信されてしまう」という現象が発生しています。このエントリーを読まれている時点では対応しているかも知れませんが、2024年…
8ヶ月前
記事のアイキャッチ画像
英文法問題の制作プロセスに生成AIを取り入れた話
Classi開発者ブログ
こんにちは。データサイエンティストの高木です。 弊社では昨年6月に「学習トレーニング」機能をリリースし、機能の利用促進や改善が進んでいます。 corp.classi.jp このような学習機能を通して、より質の高い個別最適な学習を実現するためには、多くの「問題」が必要となります。 しかし、問題制作には膨大な時間と費用がかかってしまいます。 そこで、これらの制作時間や費用の削減を目的として、これまで制作工程の一部を自動化する試みを行ってきました。 tech.classi.jp 本記事では、2月にプレスリリースで公表された、学習トレーニングの英文法問題の制作プロセスに生成AIを取り入れた話について紹…
9ヶ月前
記事のアイキャッチ画像
株式会社万葉のみなさんとエンジニア交流会を実施しました
Classi開発者ブログ
こんにちは、エンジニアの id:kiryuanzu です。 2024年の1月に Classi のオフィスで 株式会社万葉のエンジニアの方々と交流会を実施しました。 今回の記事では万葉さんとの交流会の様子を紹介した上で、他社との交流会を実施してみての振り返りレポートを紹介します。 経緯 去年の RubyWorld Conference の交流イベントの場で万葉の大場さんとお会いし、コードレビューに関する悩みを相談したところ、とても丁寧にアドバイスしていただきました。 tech.classi.jp ベテラン Rubyist の方からコードレビューについての考え方を熱弁していただいたりなど楽しい出来…
10ヶ月前
記事のアイキャッチ画像
たった1行のPRでチームの"速さ"を可視化できる計測基盤を作った話
Classi開発者ブログ
こんにちは、データプラットフォームチームの鳥山(@to_lz1)です。エンジニアの皆さん、自分のチームのパフォーマンス、計測していますか? DevOps Research and Assessment(DORA)の2019年のレポート により、開発チームのパフォーマンスを示す指標として提唱された「Four Keys」。この中に「デプロイ頻度」「変更のリードタイム」という指標があります。 『LeanとDevOpsの科学』など有名な書籍で取り上げられたこともありFour Keysそのものが広く知られるようになりましたが*1、この度Classiでもこれらの指標を可視化するダッシュボードを構築し、社内…
10ヶ月前
記事のアイキャッチ画像
リードタイムを測るシェルスクリプトを作ってチームの振り返り会を活発にした話
Classi開発者ブログ
こんにちは。エンジニアのすずまさです。 去年の夏頃にリードタイムの計測を始めてから、振り返りで良い気づきを得られるようになったりリードタイムを減らすアクションが生まれたりと良いことがたくさんあったので、今回はその紹介をしようと思います。 リードタイムの定義 『LeanとDevOpsの科学』では、リードタイムを「コードのコミットから本番稼働までの所要時間」として定義しています。 私たちのチームのリポジトリではブランチ戦略としてGitHub Flowを採用しており、mainへのマージと本番稼働のタイミングが近しいため「PRをopenしてからマージするまでの期間」をリードタイムとして定めて計測しまし…
10ヶ月前