アルダグラム Tech Blogのフィード

https://zenn.dev/p/aldagram_tech

株式会社アルダグラムのTech Blogです。 世界中のノンデスクワーク業界における現場の生産性アップを実現する現場DXサービス「KANNA」を開発しています。 採用情報はこちら: https://herp.careers/v1/aldagram0508/

フィード

記事のアイキャッチ画像
Apollo Clientのキャッシュ競合で無限ループ!?その原因と5つの対処法
アルダグラム Tech Blogのフィード
Apollo Client を使用した開発中に、「取得したはずのデータが消える」「なぜか GraphQL クエリが無限にリクエストされ続ける」といった不可解な現象に遭遇したことはありませんか?それは、Apollo Client における 「キャッシュ競合(Cache Clobbering)」 が原因かもしれません。本記事では、実際に遭遇したキャッシュ競合によるバグ(無限ループ)の仕組みと、その具体的な 5 つの対処法について解説します。 発生したトラブル:謎の無限ループある日、特定の画面を開くと、2 種類の GraphQL クエリが交互に、短時間で無限に実行され続ける という現...
20時間前
記事のアイキャッチ画像
Python で他生物の視覚をシミュレートする
はてなブックマークアイコン 2
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている内倉です今年も、一年が終わろうとしていますね。私のブログ当番は、これが今年最後の予定なので、また印象に残ったニュースを振り返ってみたいと思います。今年、個人的に気になったニュースは、だいぶ最近ですが日本では初めての発見となる、二枚貝と共生するヨコエビ、その名も「ユキミノノマルハサミヨコエビ」の発見です。(なんと風情のあるお名前…)研究者の方のコメントで、ミノガイの仲間ですが、調査で甲殻類を探していると海底の岩をどけたときに触手を活発に動かして蠢いている様子をまれに見ます。今回はそれを見て『何か寄生していないかな~』と考え貝を持...
8日前
記事のアイキャッチ画像
SEO 面での Gatsby → Next.js 移行ポイント
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている柴田です。最近の Web 開発では SSG(Static Site Generation)を採用するケースがあると思います。SSG の代表的なフレームワークとしては、Gatsby や Next.js が選ばれることが多いと思います(他にもいくつか候補はあると思いますが)。Web 開発において、SEO は避けて通れない重要な要素です。特に LP や EC サイトなどでは重要な要件になることが多く、その際に重要となるのが SEO 機能の実装難易度・運用コストになるかと思います。本記事では、Gatsby から Next.js(App Rout...
15日前
記事のアイキャッチ画像
学習のためのサービスを自分が普段使わない言語でAIに作ってもらった
アルダグラム Tech Blogのフィード
KANNAのバックエンド開発を担当している山下です。AIを使いながら個人で開発したサービスについて、作る中での気付きなどを書き留めてみたいと思います。 成果物https://learn-pm.vercel.app/プロジェクトマネジメントについて学習できるWebサイトを作りました。採点機能などもあり無料で使えますので、ぜひご利用&フィードバックをお待ちしています。(注意: こちらは山下が個人で開発したもので、アルダグラム社とは関係ありません) きっかけKANNAの新しい機能として、経営層に向けたものを作ろうという企画が立ち上がりました。それにあたり社内でプロジェクト...
22日前
記事のアイキャッチ画像
[TypeScript] Object.freeze() の代替としての as const satisfies の活用
アルダグラム Tech Blogのフィード
アルダグラムでソフトウェアエンジニアとして活動している松田です。TypeScriptでオブジェクトを定義する場合、プロパティの変更を防ぎたいことがあります。例えば、以下のような設定オブジェクトがあるとします。const appConfig = { API_URL: "https://example.com", API_VERSION: "v2", TIMEOUT: 5000,}JSで長らく開発してきた人にとっては、Object.freeze() を使うのが自然なアプローチかもしれません。// 実行時に不変にするconst appConfig = Object.f...
1ヶ月前
記事のアイキャッチ画像
【Compose Multiplatform】端末内の写真・動画ファイルを選択するファイルピッカーを作る
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている渡邊です。Android や iOS でアプリ開発を行う中で、端末内の写真や動画をアプリから参照したい、というケースは少なくないのではないでしょうか。ところが Android や iOS で写真や動画にアクセスするためにはアクセス権限が必要になったりと、実装が手間になることが多いです。ただ Android であれば PhotoPicker、iOS であれば PHPhotoPickerViewController を使うことによって、写真・動画へのアクセス権限が必要なくそれらのリソースを参照することが可能になっています。今回は Comp...
1ヶ月前
記事のアイキャッチ画像
外部DBとの整合性を守るためのトレードオフ:技術的に「正しい」解決策が、必ずしもビジネス的に「最適」ではない
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている森下霞です。外部DBとの同期処理、どこで呼び出すのが正解?LockWaitTimeoutの原因を追う中で、外部サービスへの呼び出しをトランザクション内で行っていたことが分かりました。そこから、LockWaitTimeout を避けるための対策を検討する中で、整合性・UX・実装コスト、それぞれのトレードオフをどう整理し、どんな判断に至ったのかを紹介します。 LockWaitTimeoutから始まった調査ある処理で ActiveRecord::LockWaitTimeout が発生しました。調査を進めると、DBトランザクション内で外部...
1ヶ月前
記事のアイキャッチ画像
[Playwright]E2Eテスト自動化におけるAIコーディングルールの作り方
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでQAエンジニアをしている千葉です!ここ数年で、AIを使ったコーディングが一般的になり、プロダクトの開発スピードが飛躍的に向上しました。これにより、UIの変更といった仕様変更が頻繁に起こるようになりE2Eテストコードの整備も今まで以上にスピード感が求められる時代になったのでは?と思います。今回は、E2Eテストの自動化もAIを前提としたコーディングの環境を整備し、自動化のスピードを向上させよう!ということで、弊社で定義しているE2Eテスト自動化におけるAIコーディングルールをご紹介したいと思います! 前提CursorやClaude code、GitHu...
2ヶ月前
記事のアイキャッチ画像
Android 14/15のTimePickerがアプリをクラッシュさせることがある
アルダグラム Tech Blogのフィード
TimePicker や TimePickerDialog で時間を変更しようとすると例外が発生してアプリをクラッシュさせるといった事象が報告されていたようです。https://issuetracker.google.com/issues/333670354発生条件Android 14もしくは15の一部機種スピナーモードにしているAM/PMの選択がボタンになるスタイル(Theme.AppCompat.Light など)を当てているログjava.lang.NullPointerException: Attempt to invoke virtual method '...
2ヶ月前
記事のアイキャッチ画像
品質は対話から生まれる ― QAユニットのなんでも相談会
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしているshige_sです今回は、QAユニットで取り組んでいる新しい試み 「なんでも相談会」 についてご紹介します。 背景アルダグラムでは、5つの開発ユニットにそれぞれ専任のQAエンジニアが所属し、スクラムに参加しています。この体制により、開発の初期段階から施策をキャッチアップし、テスト戦略を十分に練ることができています。一方で、各QAエンジニアは開発ユニット業務に深く入り込む時間が長いため、QAユニット同士で知見を共有したり相談する場が不足していると感じていました。もちろん、プランニングやレトロスペクティブは実施していますが、議題が...
2ヶ月前
記事のアイキャッチ画像
デザインシステムがあると何が良いんだろう?
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている kageyama です最近、「デザインシステムがあれば、この issue は解決する or 産まれなかったかも?」と思うことがありました。プロダクトが成長すると、ページごとで共通コンポーネントの扱いが若干違ったり、似て非なるコンポーネントが生まれる可能性があったりします。ドメインが違えば、共通コンポーネントも中々手が届かない位置にあったりします。これらが全てデザインシステムで解決できれば良いと願いつつ、この記事ではデザインシステムを作りたいと思った背景デザインシステムがあることのメリット・デメリットミニマム実装には何が必要なの...
3ヶ月前
記事のアイキャッチ画像
Excel関数の数式エンジンをTypeScriptで実装したらプログラミング言語の実装みたいで面白かったので解説してみる
アルダグラム Tech Blogのフィード
アルダグラムでエンジニアをしている @sukechannnn です!開発に携わっている KANNAレポート は、Excelを取り込んでその見た目のまま帳票を電子化できるサービスで、いくつかのExcel関数にも対応しています。以前 @watabee が登壇した際にその仕組みについて触れていますが、現状は数式の依存関係(他セルの参照や他セル数式の計算結果を利用して計算するなど)を深さ優先探索(DFS)によるトポロジカルソートで構築した上で、各数式の計算は math.js を利用して行っています。https://speakerdeck.com/watabee/kanna-android-...
3ヶ月前
記事のアイキャッチ画像
マルチプロダクト構成を支える KANNA のインフラアーキテクチャ
アルダグラム Tech Blogのフィード
はじめにこんにちは、KANNA の SRE チームの okenak です。今回は、KANNA のプロダクトを支えるインフラアーキテクチャをご紹介します。複数のサービスで成り立つ仕組みの中で、どうやって「止まらない」かつ「スケールできる」環境をつくり、さらに開発効率とコストのバランスを取っているのか。その工夫や取り組みをまとめました。 アーキテクチャの全体像 マルチサービスアーキテクチャKANNA はマイクロサービスではなく、モノリポをベースにした複数サービス構成です。サービスごとに独立して開発・デプロイでき、それぞれに合った技術スタックを採用しています。📦 K...
3ヶ月前
記事のアイキャッチ画像
Ruby製バックエンドのgemを一括アップデートした話
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている秋田です。弊社では以前、 フロントエンドのライブラリ134個を一気にアップデートしてリリース しました。それと同様に Ruby製のバックエンドのアップデートも実施したので、今回はその内容について紹介します。 まず言いたいことライブラリを一括アップデートするのは全くもってお勧めしません。フロントエンドのときに分かっていたのにどうして……というのはもっともなのですが、全体的にアップデートされていなかったので仕方ないです。それでもアップデートされていないならアップデートしましょう!後回しにするほど大変になるので。 主なバージョン...
3ヶ月前
記事のアイキャッチ画像
Next.jsのビルド速度を改善したい〜Next.jsのTrace情報を分析してボトルネックとなっている処理を特定してみる
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている今町です。ある日、Next.js で作られた Web アプリケーションをデプロイしていたときの話。「なんか、Next.js のビルド速度、遅くない…?」ということに気づきました(全体のデプロイ時間のうち、7 割がビルド時間になっていました)そんなわけで、Next.js のビルド速度を改善することにしました。 Next.js のビルド時間が遅い原因(ボトルネック)の調査まずは、Next.js のビルド時間のうち、どこの処理がボトルネックになっているのか特定する必要があります。Next.js は .next/trace にトレース情...
3ヶ月前
記事のアイキャッチ画像
生成AIでのテスト設計はこの「勘所3つ」を押さえれば大丈夫
アルダグラム Tech Blogのフィード
はじめにこんにちは!アルダグラムでQAのお手伝いをしているmiyashitaです!最近、QAのシステムテスト設計でもAI使いたいなぁ~と思い、色々と試行錯誤していました。その中で、こんな勘所を持っていたらAIでうまくテスト設計していけるのかも?と感じたところがありましたので、今回はそちらを紹介できればと思います。 使用するツールChatGPT:o4-mini-high 今回やりたいこと仕様書を解析して、テスト観点表を作成してもらう仕様書及びテスト観点表を基に、テストケースを作成してもらう 主な勘所AIをテスト設計で活用するための勘所は、以下の3つです...
4ヶ月前
記事のアイキャッチ画像
Devin Wiki を利用して、システム運用を行ってみる
アルダグラム Tech Blogのフィード
こんにちはアルダグラムでエンジニアをしている安政です。最近、システムの要件や仕様などの知見があまり残っていないシステムのお客様対応をすることが多くなりました。基本的にはKANNA以外のシステム運用は外部の会社に委託をしているのですが、委託先の会社さん自体も変更したばかりのこともあり、仕様の調査などに時間がかかる状況です。今回は、知見が残っていないシステムの保守業務を行うにあたり、どのような AI サービスを用いて、システムの全体像を把握したか、内部仕様の調査を効率化しているかについて簡単に共有したいと思います。 活用しているサービス弊社では、KANNA の開発に Devin...
4ヶ月前
記事のアイキャッチ画像
複数リポジトリをモノレポっぽくシンボリックリンクでまとめて Claude Code で開発しやすくする
アルダグラム Tech Blogのフィード
こんにちは。アルダグラムでエンジニアしている前山です。最近だと新規プロダクトを作る際、モノレポ構成にしてコンテキストを集約させた方が Claude Code で開発しやすいかなと感じています。ただ既存プロダクトで複数のリポジトリが分かれているケースが大いにあると思います。また、ghq のルートディレクトリで Claude Code を実行すると、タスクや開発に関係ないリポジトリまで子ディレクトリに含まれる状態になることもあるかなと思います。本記事では、ghq で管理しているリポジトリをシンボリックリンクで1つのワークスペースに集約し、Claude Code がタスクに必要なリポジト...
4ヶ月前
記事のアイキャッチ画像
不要なインデックス狩り:MySQLの矛盾と出会う
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでエンジニアをしている森下霞です。インデックス削除の基本的な方法や「削除すると書き込みが速くなる」といった話は、Google検索等ですぐに見つかります。この投稿では、自分が実際に不要インデックス削除を進める中で、「MySQLが『使っていない』と言っているのに実際は使っていた」、いわゆる「クエリオプティマイザから見て未使用だが、ストレージエンジンから見れば外部キー制約等に必要だった」という矛盾に遭遇し、どのように確認し、判断したのかを中心にまとめます。 未使用インデックス確認 sys.schema_unused_indexes とは未使用の可能性が高いイ...
4ヶ月前
記事のアイキャッチ画像
ちょっと待って!そのAIに作ってもらった正規表現、危険かも!
アルダグラム Tech Blogのフィード
こんにちは!アルダグラムでレポートチームのエンジニアをしている志茂です。レポートチームでは、お客様が利用されているExcelファイルをKANNA上にアップロードし、Webから編集できるような機能を開発しております。正規表現についてやってしまったなという話です。エンジニアなりたての頃は何も見ずに、正規表現をささっと書いてしまう先輩が職人っぽくてかっこよく思いましたが、最近はclaudeなり、GPTがあるので、判定したい文字列を渡して、複雑なものでもサクッと生成してしまうことが多いかなと思います。そんな正規表現ですが、合致するものをベースに生成した場合に、セキュリティ的にちょっと危...
5ヶ月前