Progate Tech Blog

https://tech.prog-8.com/

Progate Tech Blog

フィード

記事のアイキャッチ画像
機械学習でProgateユーザーの学習習慣を定量評価する
Progate Tech Blog
はじめに データ戦略を担当している@aaaanwzです。 Progateではデータ基盤にユーザーの皆様の利用状況を保管し、プロダクトをより良いものにしていくための分析に活用させて頂いています。 一例として、各レッスンのページをめくった時刻のデータがあります。 sample.user_page_history timestamp user lesson_name page_num 2022-09-20 00:00:00 にんじゃわんこ 学習レッスン HTML & CSS 初級編 1 2022-09-20 00:01:00 にんじゃわんこ 学習レッスン HTML & CSS 初級編 2 2022-…
2年前
記事のアイキャッチ画像
Alexaスキル開発に入門してみた
Progate Tech Blog
Progateの@sy-tenchoです。この記事は Progate Advent Calendar 2021 の24日目です。このネタはもう何度も書き尽くされている気もしますが、はじめてAlexa開発に入門してみたという話です。 ことの発端 先日のAmazonブラックフライデーセールでスマートスピーカーのEchoシリーズが安くなっていたのでEcho showとEcho dotを購入し、元から持っていたEcho dotと合わせて計3台のEchoが家の中で稼働するという状態になりました。それぞれリビング、キッチン、寝室に配置したので家のどの場所から「アレクサ!」と叫んでも大体反応してくれる状態に…
2年前
記事のアイキャッチ画像
AWS製ミニサービスによるトイル削減の取り組み事例の紹介と振り返り
Progate Tech Blog
Progateの小笠原です。本記事はadvent calendarの23日目の記事となります。 年末になって振り返りの時期となりました。粒度の大きな仕事はチーム/プロジェクトで振り返りを行うため、自分の中で整理が付けやすいのですが、粒度の小さなタスクに関しては振り返ることなく忘れられがちです。 今年はSREチームで非効率な業務や無駄なコミュニケーション(いわゆるトイル)を自動化や仕組み化で効率化/削減するというミッションをOKRの一つに置いていました。そこで行った2件の施策について導入経緯と効果を振り返りつつ紹介できたらと思います。 事例としてはありふれたもので新規性はありませんが、何かしら参…
2年前
記事のアイキャッチ画像
デザイントークンの運用自動化について考える
Progate Tech Blog
はじめに Progateの舘野です。さまざまなプラットフォーム向けにプロダクトを提供していたり、プロダクトのUIの一貫性を担保するのに何かしらの仕組みの必要性を感じる規模のものを開発していたりすると、デザイントークンのような取り組みが必要になると思いますが、なるべく人を介在せずに運用するにはどうすると良いのでしょうか。 試しにプロトタイプのようなものを作ってみながら考えてみようと思います。 考慮したい項目 まず、運用フローを考える上で考慮しておきたい点を確認しておきます。 細かい点をあげていくとさまざまなものがありそうですが、最低限以下の点をクリアした状態にしたいと思います。 デザインツールに…
2年前
記事のアイキャッチ画像
Understanding Unicode with a Nyan translator
Progate Tech Blog
Hello, this is Dacer from Progate with the 21st day of the Progate Advent Calendar. Nyа̅nNyа̄nNyа̃nNyа̎n NyӓnNyа̏nNyа̂nNyа̉n Nyа̃nNyanNyӑnNyа̏n Nyа̇nNyа̃nNyа̂nNyа̋n Nyа̃nNyanNyӑnNyа̇n Nyа̃nNyanNyа̄nNyа̂n Nyа̃nNyanNyӓnNyа̋n You may be wondering what the above words mean, I'll tell you the answer …
2年前
記事のアイキャッチ画像
Macの環境構築をAnsibleで自動化してみた 2021年版
Progate Tech Blog
こんにちは、Progateでサーバーサイドエンジニアをしている708uです。 本記事は Progate Advent Calendar 19日目の記事になります。今回はAnsibleを用いたMacの環境構築自動化をご紹介したいと思います。 発端 そもそものお話になりますが、私がProgateにジョインしたのは2021年12月1日、つまりこの記事が投稿される約2週間前になります。となると当然、新しく業務で利用するマシンも支給されるため、1から開発環境構築をする必要がありました。 私自身、私物や業務含めてMacを1からセットアップする作業は何回か行っていて今回もそれが必要になるのですが、その度に以…
2年前
記事のアイキャッチ画像
Customizing the MUI Palette Tones
Progate Tech Blog
Hello, this is Chandler from Progate with the 17th day of the Progate Advent Calendar. I work as a frontend engineer, and recently I've been getting acquainted with MUI v5, which is a UI component library. These kinds of libraries are great for keeping things consistent and also streamlining develop…
2年前
記事のアイキャッチ画像
Bingo ゲームと Rust と Iterator (Advent of Code #4)
Progate Tech Blog
こんにちは、Progateのキリル(@virtualkirill)です。 本記事は Progate Advent Calendar 16日目の記事になります。 ビンゴというゲームをご存知ですか?知っている人が多いと思いますが、5x5 のカード(ボード)に並べたマスに書かれた番号と、順番に発表される番号がマッチしたら、そのマスをマークして、一列(縦あるいは横)がマークできたら勝ちというシンプルなルールです。 今回は、発表用の番号と、複数のカードを与えるとどのカードが先に勝つかを計算するプログラムを作っていきます。これは毎年行われるAdvent Of Codeのパズルの一つで、このパズルの実装に特…
2年前
記事のアイキャッチ画像
ラーメンとともに振り返る2021年ProgateでのSREのお仕事
Progate Tech Blog
こんにちは、ProgateでSREとして日々運用している齊藤です。 本記事は Progate Advent Calendar 15日目の記事になります。 普段からラーメンの話ししかしてませんが、この回も「今年食べたラーメンとそのときに取り組んでいた仕事」という緩い感じでラーメンと弊社のSREの仕事を幾つか紹介させて頂きます。 老郷 本店 おせちもいいけどラーメンもね、ってことで今年一発目のラーメンは1月初旬に平塚のソウルフードと呼ばれている老郷(ラオシャン)へ。 ここのラーメンの特徴は酸っぱくワカメたっぷりで癖になる味です。 年内再訪しようと考えておりましたが今年は一度しか行けずに終わりそうで…
2年前
記事のアイキャッチ画像
スキーマ駆動開発をしてみて
Progate Tech Blog
こんにちは、Progateの関川です。 ユーザーの学習体験をよくするLearningExperienceチームに所属しており、主にサーバーサイドの開発をしております。 *本記事はProgate Advent Calendar 14日目の記事になります。 はじめに 弊社では昨年度から学習体験の向上できるよう、演習画面のSPA化を行うプロジェクトが進行中です。(各プログラミング言語によってフロントエンドの構成が変わるため、言語ごとに絶賛移行中でございます)。今回は、そのプロジェクトで新しいフロントエンド向けに作るAPIの開発で行っているスキーマ駆動開発について紹介したいと思います。 (Progat…
2年前
記事のアイキャッチ画像
Progateにおけるユビキタス言語策定活動の紹介
Progate Tech Blog
こんにちは、ProgateのLearningExperienceチームでテックリードをしている森田です。 主にサーバーサイド開発をしています。 今回はProgateで行っているユビキタス言語策定活動について紹介したいと思います。 ※ 本記事は Progate Advent Calendar 8日目の記事です。 ユビキタス言語が必要になった経緯 発端となった課題感は、大雑把にいうと「定義が曖昧な単語を使うと、余計なコミュニケーションコストがかかる」です。 この課題感が現れるパターンとしては、主に以下の3つでした。 同じものを指しているのに人によって違う単語を使っている 同じ単語を使っていても人に…
2年前
記事のアイキャッチ画像
API クライアント・型生成スクリプトを高速化して DX 改善した話
Progate Tech Blog
こんにちは、Progate の平川です。本記事は Progate Advent Calendar 4日目の記事になります。日頃業務ではフロントエンドの実装を担当させて頂いています。前回書かせて頂いた記事は少々辛い話だったので、今回はちょっとした DX 改善で幸せになった話について書きたいと思います。 tech.prog-8.com はじめに 弊社ではここ1年くらいで新しく作られた API の仕様を OpenAPI で管理するようになりました。これまでは API の仕様についてまとめられたものはなく、レスポンスの型などはすべて API のソースコードを読みに行く必要がありましたが、OpenAPI…
2年前
記事のアイキャッチ画像
現実のコードでの計算量の「1」はどれくらいの大きさか - 計算量の「1」の再確認
Progate Tech Blog
計算量といえば、少し前にちょっとした話題になったのを覚えている方も多いのではないでしょうか。しかし、学生さんなどに実際に計算量を数えてもらおうとすると、しばしば何を数えればよいのかわからない、つまり「1」の決め方で混乱している人を見かけます。そこで本記事では、時間計算量における「1」とは何者なのかを振り返ってみようと思います。
2年前
記事のアイキャッチ画像
おうちKubernetesに音楽ストリーミングサーバーを構築した話
Progate Tech Blog
Progateでデータエンジニアをしている穴澤 (id:aaaanwz)です。 本記事は Progate Advent Calendar 2日目の記事になります。 Google Play Musicがサービス終了してしまい「所有している音楽データをアップロードし、インターネット経由で聴く」というサービスでしっくりくるものが無くなってしまいました。 ちょうど昨日の記事でおうちKubernetes環境を構築しているため、これを期におうちKubernetes環境に音楽ストリーミングサーバーを構築してみます。 概要 家庭内LANからファイルサーバーとして使える ファイルサーバーにアップロードした音楽デ…
2年前
記事のアイキャッチ画像
Raspberry Pi 2 と Jetson nano でHybridおうちKubernetes環境を作ったときの話
Progate Tech Blog
Progateの前田です。 エンジニアマネージャーとしていろいろやってる傍、個人ではAWS Community Builder / AWS Startup Community Code Member として活動しています。 本記事はProgate Advent Calendarの1日目です! 今年の9月にEKS Anywhereのリリースがあって、ついに自宅にKubernetes環境を作る機運かと思い、おうちKubernetesに着手しました。 しかし残念なことに、EKS Anywhereはx86/amd64にしか対応していないので、ただのKubernetesクラスタを構築することになりました…
2年前
記事のアイキャッチ画像
画像をグリッチさせるサービスのAWS LambdaをRustで作るところからCDKでデプロイするまで
Progate Tech Blog
こんにちは、Progateのキリル(@virtualkirill)です。 AWS LambdaのRustランタイムがリリースされてからずっと使ってみたいと思っていました。本記事では、LambdaをRustで書いてAWSにデプロイするまでのステップを解説していきます。 文章が長くなりすぎないように、ある程度のRust、DockerとNode.jsの知識を前提にします。また、読者の環境にRustツールチェーン、DockerとNode.jsがインストールされていることを前提にします。 今回は、少しでも作業を楽しくするためにHello World的なハンドラーではなく、送られた画像のグリッチ版を返すナ…
2年前
記事のアイキャッチ画像
データドリブンな改善を進めるための第一歩 (ログ基盤の紹介)
Progate Tech Blog
Progateでエンジニアをしている山﨑です。本記事では弊社でよりデータドリブンな改善を進めていくために、サービス内でのユーザーの行動をログとして記録する仕組みを構築した事例を紹介いたします。 要旨 先に今回の取り組んだ内容を簡単にまとめます。 リレーショナルデータベースに永続化されないデータをログとして残すことで、今まで取得できなかったデータを取得可能にした データ収集にはFluentd, AWS Kinesis Data Firehose, S3, Lambda等のサービスを使用してパイプラインを構築した BIツールであるRedashからデータ分析を可能にした データ分析の課題 従来の運用…
3年前
記事のアイキャッチ画像
AWS Startup Community Tech Meetup 開催レポート
Progate Tech Blog
こんにちは、Progateの前田(@kzk_maeda)です。 Progateではエンジニアマネージャーとして働きながら、社外ではAWS Community BuildersやAWS Startup Community Core Memberとして活動もしております。 この記事はAWS Startup Community #6 のイベント開催レポートです。 当イベントは「LT 初心者大歓迎!はじめての LT すぺしゃる」と題打って、Startupで働くもののコミュニティでのLTにはあまり慣れていないようなエンジニアに集まってもらって、各社の技術的な話や社内で行っている勉強会の話などをしてもらい…
3年前
記事のアイキャッチ画像
ReactコンポーネントのテストにCypress Component Test Runnerが良さそうという話
Progate Tech Blog
はじめに こんにちは、Progateの舘野です。 最近、スクロール位置によってUIの状態が変わるReactコンポーネントのテストをどうしようかと悩む機会がありました。 一般的にはコンポーネントのテストにはReact Testing Libraryを利用すると思いますが、jsdomがレイアウトエンジンを持たないので、要素の寸法や画面上の位置などのレイアウトに関わる情報をテストできない制限があります。 一方で、CypressのようなE2Eテストツールであればブラウザを利用してテストするので、このようなケースでも問題なくテストできますが、実行速度とメンテナンスコストに難があります。 React Te…
3年前
記事のアイキャッチ画像
ProGuardでデバッグログを"完全"に削除することの難しさ
Progate Tech Blog
こんにちは、Progate の岩崎です。新卒で Google に入社して約9年間ソフトウェアエンジニアとして働いた後に Niantic へ転職、今年の1月から Progate のコンテンツチームで働いています。 Google で「ProGuardチョットデキル」エンジニアとして頑張っていた時期があるのですが、Progate でもその経験を活かそうということで社内の Android エンジニアと ProGuard について話をする機会を設けました。 ただミーティング中に「Progate と Proguard って名前似てるな」と実にしょうも無いことを考えていたので、その罪を償うために ProGu…
3年前
記事のアイキャッチ画像
モノリシックサービスから高負荷なエンドポイントを切り出して段階的に運用改善した話
Progate Tech Blog
Progateの小笠原です。普段はSREチームで開発効率化やサービスの安定化に取り組んでいます。 本稿では弊社SREチームで取り組んだ事例の一つである「モノリシックなサービスから高負荷なエンドポイントを切り出して段階的に運用改善した話」について紹介させていただきます。 はじめに ProgateのフロントエンドはReactを利用してリッチなUI/UXを実現しています。特にサービスの中心である演習画面ではユーザの書いたコードに対してエラーを出したり、サーバとWebSocketで接続してRubyやNodeなど様々な言語のコードを実行したりと複雑な構成となっています。 演習画面 開発ではリリース前にQ…
3年前
記事のアイキャッチ画像
Customize your favorite websites with Greasemonkey
Progate Tech Blog
Hi~ This is Ding from the Software Engineer team of Progate. Do you have some websites that you frequently visit but are not fully satisfied with the UI? Then this article is for you. What is Greasemonkey? What you need to know before reading Let's try to modify Twitter! Goal Investigation Start wri…
3年前
記事のアイキャッチ画像
入社3ヶ月でTechBlogを開設してAdvent Calendar完走した感想
Progate Tech Blog
入社3ヶ月でTechBlogを開設してAdvent Calendar完走した感想
3年前
記事のアイキャッチ画像
Progateにおけるserverless frameworkの運用知見を紹介します
Progate Tech Blog
Progateの小笠原です。普段はSREチームで開発効率化とサービスの安定化に取り組んでいます。 本稿では普段活用しているserverless frameworkに関する運用知見を共有します。 はじめに 弊社ではIaCの取り組みとして永続的なインフラリソースは基本的にすべてコード化しています。リソースの多くはterraformを使って管理しているのですがAWS Lambdaについてはデバッグ環境が整っており取り回しの良いserverless frameworkを用いて管理しています。 今回はserverless frameworkに関してProgateで運用していて踏んだ問題とその対応方法を紹…
3年前
記事のアイキャッチ画像
ProgateのDesign Principles(デザイン原則)を作成しました
Progate Tech Blog
こんにちは、Progateでデザイナーをしている屋宜(@kuon609)と申します。 この記事はProgate AdventCalendar 2020 23日目の記事となります。 Progateは創業から早6年を迎え、デザイナーの数も最初期は1名だったところから現在では業務委託や入社予定のメンバーを含めて8名まで増えました。 全員が下記のミッションを達成するために日々全力で業務に向き合っています。 Be the gate to the exciting world of programming.Be the path to an independent coder. プログラミングは人生に新し…
3年前
記事のアイキャッチ画像
若者にオススメしたい微妙な良書
Progate Tech Blog
はじめまして、Progateの村山です。エンジニアとして働いてから10年以上経ちました。 本記事はProgateAdventCalendarの22日目の記事です。 普段はSREチームでProgateの開発や運用を支える仕事をしています。 当初はコードレビューのガイドラインを整備した話を書こうと思ったのですが、内容がめちゃくちゃ長くなってしまう上、めちゃくちゃつまらない内容になったので、改めて書き直して別の機会で紹介できればと思います。 今回の記事では、微妙に流行ってないけどエンジニアリングに関わる人におすすめしたい本を紹介しようと思います。 これらは私個人がおすすめする本で会社として推薦してい…
3年前
記事のアイキャッチ画像
Pythonでライトに始める統計分析
Progate Tech Blog
株式会社Progateでソフトウェアエンジニアをしているsy-tenchoです。本記事は Progate AdventCalendar 2020 19日目 です。 12月と言えばプロ野球選手の契約更改の季節ですね。ということで今日は僕の贔屓球団である読売ジャイアンツの野手の年俸はどのような要因によって決まるのかということをお題に、Pythonを使った統計分析の方法を簡単に紹介したいと思います。 はじめに 僕はProgateでエンジニアをしている傍、大学で経済学などを勉強しています。その中で統計分析をすることがあるのですが、StataやEviewsといった定番ソフトは学校に行かないと使えないし、…
3年前
記事のアイキャッチ画像
リモートワークの振り返り
Progate Tech Blog
はじめまして、Progateの関川と申します。 本記事はProgateAdventCalendarの18日目の記事になります。 私はSoftwareEngineerチームに所属しており、主にバックエンドの開発をしています。 本記事は技術的なことではなく、コロナ情勢を機に導入されたリモートワークを経験して、リモートワークの難しさを感じつつもいいなと思った仕組みや習慣について書いていこうと思います。 技術的な記事を期待された方には申し訳ないですが、お付き合いいただけますと幸いです。 はじめに 私はリモートワークの経験がなかったので、どんなものかとワクワクしており、コミュニケーションがそこまで難しく…
3年前
記事のアイキャッチ画像
DynamoDB StreamsとKinesis Data Firehoseを使ったサーバーレスリアルタイムETL
Progate Tech Blog
何を書いた記事か 過去にDynamoDB Streams + Kinesis Data Firehose + Lambdaを用いたリアルタイムETLを検証した際のメモをこちらに転載します。 特にKinesis Data Firehoseの裏で動かすLambdaの実装に癖があったので、誰かの参考になれば幸いです。 前提 Webサービスなど展開していて、Database層にDynamoDBを採択している場合、そのデータを分析するための分析基盤構築手法として、Glueを用いたETLが一般的な選択肢になりうるのかなと思います。 最近DynamoDBのTableをS3にExportできる機能もGAになっ…
3年前
記事のアイキャッチ画像
Find out who has been stealing from your fridge
Progate Tech Blog
Good day everyone! No, you are not on the wrong page, it's just that today's post is written in English. This is Kai from the Product Internationalization team of Progate, and you are looking at the post for the 17th day of the Progate Advent Calendar. Today, I will be doing a short write-up on what…
3年前