kickflowを支える技術スタック(2022年10月版)
こんにちは、CTOの小林です。株式会社kickflowではクラウドワークフローのkickflowというサービスを運営しています。今日は、このkickflowを支える技術スタックについてご紹介したいと思います。kickflowの開発環境に興味のある方や、これから新規サービスを立ち上げようとしている方の参考になれば幸いです。技術スタックをまとめた図はこちらバックエンドkickflowのバックエンドはRu...
View Articleセキュリティチェックシートに効率的に回答する
こんにちは、CTOの小林です。SaaS事業を展開している会社では、セキュリティチェックシートは避けて通れない存在です。セキュリティチェックシートは、導入企業(つまりお客様側)がシステムのセキュリティ評価に必要な情報を収集するための書類です。...
View Articleelsaticsearch-railsを使うのをやめた話
こんにちは、CTOの小林です。kickflowでは検索基盤としてElasticsearchを利用しています。kickflowのバックエンドにはRailsを採用しており、以前はElasticsearchの統合にelasticsearch-railsという公式gemを使用していたのですが、これを使用しなくなったというお話をします。elasticsearch-railsとはgithub.comelasti...
View ArticleHerokuにLibreOfficeをインストールしてExcelをPDFに変換する
こんにちは、CTOの小林です。kickflowにはExcel形式(.xlsx)で帳票出力する機能がありますが、これをPDF形式での出力に対応したいと思い調査しました。...
View ArticleKaigi on Rails 2023に参加してきました
こんにちは、エンジニアの森本です。今回は先日開催された Kaigi on Rails 2023に参加してきたのでレポートを書きたいと思います。 Kaigi on Rails 2023は「初学者から上級者までが楽しめるWeb系の技術カンファレンス」 をコンセプトとして2020年から開催されているカンファレンスです。...
View Article「JSON Schemaを知っている」人のための今どきJSON Schemaの紹介記事
最近はティラノサウルス科恐竜には羽毛があったとするのが定説(本文には関係ありません)こんにちは。株式会社kickflow・プロダクト開発本部の小本です。最近、「設定をJSONファイルとしてエクスポート・インポートする機能」を実装する際にJSON Schemaをウン年ぶりに使いました。その際、私のJSON Schema観がジュラ紀のまま止まっていたことに気づいたので、最新のJSON...
View ArticleRails / PostgreSQL環境での連番の実装方法
こんにちは。株式会社kickflow・プロダクト開発本部の小本です。今回は連番の実装方法についてです。kickflowとは?どこに連番が必要?sequencedによる連番sequencedの問題点連番の要件を再確認kickflow の現在の連番実装We are...
View ArticleNuxt 3への移行がもうすぐ終わりそうです
こんにちは、CTOの小林です。年々歳をとるにつれて、1年がどんどん短く感じるようになってきました。12月なんて体感で3日くらいしかないような気がします。「師走」ということで、Stable Diffusionで生成した「走る師匠」の画像kickflowではこの1年は通常の機能開発と並行して、Nuxt...
View ArticleElasticsearchのインデックス切り替えを無停止で行えるようにしました
こんにちは。エンジニアの森本です。テキストでの全文検索はどのような仕組みを利用されていますか?...
View ArticlekickflowでのRow Level Security導入: 成功事例と実装ガイド
プロダクト開発本部の小本です。kickflowでは2024年2月から RLS / activerecord-tenant-level-security...
View ArticleActive Storageのダイレクトアップロードのパフォーマンスチューニング
こんにちは。エンジニアの森本です。kickflowでは、申請するチケットに対してファイルを添付することができます。これらをActive Storage のダイレクトアップロードを使って実現しています。 以前からファイルを大量に添付したチケットを申請すると、タイムアウトが発生してしまう問題がありました。APMサービスを見てみると、ファイルをダウンロードしている処理がありました。...
View ArticleJavaScriptで文字列の長さを正しくカウントする
文字列の長さをカウントするのは難しいこんにちは、CTOの小林です。JavaScriptで文字列の長さをカウントする際、特にサロゲートペアや合字を含む場合には注意が必要です。この記事では、String.length、[...str].length、およびIntl.Segmenterを使用して文字列の長さを正しくカウントする方法について説明します。String.lengthでのカウントJavaScrip...
View Article社内ドキュメントに対応したSlack AIボット(GPT-4o搭載)を開発した話
こんにちは、CTOの小林です。ChatGPTをはじめとした生成AI、便利ですよね。素のChatGPTでも十分に便利なのですが、業務で使うには社内ドキュメントにも対応して欲しいと誰もが思うのではないでしょうか。すでにOpen...
View ArticleRubyからJavaScriptコードを実行する方法
戦前、日本の鉄道網は連絡船を通じて樺太までつながっていた(本文には関係ありません)パブリックドメインの画像。wikimedia...
View ArticleESLint を flat config に移行したときのお話
社内 AI にお願いして描いてもらった ESLint flat config のイメージ図こんにちは。kickflow エンジニアの芳賀と申します。今回は入社後初めて行った「ESLint の flat config 移行」についてお話します。自身も久しぶりにガッツリ ESLintと向き合う機会だったので初心に帰り、調べ調べ行いました。ESLint の eslintrc...
View ArticleWasmを触ってみた
A pop and cute eye-catch image for a WebAssembly (wasm) related blog (Bing の Image...
View ArticleVue Fes Japan 2024 に行ってきました
社内AIに描いてもらったVue Fes Japan 2024のイメージ図初めまして、プロダクト開発本部の渡辺と申します。 kickflowに入社して数ヶ月が経ちました。日々の業務で多くのことを学び、充実した毎日を送っています。今回は「Vue Fes Japan 2024」というカンファレンスに参加したので、そのレポートをまとめようと思います。...
View ArticleKaigi on Rails 2024 に行ってきました
Kaigi on Rails 2024プロダクト開発本部の渡辺です。 先日の「Vue Fes Japan 2024」に続き、「Kaigi on Rails 2024」にも参加しました。 kickflowでは、エンジニアの自己学習を積極的に支援しており、さまざまなカンファレンスに参加する機会を提供しています。 会社の制度を最大限に活用させていただいております。Kaigi on...
View Articleoxlint を触ってみた
oxc のアイコンこんにちは。kickflow エンジニアの芳賀と申します。Vue Fes Japan 2024、多いに盛り上がりましたね。私自身楽しみつつも大いに収穫があるものとなりました。特に印象に残っていたのが oxc でした。エコシステムの拡充が進みつつ、みんなが一度は思い描いてたであろう 「Rust でツールチェインを書く」ことを実現されています。今回はその中でも oxlint...
View Articlekickflowのプロダクト開発の2024年を振り返る
こんにちは、CTOの小林です。今年のM-1グランプリも最高でしたね!さて、2024年も残り僅かということで、今日は2024年のkickflowのプロダクト開発をプロダクト・組織・技術など各観点で振り返ろうと思います。個別のリリース内容や技術を深堀りするよりは、全体を広く浅く紹介する記事になります。もっと詳細が知りたいと思った方は、ぜひエンジニア採用のカジュアル面談にご応募いただければと思います(←い...
View Articleネストしたトランザクション
こんにちは、プロダクト開発本部の渡辺です。先日、山を走るレースをしてきました。冬の山はとにかく服装のレイヤリングが重要です。気をつけていたものの、ベースレイヤーに綿素材のインナーを着てしまい、身体が冷えてお腹を壊してしまいました。何かを重ねる時、それぞれの特性や役割を意識する重要性を感じて、この記事を書いてみました。概要新しい機能を追加する際に、バックエンド側で非同期の処理を実装しました。...
View Article