DIGGLE開発者ブログ

予実管理クラウドDIGGLEのプロダクトチームが、技術や製品開発について発信します

PapaParseで始めるストリーム処理

はじめに パフォーマンス上の悩み ストリーム処理について ストリーム処理を使用する目的 Node.js / PapaParseにおけるStream 実例 今回改善した処理 おまけ (PapaParseのStreamだからできたパフォーマンス改善) まとめ We’re hiring! はじめに CSVって便利…

バグの原因調査で意識したこと

DIGGLEエンジニアのkishikawaです。最近業務でバグの原因調査を行う機会が多くありました。調査タスクに実際に取り組んでいく中で、実装タスクとは違った考え方・心構えが必要だと感じましたのでブログ記事として書いてみようと思います。 調査タスクに苦手…

ふつうのコンパイラをつくろうを読んで

DIGGLEのchikugoです。今回はふつうのコンパイラをつくろうという書籍を読みましたので、そちらの内容の紹介をします。本稿では細かいところは書籍に譲り、コンパイラがどのように動いているのかのイメージ感をつかめるところを目標にしたいと思います。書籍…

初めてRubyのコミュニティに参加して発表したときの話

はじめに Shibuya.rbとは なぜ発表しようと思ったか 発表準備 テーマ決め 発表内容あらすじ スライド作り GitHub に再現用レポジトリを作成 発表当日 会場へ 発表 発表後 振り返りと今後の展望 We're hiring! はじめに こんにちは、DIGGLEでWebエンジニアを…

日本に住む、海外国籍の人がDIGGLEで働いてみての感想

はじめに DIGGLEエンジニアのLiuです。昨今の日本では、DXのニーズが飛躍的に上がっています。そんな社会情勢の波で、IT人材不足とか、エンジニア関連業種は転職市場では売り手市場となっているなどのニュースがよく見られ、多くの会社はIT人材採用に苦戦す…

スタートアップに入社したSREとしてやったこと

はじめまして。9月にDIGGLEに入社したSREのTachibanaです。これまではインフラエンジニアやサポートエンジニアをやってきており、スタートアップのSREとして働くのはDIGGLEが初めてになります。入社してまだ3か月程度ですが、今年やってきたことを紹介したい…

isolated-vmを使って安全なサンドボックスを実現しようとした思い出

お久しぶりです。DIGGLEのhirataです。 今回isolated-vmというものを使用する機会がありいろいろ学びがあったため、ニッチではありますがその内容を公開することで誰かのお役に立てたら嬉しいです。 isolated-vmとは何か? 何をしようとしたのか ざっくりと…

ReactでのCanvasの活用 - 巨大なテーブルの表示を高速化

はじめに Canvasとは DIGGLEで活用している部分 DIGGLEでCanvasを利用することにした経緯 初期のPLレポート つい最近のPLレポート CanvasによるPLレポート 実装上の工夫 避難ハッチを使う部分(useRef)を隔離 Canvasに関わるRefはカスタムHookなどに押し込み…

専任スクラムマスターになって分かった、タスク管理のアンチパターン

はじめに 結論 タスクはいつ生まれるのか? タスクは誰が作るのか? タスクは誰が整理するのか? タスクを作成したメンバーが決める DEVチームで合議のうえ決める 作成から一定期間経過したタスクを棚卸する 見えてきた課題 積みあがっていくタスクたち 何の…

RubyのHash、Struct、OpenStruct、Data、Class、ActiveModel、ActiveRecordどうやって使いわけてる?

あるキーに対して値(バリュー)を持つ、いわゆるキーバリューのようなデータ構造はプログラミングでよく使います。Rubyでそれを扱うには複数の選択肢(Hash、Struct、OpenStruct、Data、Class)があり、Ruby on Railsを使う場合さらにActiveModel、ActiveRecord…

TSKaigi Kansai 2024に参加して

はじめに DIGGLE エンジニアのitoです。 DIGGLEではたびたびメンバーがカンファレンスに参加することがあります。今回、私は同じ開発チームの同僚のliuさんとともにTSKaigi Kansai 2024に参加しました。 kansai.tskaigi.org 参加した際には感想の記事を作成…

リリースフローの改善 - 素早いProductリリースのために取り組んでいること

DIGGLEでは、Productの改善を素早く反映するために2種類のリリースフローを使い分けてリリースを行っています。 現在、より素早いリリース→改善のサイクルの実現のためにリリースフローの改善に取り組んでいるのでそのお話をします。 これまでのリリースフロ…

pg_repack運用の勘所

はじめに 発生した問題点と解決策 【問題その1】毎回同じスキーマで失敗する 【解決策】pg_repackのデータベースを毎回作り直す 【問題その2】処理が終わらない 【解決策】同時実行処理数を増やした 【問題その3】まだ処理が終わらない 【解決策】開始時間の…

Rails7.1に上げようとしたらハマりまくった話

DIGGLEエンジニアのreenjです。 2024年4月下旬ごろにDIGGLEで使用しているRailsを7.0から7.1へアップデートする作業を行いました。 マイナーバージョンのアップデートであるため、当初それほど問題なくアップデートできるだろうと考えていました。 実際に、…

RubyKaigi2024 に参加しました

DIGGLEは、2023年に続いて2024年も継続してRubyKaigiスポンサーを努めました。5/15〜5/18に沖縄で開催されたRubyKaigi2024にnikuが参加したので、その際の感想を公開します。 RubyKaigiの発表は「Ruby自体をよくする、Rubyの適応領域を既存から押し広げてゆ…

DIGGLEは、RubyKaigi 2024にシルバースポンサーとして協賛します!

※ 上記画像中央のロゴはさわらつきさんの著作物です ※ Rubyのロゴはまつもとゆきひろ氏の著作物です DIGGLEのCTO水上です。 DIGGLE社は前年に引き続き、RubyKaigi 2024のシルバースポンサーとして協賛いたします。微力ながらRubyコミュニティに貢献ができれ…

DIGGLE React SPA開発におけるアーキテクチャの勘どころ

はじめに Reactを用いたSPAのアーキテクチャ SPAのアーキテクチャ React DIGGLEのフロントエンドアーキテクチャ Container/PresentationalパターンによるUIと状態・ロジックの分離 ViewModel Container Component Presentational Component メリット HOCパタ…

YAPC::Hiroshima 2024に行ってきたよ

ご無沙汰しています。DIGGLEのhirataです。 今回初めてYAPCに行ってきたのでその時の事を書いてみようと思います。 YAPCとは「Yet Another Perl Conferenceの略で、Perlを軸としたITに関わる全ての人のためのカンファレンスです」(サイトからの引用)でPerlを…

パフォーマンス分析基盤の構築。S3やAthenaを活用して柔軟性の高いデータの取り扱いを実現した話

はじめに Datadog API Clientによるデータの取得 パフォーマンス分析の概要 対象データ 分析方法 パフォーマンス分析基盤の構成の検討 データ保存先 構成 対応内容 サーバーサイド インフラ フロントエンド 最後に We're hiring! はじめに DIGGLEではすでにD…

なりすまし/迷惑メールと思われない為のDMARC導入手順

はじめに DMARC対応作業を始めるまで それは一通の問い合わせから始まった そもそもDMARCって何だ? 対応時の注意点 メール送信方法によって対応内容が異なる SPF、DMARCの対応は複数サービスで同じ場所に修正を加える必要がある SPF/DKIM未対応の状態でDMAR…

Rustで型付Webアプリケーション開発

この記事は Rust Advent Calendar 2023 25日目の記事です。 お久しぶりです。DIGGLEのhirataです。 今回はDIGGLEとは関係ないですが、個人的にRustの利用を促進すべくRustでのWebアプリケーションの開発経験について書きたいと思います。 所感としては一人で…

OWASP Top Ten に見る Web セキュリティの20年

OWASP Top Ten の全バージョンを表にして、脆弱性の変遷を見てみます。

複式簿記のアーキテクチャを理解する

この記事ははじめてのアドベントカレンダー Advent Calendar 2023 23日目の記事です。 こんにちは。DIGGLEのCTO水上です。アドカレのために何を書こうか悩んでいたら投稿前日になってしまいました。 悩んだ末、社内勉強会で一度話した内容を書くことにしまし…

自前のReact UI コンポーネントライブラリを Tailwind CSS で再構築した話

"The logo for the React open source JavaScript library" © Facebook (Licensed under CC BY 1.0) "Tailwind CSS Logo" © Tailwind CSS (Licensed under CC BY 4.0) この記事はReact Advent Calendar 2023 23日目の記事です。 はじめに Semantic UI React…

Pythonエンジニアが感じたRailsの戸惑いポイント

この記事ははじめてのアドベントカレンダー Advent Calendar 2023 21日目の記事です。 初めまして。 2023年10月にDIGGLEにエンジニアとして入社したaki0344です。 DIGGLEではバックエンドにRuby on Railsを利用しています。 そこで今回は、小学生の娘に『ル…

Rails7環境での最適なJavaScriptビルドツールの選択ガイド

この記事は Ruby on Rails Advent Calendar 2023 の20日目の記事です。 はじめに Rails7のJavaScriptビルドツールの比較 jsbundling-rails vs Shakapacker jsbundling-rails 長所 短所 Shakapacker 長所 短所 jsbundling-railsのバンドルの選択肢 Bun esbuil…

DIGGLEが行った今年の技術広報まとめ

技術広報 Advent Calendar 2023の16日目の記事になります。 はじめに 当ブログをはじめ、今年のDIGGLEは色々な技術広報活動を行ってきましたので、今年一年で何を行ったのかを振り返りたいと思います。 やったこと 今年一年で行ったこととしては、こんな感じ…

プロパティベーステスト (Property Based Testing) を Ruby で書き雰囲気を味わう

2023 年 10 月 30 日に『実践プロパティベーステスト ― PropErとErlang/Elixirではじめよう』(以下 実践プロパティベーステスト本)という本が出版されました。 プロパティベーステストというのは、テストの一手法なのですが、これまでとは違う範囲をカバー…

一人PdMでもできる!「事業開発」はじめの一歩

#BtoB事業開発アドカレ の記事です。「事業開発のはじめの一歩」として取り組んだことを書いています。

Ruby の oneshot coverage で本番稼働中の Rails アプリの使用状況を収集して不要なコードを発見するための仕組みを導入した話

前置き プロダクト開発は人の手によって行われるものですから、開発サイクルの中で不要なコードを削除し忘れる人的なミスはどうしても発生します。 後から不要なコードに気づき削除する際には、慎重にチェックして本当にコードが使用されていないことを確認…