エンジニアリング

戻り値の型が変化する関数を TypeScript で表現する方法

こんにちは。システム部の真部です。 普段は alms のフロントエンドとバックエンドの開発を担当しています。 この記事ではサービスを開発する中で遭遇した TypeScript にまつわるちょっとした問題とその解決策について紹介しようと思います。 使用する TypeS…

Lighthouseによるサイト評価でユーザ体験を向上します!

定量的な指標に基づき Alms 開発を推進します 弊社では創業時から安定したサービスを提供したりさまざまな機能を拡充したりするためにAlmsを開発してきました。今後も現状ご利用いただいているユーザを含めたさまざまなユーザに利用してもらいたい! しかし…

Azure Cosmos DB から Mongo Atlas on GCP に移管して API 速度を210%以上改善しました

Aidemy の第2期リファクタリングを 2021年11月~12月に実施 Aidemy の第2期リファクタリングを 2021年11月~12月に実施しました。 リファクタリングの主要な効果は、表題の通りデータベース(DB)をAzure Cosmos DB から Mongo Atlas on GCP に移管して API 速度…

再帰プログラミングを活用して、変更箇所を最小限に抑えたコンテンツの多言語対応を実施しました

目的 方針 コンテンツ作成ツールの改修 バックエンドの改修 まとめ 実装の手順 意義 目的 以前から、日本語のコンテンツを英語に自動翻訳して提供する仕組み(外部サービスに依存)がありましたが、より意図通りに翻訳したコンテンツを出せるようにするため…

メロスは激怒した。メロスにはJupyter Notebookがわからぬ。メロスは、JSONの牧人である。

AidemyのJupyter Notebook AidemyではJupyter Notebookを利用してユーザーへの学習コンテンツを提供しています。 そもそもJupyter Notebookを利用した理由は展開可能性にあります。 Jupyter Notebookで書いたドキュメントはそのままファイルとしてユーザーへ…

NoSQL ➔ RDB 移行検討のための戦略的リファクタリング (Repository 層の新設)

今回の記事は、2021年7月・8月の2ヶ月間で実施したリファクタリング「Repository層の新設」の記録です。 サムネイル TL;DR . 2ヶ月間、新規開発を一時的に中断してシステムのリファクタリングを実施し、バックエンドに永続化責務を集約したRepository層を新…

社内勉強会でCI/CD Conference 2021にて学んだことを展開しました

CI/CD Conf. '21 を社内展開 Aidemyでは毎週エンジニアによる社内勉強会を実施しております。 本記事は2021/09/02に開催されましたCI/CD Conference 2021のハンズオンに参加しました社員による社内展開の様子を紹介します。 Aidemyの社内勉強について CI/CD …

MongoDB からの CSV 生成を20倍高速化するデータ取得のパイプライン化とバイナリサーチ

大幅な高速化 TL;DR . データベースからのデータ取得を並列化して、バイナリサーチにより集計ロジックを最適化したことで,従来直列的なデータ取得と単純集計により実装されていた進捗CSVデータの生成・ダウンロードを20倍高速化しました。 あわせて、今後の…

Azure Cosmos DB 更新 - 低速なクエリを 67% 削減に成功

低速なクエリを 67% 削減 更新内容 2021年7月14日、Alms で利用しているデータベース Azure Cosmos DB (mongo API) (以降、Cosmos DB) の API バージョンを 3.2 -> 3.6 にバージョンアップしました。その結果、処理に2秒以上を要している低速なクエリを 67% …