kickflow Tech Blog

株式会社kickflowの開発チームによるブログ

ESLint を flat config に移行したときのお話

社内 AI にお願いして描いてもらった ESLint flat config のイメージ図
社内 AI にお願いして描いてもらった ESLint flat config のイメージ図

こんにちは。kickflow エンジニアの芳賀と申します。
今回は入社後初めて行った「ESLint の flat config 移行」についてお話します。
自身も久しぶりにガッツリ ESLint と向き合う機会だったので初心に帰り、調べ調べ行いました。

続きを読む

CloudConvertを使ってサーバーレスにファイル形式を変換する

江戸東京博物館所蔵・浮世絵
江戸東京博物館 所蔵・浮世絵『漬物早指南』
かつて漬物は各家庭で作るものであったが、近世以降は専門店が出店し、漬物を買う文化が生まれた(本編には関係ありません)。

こんにちは。プロダクト開発本部の小本です。

kickflowでは2024年2月からPDF形式で帳票出力できるようになりました これまで帳票出力ではXLSX形式でのみ出力可能でした。PDF形式での帳票出力では、まずサーバー側でXLSX形式での帳票を作成し、自動的にPDFへ変換してから出力します。

ところで、みなさんはXLSXをPDFに変換する処理は好きですか?自分でWindowsサーバーを用意してMicrosoft Excelをインストールする作業は好きですか? 私はNoです。だからCloudConvertを使っています。

続きを読む

社内ドキュメントに対応したSlack AIボット(GPT-4o搭載)を開発した話

こんにちは、CTOの小林です。

ChatGPTをはじめとした生成AI、便利ですよね。素のChatGPTでも十分に便利なのですが、業務で使うには社内ドキュメントにも対応して欲しいと誰もが思うのではないでしょうか。すでにOpen AIのAPIを使って社内ドキュメントに対応したAIボットを開発している事例は多数ありますが、kickflowでも社内用AIボットを開発して社員に展開しました。今日はこのAIボットのアーキテクチャや実装についてご紹介します。

続きを読む

JavaScriptで文字列の長さを正しくカウントする

文字列の長さをカウントするのは難しい

こんにちは、CTOの小林です。

JavaScriptで文字列の長さをカウントする際、特にサロゲートペアや合字を含む場合には注意が必要です。この記事では、String.length[...str].length、およびIntl.Segmenterを使用して文字列の長さを正しくカウントする方法について説明します。

続きを読む

Active Storageのダイレクトアップロードのパフォーマンスチューニング

こんにちは。エンジニアの森本です。

kickflowでは、申請するチケットに対してファイルを添付することができます。これらをActive Storage のダイレクトアップロードを使って実現しています。 以前からファイルを大量に添付したチケットを申請すると、タイムアウトが発生してしまう問題がありました。APMサービスを見てみると、ファイルをダウンロードしている処理がありました。 今回は、ダイレクトアップロードを利用していてファイルを大量にアップロードしたときにタイムアウトが発生しないように行った工夫を共有したいと思います。

続きを読む

kickflowでのRow Level Security導入: 成功事例と実装ガイド

プロダクト開発本部の小本です。

kickflowでは2024年2月から RLS / activerecord-tenant-level-security を導入しています。RLSは安全なSaaSを開発するために必須の機能なのですが、やや複雑な機能であり、新入社員は困惑する事が多いようです。そこで、RLSの概念とkickflowでの使い方を概説します。

続きを読む