RubyのMemoryViewでsumを高速化
RubyとApache Arrowの開発に参加している須藤です。RubyのMemoryViewの使い方がわからないという話を聞いてsumをするサンプルを作ったので紹介します。
Fluentdでレコードを分割するプラグインの紹介
クロスプラットフォームで動作し、オープンソースであるデータ収集ソフトウェアとしてFluentdがあります。 Fluentdはさまざまな用途にあわせてプラグインにより機能を拡張できます。 多くのプラグインが開発されているのは、要件を満たすべく新規にプラグインが開発される事例があるためです。
Fluentdで収集したログは、Fluentd内部ではイベントという形で処理されます。 イベントはタグと日時、レコードから構成され、収集されたデータはレコードに詰め込まれます。
発生したログをアーカイブ目的のため手を加えずになんらかの外部サービスに保存するだけということもありますが、 レコードに詰め込まれたデータの加工が必要となる場合が多々あります。
Fluentdでは非常に多くのプラグインが開発されてきているので、レコードを分割するという目的だけでも専用のものがいくつかあります。 今回はそのようなプラグインの中から、Fluentdサポートの一環として、お客様の要望に応じて新規でプラグインを開発した事例を紹介します。
GitHub Actions上のUbuntuでAlmaLinuxの仮想マシンを動かすときの注意点
GitHub ProjectsにOrganizationを横断してIssueを集約し、トラッキングしやすくする方法
GitHubを利用して様々なプロジェクトに関わっている場合、関連するissueを一覧で確認できると便利な場合があります。 Notificationsのフィルタを活用すればある程度一覧性を担保できますが、その結果を複数人で共有、加工等したい場合には不向きです。 GitHub ProjectsではOrganization配下に作成されたリポジトリのissueを任意で追加できるので、トリアージが必要なissueを登録しておくと一覧できて有用です。
クリアコードではFluentdの開発にも深く関わっていることから、Fluentdのサポートサービスを提供しています。 Fluentdにはプラグインのエコシステムがありますが、関連するリポジトリはあちこちに分散しています。 それらのリポジトリで新規に起票されたissueをGitHub Projectsで一覧できると有用なのですが、そのようなしくみは整えられていませんでした。
そこで、GitHub ProjectsにOrganizationを横断して既存のissueを集約し、Fluentd Kanbanとしてトラッキングしやすくした方法について紹介します。
2025年、fat gemをやめる
fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。2019年にもfat gemをやめる話をしていましたが、5-6年経ってもまだfat gemが使われているので、この5-6年でのアップデートを紹介します。
サポート事例紹介: nginxの最大接続数とreuseport
こんにちは。データ収集ツールFluentdのメンテナーの福田です。
今回の記事では、有名なWebサーバーアプリケーションであるnginxの最大接続数のチューニングについて調査した事例を紹介します。
最大接続数をチューニングするにあたり、reuseport設定とファイルディスクリプター数上限(worker_rlimit_nofile)を考慮する必要がある、という点が重要です。
この調査はクリアコードのFluentd法人様向けサポートサービスの一貫で実施したもので、 Fluentdとセットで周辺のフリーソフトウェアのサポートを実施した事例となっています。
nginxなどのwebサーバーの性能チューニングや、クリアコードの法人様向けサポートサービスに興味のある方は、ぜひ本記事をご覧ください。
PostgreSQL 17 Contributor Giftをもらった
COPYのフォーマットを拡張できるようにするためのPostgreSQLにパッチを送っている須藤です。本命のパッチはまだマージされていないのですが、マージされやすくなるといいなぁと思って関連するコードのパッチを書いたり、他の人のパッチをレビューしたりしていたらPostgreSQL 17 Contributor Giftをもらいました。
自動テストがなかったGo製Native Messaging Hostの自動テストの作り方
FirefoxやThunderbird、Chromium系ブラウザーなどの拡張機能では、Native Messagingという仕組みを使って、通常のAPIの範囲では行えないローカルファイルへの直接のアクセスなどを行えます。これは、ブラウザーが拡張機能からの求めに応じて「Native Messaging Host(以下NMH)」と呼ばれる特殊なネイティブアプリケーションを呼び出すことによって実現されます。
NMHはどのような言語で開発しても問題ありません1が、拡張機能がマルチプラットフォームで利用され得ることと、NMHは標準入出力を使う非GUIアプリケーションとして実装すればよいことから、当社では、単一ソースからマルチプラットフォームな実行ファイルを容易にクロスビルドできるGo言語(golang)を用いる場合が多いです。本記事では、このような前提で開発されたもののそれまで自動テストがなかったgolang製NMHに、後付けで自動テストを作る際の注意点を紹介します。
-
極端な例では、Bash用のシェルスクリプトもNMHとして使用できます。 ↩
BuriKaigi 2025のLTでOSS Gateの活動を紹介してきました
こんにちは。 OSS Gateのワークショップの企画・実施をここ数年担当している福田です。
2025年2月1日に開催されたBuriKaigi 2025において、OSS Gateの取り組みについて発表(LT)しました。 LTでは次のような話をしました。
OSS(オープンソース・ソフトウェア)の開発に参加したことはありますか? それはハードルが高いな、と思ったそこのあなた、実は少しコツをつかめば誰でも気軽に参加できるんです! OSS開発に興味がある方、世界を広げたい方、社員教育の題材をお探しの方などに、OSS Gateという面白い取り組みがあることを知っていただき、今後活用していただきたいです!
本記事では、このトークで伝えたい要点を紹介します! 合わせて、BuriKaigi 2025の様子も紹介します!
Groonga: パトリシアトライのキーをデフラグのバグ修正
Groongaのパトリシアトライについてちょっとわかってきたつもりの阿部です。
ちょっと前に意気揚々とパトリシアトライのキーをデフラグする機能を追加したことを紹介したのですが、その機能にバグがありました。かなしい。
本記事ではどのようなバグがあってどのように修正したのかを紹介します。
バグの説明をするためにパトリシアトライのレコード削除やレコードの再利用について知っておく必要があるので、はじめにその辺の説明をします。
(前の記事の続編な内容なので、前回の記事を読んでから本記事を読んでもらえるとうれしいです。)
LTS版 Fluent Package v5.0.6をリリース
2025年2月14日にFluent PackageのLTS(長期サポート)版の最新バージョンであるv5.0.6をリリースしました。
本リリースでは、Windows向けにいくつかの改善を行っています。
本記事ではFluent Packageの変更内容について紹介します。
2025年のGroonga族の肉の日メジャーリリース!
Groongaの開発に参加している須藤です。今年も年に一度の肉の日(2月9日のこと)が来ましたね!例年通り、GroongaとMroongaはメジャーバージョンアップしました!今年はついでにPGroongaもメジャーバージョンアップしました!この一年でどのくらいGroonga・Mroonga・PGroongaがよくなったかを紹介します。
ちなみに、世間ではメジャーバージョンアップをすると互換性がなくなってアップグレードが大変!というソフトウェアが多いですが、Groonga・Mroongaは非互換なしなのでいつもどおり安心してアップグレードできます!PGroongaは非互換がありますが、普通は関係のない非互換なのでいつもどおり安心してアップグレードできます!そこらへんは後述します。
fluent-logger-rubyで並列にログをFluentdに送信する方法
こんにちは。Fluentdチームの藤田です。
今回はfluent-logger-rubyという、Rubyプログラムから手軽にログをFluentdに送信するためのライブラリを取り上げます。
Rubyには並列処理を手軽に扱えるparallelというライブラリがあり、マルチプロセスまたはマルチスレッドで処理が行えるようになります。
これらを組み合わせて、並列的にfluent-logger-rubyでログを送信したときに問題なくログが送信できるか調べてみました。 実装次第では受信データが破損するケースがあるため、注意が必要です。
PGroongaの並列インデックス構築の並列度を最大にする方法
PGroongaのメンテナンスもしている堀本です。
PGroongaは4.0.0からPostgreSQL 17以降を使っている場合に限り、複数のCPUコアを活用してインデックスの構築を並列で実行できます。 (PostgreSQL 17より前のバージョンでは動作しないので注意してください。) 並列に実行するため、インデックス構築速度の高速化が期待できますが、場合によっては思ったほど高速にならない可能性もあります。
今回は、PGroonga 4.0.0を使ってもあまりインデックス構築が高速にならない人向けの記事です。
セキュアブラウザ「Chronos SystemGuard」と最新版定期リリースのご紹介
屋代です。2023年よりセキュアブラウザ製品「Chronos SystemGuard」を担当しています。
2025年2月14日に、Chronos SystemGuardの最新版となるv15.0.131.0をリリースしました! そこでこの機会に、次の2点について簡単にご紹介します。
- Chronos SystemGuardについて
- Chronos SystemGuardのリリースについて
Apache Arrowフォーマットはどのようにクエリー結果の転送を高速にしているのか
Apache Arrowの開発に参加している須藤です。先月、Apache Arrowの公式ブログにHow the Apache Arrow Format Accelerates Query Result TransferというApache Arrowフォーマットを使うとなぜクエリー結果の転送が高速になるのかを説明した記事が投稿されました。すごくよくまとまっている内容で、今後、何度も参照したくなりそうでした。ということで、Apache Arrowの公式ブログに翻訳記事を追加しておきました。昨今の機械翻訳は精度がかなり上がっているので人手の翻訳がなくても読みたい人は読む気はしますが、検索したときに見つかりやすくなるかもなぁと思ってやっておきました。
詳細はこの翻訳記事を読んでもらうとして、ここでは簡単に概要を紹介しておきます。
Gandivaが使っているLLVMのJIT機能をMCJITからORCv2にしたらシンボルが見つからないエラーになっていたけどLLVM 18.1で直った
Apache Arrowの開発に参加している須藤です。LLVMは詳しくないし、LLVMのどのコミットで直ったとかも調べていないし、私はレビューとか調査をしていただけで実装していないとかなんですが、最近、数年越しのGandivaの問題が直ったので雰囲気で紹介します。
Roaring bitmapsでビットより大きい情報を表現する方法
Groongaの結果セットにRoaring bitmapsを使えないか検討している須藤です。
以前、ClickHouseみたいにポスティングリストにRoaring bitmapsを使えないか検証しましたが、既存のPForDeltaの方がよかったのでやめました。しかし、結果セットには使えるかも?とは思っていました。ただ、Groongaの結果セットは「ヒットしたレコードはどれか」というビットで表現できる情報だけではなく、「ヒットしてレコードはどれで、それらのスコアはそれぞれいくつか」という「ヒットしたか」(ビットで表現できる)+「スコア」(64bit浮動小数点数で、ビットでは表現できない)というビットでは表現できない情報が必要です。そのため、使えるかも?とは思いつつ、じゃあどうやって?がわからずにそのままになっていました。
この間、なんとなくまたどうにかできないか調べてみたら、Roaring bitmapsのGo実装にはそれを実現する方法が含まれていることを見つけたので紹介します。まだGroongaでは検証していないので、Groongaで使いものになるかどうかはわかりません。
RubyKaigi 2025 3日目にアンドパッドさんとコード懇親会を開催するよ! #rubykaigi #codeparty
RubyKaigi 2025の3日目の夜にアンドパッドさんが開催するコード懇親会のお手伝いをする須藤です。
2025年3月19日の10:00から参加登録できるので、「コードで懇親?楽しそう!」と思うRubyKaigi 2025参加者は登録してね。
Microsoft Office製品のファイル内の文字列を検索、置換する
OfficeStringReplacerというMicrosoft Office 製品1のファイル内の文字列を検索・置換するツールを開発した橋田です。
Office文書に含まれる文字列の検索、置換処理を素直に実装するとものすごく時間がかかりますが、OfficeStringReplacerでは現実的な時間に収まるように工夫をしています。 この記事ではその工夫の詳細について解説します。
-
Microsoft Office、Access、 Excel、 PowerPoint、 Word は、マイクロソフト コーポレーションの商標です。 ↩
Apache Arrow 20.0.0からAPT/Yumリポジトリーが変わるよ!
Apache Arrowの開発に参加している須藤です。そろそろApache Arrow 20.0.0がフィーチャーフリーズされて、4月の中旬から下旬くらいには20.0.0がリリースされます。そんな20.0.0で予定されている変更の1つであるAPT/Yumリポジトリーに関する変更を紹介します。
互換性があるように変更するのでいきなり動かなくなることはないはずですが、長い目で見ると変更に追従しておいて欲しい、といった変更になります。
Termuxに新たにパッケージを追加する方法
本記事を書いている2025年3月、Google PixelでLinuxターミナルが動作するようになり、話題となりました。
今回は、従来からあるAndroid向けターミナルエミュレーターアプリであるTermuxに、それまで利用できなかったパッケージを新規で追加する方法について紹介します。
GroongaでApache Arrowフォーマットを使ってみるよ!
Apache Arrow東京ミートアップ2025に参加予定の阿部です。
GroongaはApache Arrowフォーマットでのデータロードと検索結果の取得に対応しています。 今回は実際にそれを使ってみる企画です。
Apache Arrowフォーマットのデータを作るところからやってみます。 次の流れで進めていきます。
- Apache Arrowフォーマットのデータを作る
- GroongaにApache Arrowフォーマットでデータをロードする
- Groongaで検索してApache Arrowフォーマットでデータを得る
Groonga用のMariaDBのutf8mb4_uca1400照合順序互換ノーマライザー
Mroongaの開発をしている須藤です。MroongaはMySQL/MariaDB/Percona Serverからいい感じにGroongaを使えるようにするストレージエンジンです。Groongaは全文検索エンジンなので、MySQL/MariaDB/Percona Serverだけで(ゼロETLで!っていうとナウいんでしょ!?)Elasticsearchとかなしにいい感じに高速高機能全文検索機能を実現できます。
そんなMroongaは10年くらい前からMariaDBにバンドルされています。MySQL・MariaDB作者のMontyさんがなんかの日本のイベントに来ていたときになんか話して「バンドルするか!」みたいな流れになったような気もするし、それとは別のところでなんやかんやしたような気もして、よく覚えていないのですが、バンドルされています。
なんだろう、思い出せないーと思ってインターネットを漁ってみたら、2014年のMyNA会で使った「MariaDBにバンドルされていないMroonga」になんか関連情報がありますね。歴史に興味がある人は眺めてみてね。
まぁ、そんなMroongaですが、MariaDBにバンドルされているMroongaの更新が大変で全然更新できていません。でも、それはまずいよねぇということでまた数年ぶりにチャレンジしています。で、今回はMroongaのコピーをMariaDBに入れるんじゃなくて、git submoduleでMroongaを入れようとしています。コピーだと、MariaDBが持っているMroongaの方にだけ最新MariaDBの対応が入って、本家のMroongaでは気づかずに「あれー新しいMariaDBでビルドできなくなってるー」みたいなことになるからです。
だいぶ前置きが長くなりましたが、MariaDBにバンドルするMroongaを更新するために、最新のMariaDBでも動くようにする作業をしています。
nginxでフォワード先を制限する際に気をつけるべきこと
こんにちは。データ収集ツールFluentdやWebサーバーnginxなどのサポートサービスを担当している福田です。
この記事では、nginxでフォワード先を制限する際の注意点を紹介します。
nginxをフォワードプロキシとして使うケースを考えます。 その際、セキュリティー等の目的でフォワードする宛先を制限したい、ということがあります。 これは一見簡単な設定で実現できそうかもしれませんが、実は注意するべき点が多くあります。
例えば、Hostヘッダー偽装(Hostヘッダーフォージェリ)に対処するため、$http_hostではなく$hostを使う、という話は有名かもしれません。
しかし、$hostはポート番号を含まないため、ポート番号も含めてフォワードするには工夫が必要です。
このように宛先制限には注意点があります。 本記事ではそれらを解説します。
Thunderbird 136の起動時に「設定ファイルを正常に読み込めませんでした。システム管理者に問い合わせてください。」と言われる原因と対処の事例
FirefoxやThunderbirdには、古い集中管理の仕組みとしてMCD(Mission Control Desktop)という機能があります。 元々はシステム管理者が決めた設定値を各端末のソフトウェアに強制適用するための物でしたが、現在その役割はポリシー設定機能が担うようになってきており、この用途においてMCDは、ポリシー設定機能では制御できない部分を補うために使われる程度となっています。
このMCDの設定ファイルを使用している環境では、FirefoxやThunderbirdの更新後に、起動時に「設定ファイルを正常に読み込めませんでした。システム管理者に問い合わせてください。」というメッセージが表示されるようになることがあります。 最近も、Thunderbrird 136への更新でこの現象が起こるようになったとのご相談をお客様から頂きました。
詳しく調査したところ、Thunderbird 136において、確かに同様のトラブルが起こりやすくなるような変更があったことと、多くの場合はモジュールの読み込みを行っている箇所を修正するだけで問題を解消できることが分かりました。 本記事では、この問題の背景事情と回避方法をご紹介します。
RubyKaigi 2025 - Goodbye fat gem 2025 #rubykaigi
RubyKaigi 2025でGoodbye fat gem 2025というfat gemをやめない?という話をしてきた須藤です。
Fluentdの日本コミュニティ向けのXアカウント開設のお知らせ
こんにちは。Fluentdの開発やメンテナンスに参加している藤田です。
Fluentd公式のブログでの情報発信やGitHubのIssuesでのやりとりなどは、主に英語を使用しています。
この度、もっと日本のユーザーの皆さんと直接繋がり、開発の現場からタイムリーな情報をお届けしたいと考え、日本コミュニティ向けのXアカウントを開設し、日本語での情報発信を始めることにしました!
コード懇親会2025自慢大会を開催するよ! #rubykaigi #codeparty
RubyKaigi 2025でアンドパッドさんが開催したコード懇親会をお手伝いした須藤です。2025年5月12日(月)(来週の月曜日)の夜にコード懇親会自慢大会を開催するので紹介します。まだ参加登録できるのでコード懇親会に参加した人もそうでない人も興味がある人は参加してね!
PGConf.dev 2025に「COPY FORMATを拡張可能にするパッチ」用ポスターを提供した
PGConf.dev 2025が開催中だということをすっかり忘れていた須藤です。私はPGConf.dev 2025に参加していないのですが、1ヶ月ほど前に「ポスターセッションに参加しない?」とメールで連絡をもらったのでポスターデータだけ送っていたのでした。実際に使われたのかどうかはわかりませんが、せっかく作ったのでここに置いておきます。
LTS版 Fluent Package v5.0.7をリリース
2025年5月16日にFluent PackageのLTSの最新版となるv5.0.7をリリースしました。
本リリースでは、パッケージでいくつかの改善が行われています。
本記事ではFluent Packageの変更内容について紹介します。
Apache Arrowのリポジトリー分割
Apache Arrowの開発に参加している須藤です。現時点でapache/arrowのコミット数は1位です。私はRubyでデータ処理できるようになるといいなぁと思ってApache Arrowの開発に参加し始めました。同じような人が増えるといいなぁと思うので、最近の活動を紹介して仲間を増やそうと試みます。
今回はapache/arrowリポジトリーでやっているリポジトリーの分割について紹介します。
どんなコメントを書くのか
13年前にリーダブルコードの解説を書いた須藤です。リーダブルコードにもコメントの話がありますが、本に書いているケース以外でもコメントを書くことがあるので紹介します。
ちなみに、私はできるだけコメントを書きたくない派ですが、そんな私でもコメントを書いておいた方がよいという場面があるのです。まぁ、レビューすることが増えちゃって、自分でコメントを書くというより、コメント書いておいて、と言うことの方が多いんですが。。。
Apache ArrowのCI - Crossbow
Apache Arrowの開発に参加している須藤です。現時点でapache/arrowのコミット数は1位です。私はRubyでデータ処理できるようになるといいなぁと思ってApache Arrowの開発に参加し始めました。同じような人が増えるといいなぁと思うので、最近の活動を紹介して仲間を増やそうと試みます。
今回はapache/arrowリポジトリーで使っているCIツール「Crossbow」を紹介します。
Rundeck: サービスを再起動すると終了しないジョブが現れる
定期実行といえばcronの阿部です。
定期実行するときにみなさまはどのようなソフトウェアをご利用でしょうか? この記事はFLOSS1サポート業務でジョブ管理ツールのRundeckについて調査したのでその事例紹介です。
(本題と全く関係ないのですが、最近、systemdのtimerという機能でも定期実行できることを知りました。)
-
"Free/Libre and Open Source Software"の頭文字から。自由ソフトウェアとオープンソースソフトウェアを包括的に表すときに使われる。 用語集 > FLOSS ↩
SQLで理解する!Groongaのドリルダウン入門
select max(_id) from table; なことをGroongaでしたい阿部です。
冒頭から余談です。 SQLは大文字で書く方がよくある書き方なんですが、小文字で書く派もそれなりいて私は小文字で書くのが好きです。 大文字で書くのがめんどくさいからです。ということで、本記事ではSQLは小文字で書きます。
閑話休題。
Groongaは集計もできます。 ただちょっとややこしいので、SQLで書くとこんな感じになりますよ、ということを示して世に多いであろうSQL好きにGroongaをPRするための記事です。
PGroongaでGroongaのリソースを確認する(n_buffer_segmentsの値)
PostgreSQLのautovacuumと格闘中の阿部です。
(という出だしで始めましたが本記事ではPostgreSQLのautovacuumについては触れないので、興味があれば公式ドキュメントをご覧ください。)
今回はPGroongaからGroongaのリソースを確認する方法を紹介します。
PGroongaはインデックスとしてGroongaを使うPostgreSQLの拡張機能です。 PostgreSQLにてお手軽にゼロETLで全言語対応の超高速全文検索機能を使えるようになりますが、より専門的なチューニングなどをする場合は内部で利用しているGroongaの状況も確認する必要があります。
今回はその一例としてGroongaのn_buffer_segmentsの値を確認する方法を紹介します。
Apache ArrowとCMake - FetchContent
Apache Arrowの開発に参加している須藤です。現時点でapache/arrowのコミット数は1位です。私はRubyでデータ処理できるようになるといいなぁと思ってApache Arrowの開発に参加し始めました。同じような人が増えるといいなぁと思うので、最近の活動を紹介して仲間を増やそうと試みます。
今回はApache Arrow C++で使っているビルドツールCMakeのFetchContentという機能を紹介します。
PowerShellで現在のセッションのカルチャを一時的に変更する方法
主にWindows環境での開発を行っている橋田です。
今回、PowerShellで現在のセッションのカルチャを変更する方法を調査しました。 これは、PowerShellのスクリプトがシステムのカルチャの影響を受けないようにしたい場合などに便利です。
バージョンによって対応方法が異なることや、その背景など、調査をして初めて知ったこともあったため、その調査結果を紹介します。
小さくはじめるRuboCop入門 (Fluentdへの適用事例)
クロスプラットフォームで動作し、オープンソースであるデータ収集ソフトウェアとしてFluentdがあります。 Fluentdはさまざまな用途にあわせてプラグインにより機能を拡張できます。 多くのプラグインが開発されているのは、要件を満たすべく新規にプラグインが開発される事例があるためです。 これまでもお客様の要望にあわせて、クリアコードでプラグインを開発した実績があります。
今回は、RuboCopをまだ導入していないプロジェクトにおいて、コードのリファクタリングの観点から "小さく"Fluentdに適用してみた事例を紹介します。
Apache Arrow JS 21.0.0
Apache Arrowの開発に参加している須藤です。Apache ArrowのJavaScript実装のバージョン21.0.0をリリースしたので紹介します。
Apache Arrow Swift 21.0.0
Apache Arrowの開発に参加している須藤です。Apache ArrowのSwift実装のバージョン21.0.0をリリースしたので紹介します。
ハンズオン: Redmine環境に高速な全文検索プラグインを導入してみよう(PostgreSQL編)
Redmineを高速全文検索するプラグインの開発に参加している児玉です。 ククログではこれまで何度かこのプラグインについてご紹介してきましたが、今回はDebian/Ubuntu向けハンズオン形式で「手を動かして」実際に導入するまでを紹介します! (他のOSをお使いの場合は、適宜コマンドやリポジトリ登録方法を読み替えて進めてください。)
Redmineのバージョンアップサポートの事例紹介(Knowledgebaseプラグインを置き換え)
2025/07/25に開催されたRedmine Japan vol.4に参加した阿部です。
Redmine Japan: https://redmine-japan.org/
普段はあまりこういったイベントには参加していないのですが、最近はRedmineのプラグインを開発したりしているので参加しました。
いろいろな方とお話するとRedmineバージョンアップ時に苦労されている様子でしたので、ご参考までに弊社で行ったバージョンアップの事例を紹介してみます。
Firefox ESR140.1のリリースとFirefox ESR128のサポート終了について
来る9月16日に、Firefoxの法人向け長期サポート版であるFirefox ESR1の、1つ前のメジャーバージョンにあたる「Firefox ESR128」のサポートが終了します。
Firefox ESRは現在、ESR140とESR128の2つのバージョンが存在しており、8月19日には、それぞれのセキュリティアップデート版であるESR140.2とESR128.14がリリースされる見込みです。 このうちESR128.14はESR128の最終バージョンになる予定で、ESR140.3のリリースをもってESR128はサポートが終了する旨予告されており、以後はESR140への移行が強く推奨されます。
当社では、Firefox ESR128からESR140の間の変更点のレポートを公開しており、このレポート中では10のカテゴリーに分けて、法人利用に影響が及ぶと考えられる変更点を詳細に紹介しています。 この記事では、その中で特に影響度が大きいと考えられる項目を5つのカテゴリーから抜粋してご紹介します。
-
Extended Support Release。通例、1年間のセキュリティアップデートが提供され、その間は機能的な変更は行われない。 ↩
Inkscape: 拡張機能の開発に入門するよ!
2年に1回くらいInkscapeを使って図を描いている阿部です。
みなさんはInkscapeをご存知でしょうか。 すこぶるざっくりいうとお絵かきソフトです。
Inkscape: https://inkscape.org/
そのInkscapeには拡張機能というのがあって、便利な機能を開発して組み込めることを最近知ったので入門してみました。
公式ドキュメントの通りに進めていくと入門できるので、そこには公式ドキュメントにおまかせして、ドキュメントに書いていない補足情報とかを共有します。
ブラウザーの拡張機能でコンテンツ内に安全に情報を埋め込む方法のベストプラクティスとバッドプラクティス
Firefoxの拡張機能開発で育ち、今はChrome/EdgeなどのChromium系ブラウザー向け拡張機能も開発している結城です。
これらのブラウザー向け拡張機能では、拡張機能が能動的にUIを表示する方法が限られています1。能動的に任意の位置にUIを表示したい場合、windows.create()でウィンドウを開くか、コンテントスクリプトを使ってコンテンツ内にUIを埋め込むかのどちらかの方法を取る必要があります。
この記事では、後者の「コンテンツ内にUIを埋め込む」やり方について、現時点でのベストプラクティスと、それ以外の方法の問題点を紹介します。
最初に結論だけ述べると、mode:'closed'のShadow DOMを使い、画像などは拡張機能のパッケージ内に含めておくのが現状でのベストで、それ以外の方法は全てセキュリティまたはプライバシー保護の点で問題があります。
-
拡張機能向けのAPIでは「デスクトップ通知」「(ツールバーボタンのクリック操作で開かれる)ポップアップ」「サイドバー(Firefox)」「サイドパネル(Chrome、Edge)」など拡張機能がUIを提供できる機能がいくつかありますが、ユーザー操作に対するイベントリスナーの中で直接的に呼び出した場合しか機能しなかったり、表示できるUIの形状が固定されていたりといった制限があります。 ↩
Rabbit 4.0.0 - ついにGTK 4に対応!
Rubyist用プレゼンテーションツールRabbitを開発している須藤です。
GTK 4に対応したRabbitをリリースしたので自慢します。GTK 4に対応したのでバージョンを4.0.0にしています。メジャーバージョンアップですが、大きな非互換はないはず。だれも使っていなそうな機能が消えたくらい。
Fluentd v1.19.0 リリース - 運用コスト削減
2025年7月30日にFluentdの最新版となるv1.19.0をリリースしました。
本リリースでは、多くの機能追加や不具合修正をしています。 特に、運用コストとランニングコスト削減に効果のある機能や安定性向上の強化を複数実施しています。
本記事では、Fluentd開発者が最新のリリース内容を紹介します。
Active Record ADBC adapter - ADBCで大量データを高速移動!Ruby on RailsアプリからDuckDBも使えるよ!
Ruby用のデータ処理ツールを提供するプロジェクトRed Data Toolsをやっている須藤です。
数年前からRuby on RailsアプリケーションでADBCを使えるとよさそうだなぁと思っていた(証拠1、証拠2)のですが、ついにそれが動くようになったのでactiverecord-adbc-adapterとしてリリースしました。
ADBCとはArrow Database Connectivityの略で、Apache Arrowを使ってDBと高速に大量データをやりとりするための仕組みです。Active RecordでADBCを使えるようになると、Ruby on Railsアプリケーションでの大量データのやりとりが速くなります。また、Active Record経由でDuckDBも使えるようになります。DuckDBもADBCをサポートしているからです。
Fluentdの安定版パッケージ新シリーズ Fluent Package v6 LTS リリース - 運用コスト・ランニングコスト削減
2025年8月29日に、Fluentdの安定版パッケージの新シリーズである、Fluent Package v6 LTSをリリースします。
現在の安定版パッケージであるFluent Package v5 LTSシリーズは、今年2025年末でサポート終了となります。 本リリースはその次期シリーズであり、2027年末までサポートされます。
また本リリースでは、ゼロダウンタイム・アップデート/リスタート機能、リカバリーの簡易化、パフォーマンス改善など、運用コストやランニングコストを削減する機能改善を多数実施しています。 v5 LTSシリーズは2025年末でサポート終了となりますので、それまでにぜひアップデートしてください!
本記事では、Fluentd開発者が最新のリリース内容を紹介します。
Fluent Package v6 LTS へのアップデート手順
2025年8月29日に、Fluentdの安定版パッケージの新シリーズである、Fluent Package v6 LTSをリリースします。
本記事では、Fluent Package v6 LTSへのアップデート方法について紹介します。
Thunderbirdの障害発生時の調査資料採取手順(Windows篇)
はじめに
クリアコードはThunderbirdのサポートサービスを提供していますが、その一環でThunderbirdの障害の調査を実施することがあります。
調査のために収集が必要な情報は、発生した障害の内容によって様々ですが、当社のサポートサービスのお客様からのお問い合わせでは、SMTP・POP3・IMAPでのメール送受信時と、フォルダーの最適化実行時、およびGUIのカスタマイズに関するトラブルのお問い合わせが多い傾向があります。
この記事では、これらに類するトラブルの発生時に原因究明のためによく採取を依頼する情報について、一通り採取する手順をご紹介します。
Thunderbird 128.11以降でファイル共有サーバー上のemlファイルを開けない問題の回避方法とその背景
Firefoxの「安全でないダウンロードの遮断」機能の回避手順と実装の背景、および調査対応のポストモーテム
WebブラウザーのFirefoxには、ユーザー保護の一環として「安全でないダウンロードを積極的に遮断する」機能があります。 「安全でないダウンロード」とは具体的には、HTTPSで接続しているWebページからHTTPのURLで参照してファイルをダウンロードしようとした場合を指します1。 通常の利用では安全性が高まって望ましい動作なのですが、法人運用で業務が依存しているWebサイト2がHTTPSではなくHTTPでの接続になっている場合、この機能の影響によってファイルのダウンロードができなくなり業務に支障をきたす場合があります。
この動作について、約1年前のFirefox 125(125.0.1)のリリースからしばらくの間、機能が強化されたり、緩和されたり、再度強化し直されたり、という不安定な状況が発生していました。 また、「特定のドメインでのみ安全でないダウンロードを許可する」ということもできず、機能を恒久的に無効化する以外の選択肢がないために、前述のような状況が発生した企業での運用には注意が必要でした。 その後、関係するポリシー設定がいくつか追加もされました。 こういった諸々の事があった結果、結局この機能は何だったのか、どうすれば制限を回避できるのか、ということが分かりにくくなってしまっています。
本記事では、お問い合わせに基づき当社で行った調査の範囲で、業務利用でこの機能の影響を受けないようにするための正しい解決あるいは回避の方法と、この機能が辿った変遷、および、それらを明らかにするまでに行った調査の過程とそこに見られた課題をご紹介します。
Thunderbirdで「マスターパスワードを使用する」設定が強制適用されない事象と、修正までの回避策
屋代です。
Mozilla Thunderbirdをお使いのお客様から、次のような問い合わせがありました。
- Thunderbirdにマスターパスワード1を強制的に適用する設定を導入したい
- インストールディレクトリ
C:\Program Files\Mozilla Thunderbird配下にdistributionディレクトリを作成しpolicies.jsonを配置した policies.jsonに"PrimaryPassword":trueと記載したが、マスターパスワードが無効化できてしまう
調査したところ、Thunderbirdの不具合と判明しました。
-
「マスターパスワード」の名称は英語版Thunderbirdでは「Primary Password」に変更されています Primary Password is replacing Master Password in Thunderbird (support.mozilla.org)。 当記事では日本語UIの文言にならい「マスターパスワード」を使用します。 ↩
Groongaサポートサービスの事例紹介 - Groongaのバージョンアップ
Groongaのサポートサービスを担当している阿部です。
Groongaのバージョンアップをサポートした事例を紹介します。
EOLにともないイメージサーバーから削除されてしまったコンテナの代替手段
Linuxディストリビューションにおいて、標準のサポート終了にともない、関連するリソースが これまでと同様には利用できなくなってしまうことがあります。
例えばUbuntu 20.04 (Focal)は、5年間のLTSサポートを終了し、 Expanded Security Maintenanceとよばれる、延長サポートに移行しています。
これにともない、GitHub ActionsではUbuntu 20.04のランナーは利用できなくなりましたし、 LXC/Incusから利用できるイメージサーバーからも削除されました。
本記事では、EOLにともないイメージサーバーから削除されてしまったコンテナの代替手段を確保する方法について説明します。
Firefox ESR140での差分更新の適用手順
結城です。
通常、Firefoxは動作中にバックグラウンドで更新用の差分ファイルを自動的にダウンロードし、再起動のタイミングで更新を適用します。 しかし企業などでの運用においては、一般ユーザーには管理者権限を与えない場合があり、そのような場面では、Firefoxの更新は管理者やシステム権限でのインストーラーの再実行、もしくは更新用の差分ファイルをローカルで適用して行うことになります。 配布ファイルのサイズが小さく済む差分ファイルのみを各端末に配布し、ログオンスクリプトなどを用いて端末上でローカルで適用するやり方は、組織内ネットワークの帯域の逼迫を防ぎたいといった事情がある場合には有用と言えます。
この差分ファイルの適用手順は長らく変化がありませんでしたが、Firefox ESR140時点(より正確に言えばFirefox 138時点)で一部の仕様が変わっており、従来の手順では差分更新を行えなくなっています。 本記事では、Windows端末上でFirefox ESR140に差分更新をローカルで適用する手順を改めて紹介します1。
-
本記事の情報はMozillaの日本コミュニティポータルに提供した法人向け技術情報を補完する物で、本記事で述べている情報を含めるための修正も提案済みとなっています。 ↩
公開のOSS開発プロジェクトの業務での開発事例:Waterfoxのツリー型タブと垂直タブの統合
結城です。
昨年、Firefoxのフォーク版の一つとして知られるWaterfoxプロジェクト主催のAlex氏からのご依頼に基づき、Firefox用アドオン「ツリー型タブ(Tree Style Tab、以下TST)」を組み込む作業を行いました。 本年8月にリリースされたWaterfox 6.6.0ではその発展として、Watarfox本体の垂直タブとの統合作業を行いました。

本記事では、今回の契約の経緯と開発の成果の技術的側面のそれぞれをご紹介します。
Redmine全文検索プラグインの全機能紹介!(2025年版)
Redmine全文検索プラグインに「クエリー展開」なる機能があることを先ほど知った阿部です。
ということで、全文検索プラグインにどのような機能があるのか知りたい方向けに網羅的な機能説明から構成までを紹介するのが本記事です。
(弊社のブログでも何度か紹介されている全文検索プラグインですが、機能の網羅的説明や構成の全体像を説明している記事はないので改めて説明します。)
共有ライブラリーをDebianパッケージ化する方法を紹介
こんにちは。 OpenArmの開発に少しずつ参加している福田です。
最近、OpenArm CAN LibraryのDebianパッケージを作成しました。
本記事では、現時点の最新のdebian/のお作法をまとめました。
LTS版 Fluent Package v5.0.8をリリース
2025年10月8日にLTS版 Fluent Package v5.0.8をリリースしました。
本記事では、Fluent Package v5.0.8の変更内容を紹介します。
Groongaでのセマンティックサーチの実装
Groongaの開発をしている須藤です。Groongaはもともとキーワードベースの全文検索機能を提供する全文検索エンジンとして開発されましたが、このご時世なので、セマンティックサーチサポートも拡充しています。この記事では現状のGroongaのセマンティックサーチのサポート度合いを紹介します。
実装者向けのApache Arrowフォーマットの説明
Apache Arrowの開発に参加している須藤です。Apache Arrowフォーマットの説明をするときはどうして速いのかやどうして効率がよいのかに注目して説明していました。今回は、Apache Arrowフォーマットのシリアライザー・デシリアライザーを実装する人向けに説明します。
実践!Perlのワンライナー ~Perlがあれば何でもできる~
Perl大好き阿部です。
YAPC::Fukuoka 2025でトークできることになりました。 内容の概要はこちらをご覧ください!
その内容がPerlにまったく関係ないので、Perl好きの断片を語るための記事です。
2025年度Rubyアソシエーション開発助成金:pure Ruby Apache Arrowの実装
Apache Arrowの開発に参加している須藤です。この数年度はRubyアソシエーション開発助成金をメンターとしてお手伝いしていたのですが、今年度は開発する側として参加します。拡張ライブラリーとかを使わずにRubyのみでApache Arrowフォーマットのシリアライザー・デシリアライザーを開発します。
LTS版 Fluent Package v6.0.1をリリース
2025年11月11日にLTS版 Fluent Package v6.0.1をリリースしました。
本記事では、Fluent Package v6.0.1の変更内容を紹介します。
頑なに再代入しない!
頑なに再代入しない阿部です。
YAPC::Fukuoka 2025で頑なに再代入しない!というタイトルでトークします。
スライドも公開しますが、発表用のスライドのため十分な説明が記載されていないので、解説テキストを追加したブログ記事も残します。
Fluent Package v6 LTSで利用可能になった OpenTelemetry プラグインを紹介
2025年8月29日に、Fluentd の安定版パッケージ Fluent Package v6 LTS をリリースしました。
この v6 LTS ではいくつかのプラグインを新たに同梱しており、そのひとつが OpenTelemetry プラグイン です。
このプラグインを利用すると、Fluentd から直接 OpenTelemetry Collector や OTLP 対応サービス(Grafana Tempo、Datadog、New Relic など)へログを転送できます。
本記事では、この OpenTelemetry プラグインの概要と基本的な使い方を紹介します。
Thunderbird版FlexConfirmMailユーザーの皆さまへのご案内:「自動更新あり」の状態を維持するための移行ガイド
結城です。
当社のメール誤送信対策製品「FlexConfirmMail」のThunderbirdアドオン版を従来から使用している方は、自動更新によって提供された最新バージョンとして4.2.5をお使いかと思います。 現在、このFlexConfirmMailの不具合を修正し新機能を追加した新バージョンとして4.2.8が公開されていますが、従来からFlexConfirmMailをお使いの方の環境では、このバージョンは自動更新では反映されません。 今後もFlexConfirmMailをThunderbirdでお使い頂く場合は、FlexConfirmMailの再インストールと設定の引き継ぎが必要となります。
本記事では、FlexConfirmMailの再インストールおよび設定の引き継ぎが必要となっている背景事情を説明し、実際の引き継ぎ手順を説明します。
RubyWorld Conference 2025 - Ruby Prize 2025最終ノミネート者
Ruby Prize 2025で最終ノミネート者に選んでもらった須藤です。RubyWorld Conference 2025内で表彰式があったので参加しました。
CloudNative Days Winter 2025で「クラウドネイティブ時代に進化し続けるFluentd」の発表を行いました! #CNDW2025
こんにちは。Fluentdのメンテナーの福田です。
2025年11月18日,19日に開催されたCloudNative Days Winter 2025にて、 クラウドネイティブ時代に進化し続けるFluentdというタイトルで、 弊社の藤田と一緒に発表を行いました。
当日の発表内容を改めて紹介します。
須藤、空いています
須藤です。Ruby関連の開発をしたり、Groonga関連の開発をしたり、Apache Arrow関連の開発をしたりしています。
この3年くらいApache Arrowの開発がメインの業務でしたが、いろいろあって7割くらいなくなりました。お仕事のネタがないわけではないのでなにかしらでなくなった分を埋めることはできるのですが、せっかくの機会なのでどんなことをできる可能性があるのかを検討したいと思っています。
ということで、私となにか一緒にお仕事をしたい人からの連絡を待っています!たぶん、数ヶ月くらいでだいぶ埋まると思うので、興味のある人は来年の1月一杯くらいまでに連絡をしてもらえるとうれしいです。
PostgreSQL Conference Japan 2025:PostgreSQLでのセマンティックサーチへの挑戦 #pgcon25j
PostgreSQL Conference Japan 2025に参加して、「PostgreSQLでのセマンティックサーチへの挑戦」というタイトルで発表をした堀本と阿部です。
スライドを公開しましたが、補足・解説テキストを追加した記事も残します。
YoctoレシピをISAR向けに移植するときにはまらないためのヒント
組み込みLinuxでは、ターゲットとなるOSをビルドするためのYoctoレシピが提供されていることがあります。 そのような事例では、広く公開されているレシピをベースに、企業が独自に追加の修正を施したレシピを適用する ということが行われたりします。
今回は、そのようなYoctoのレシピをISAR向けに移植することになったときにはまらないためのヒントをいくつか紹介します。 (Yoctoレシピにはある程度慣れているが、Debianパッケージにはあまり慣れていない人が対象です。)
AOSPエミュレーターイメージのカスタマイズ
弊社では組み込みLinux機器向けのソフトウェア開発案件を承っておりますが、その一環でAOSP(Android Open Source Project)のカスタマイズについても実績があります。
今回は、社内向け備忘録の意味も込めて、AOSPエミュレーターイメージのカスタマイズ方法について説明します。
Mroonga 15.21 リリース!
MySQL, MariaDB, Percona Serverで高速に全文検索するためのストレージエンジンMroongaのメンテナンスをしている堀本です。
Mroonga 15.21をリリースしました! 直近のリリースが2025-09-30なので、2ヶ月ぶりのリリースです。
今回のリリースでは、Debian 13とMariaDB 11.8を新たにサポートしました。 Debian 13は2025-08-09に、MariaDB 11.8は2025-06-08にリリースされました。 Debian 13は数ヶ月、MariaDB 11.8に至ってはサポートに半年かかってしまいました。。。
がんばってサポートしたので、この記事では、Debian 13とMariaDB 11.8のサポートに時間がかかった理由を紹介しようと思います。
Red FlatBuffers:IO::Bufferを使ったpure Ruby FlatBuffers処理系
これはRuby/Rails Advent Calendar 2025の9日目の記事です。
Red Data Toolsをやっている須藤です。pure RubyでApache Arrowの実装を作ることにしたのですが、Apache Arrowの実装に必要なFlatBuffersがRubyをサポートしていなかったのでそこから作っています。
FlatBuffersはパースなしでデータにアクセスできるシリアライゼーションフォーマットです。たとえば、"[10, "hello", true]"というようにJSONにシリアライズした場合は、文字列の"10"をパースして数値の10にしないとデータを使うことはできませんが、FlatBuffersではそんなことをしなくてもデータを使うことができるということです。
FlatBuffersを使う場合は、まずスキーマを定義して、そのスキーマから各種プログラミング言語のソースコードを生成します。その生成されたソースコードを使うと、対象のスキーマ向けにシリアライズされたFlatBuffersデータにアクセスできます。
ソースコードを生成するプログラムはC++で実装されているので、Rubyのソースコードを生成するモジュールをC++で実装したのですが、レビューもマージもされなそうな気がするので、pure RubyでFlatBuffersの処理系(FlatBuffersのスキーマからそれを処理するRubyのソースコードを出力するプログラム)を作ることにしました。
それがRed FlatBuffersです。Red FlatBuffersはとみたさんが紹介していたIO::Bufferを使っているので、どう使っているのかを紹介します。
ちなみに、Red FlatBuffersを作り始める直前くらいにFlatBuffers「も」処理できるUnibufが公開されていましたが、StringIO#readしてからString#unpack1するとか無駄なコピーをしていそうだったのでRed FlatBuffersを作ることにしました。
PGroongaで踊り字の有無を無視して検索する方法
PostgreSQLで高速に全文検索するための拡張PGroongaの開発をしている堀本です。
突然ですが、日本語には踊り字というものがあります。 久々の"々"とか、こゝろの"ゝ"とか、前の文字を繰り返す記号のことです。 現代の文書でも見かけますが、古い文書でも多用されています。
「久々」は、「久々」と検索しそうですが、「こゝろ」は「こころ」で検索したくなります。 このような表記ゆれを統一して検索したいというのは、よくある問題です。
最近よく聞くセマンティックサーチもこの問題を解決するための一つの手段ですが、正規化するというのも一つの解決手段です。
少し前にGroonga(PGroongaのバックエンドで動いている全文検索エンジン)に踊り字を正規化する機能を追加したので、PGroongaでそれを使う方法を紹介します。
RailwayでPGroongaを手軽にデプロイする方法
RailwayでPGroongaのテンプレートを公開した児玉です。
この記事では、まずRailwayについて簡単に紹介し、その後PGroongaテンプレートの使い方を説明します。最後に実際の利用例として、Redmine全文検索プラグインを利用したRedmineをRailway上で動かすデモを用意しました。
LTS版 Fluent Package v5.0.9をリリース
2025年12月19日にLTS版 Fluent Package v5.0.9をリリースしました。 Fluent Package v5 LTSは2025年末までのサポートを予定しており、 Fluent Package v5.0.9はv5 LTSの最後のバージョンとなります。
本記事では、Fluent Package v5.0.9の変更内容を紹介します。
RailsTokyo#2【sponsored by 株式会社タイミー】 - Active Record ADBC adapter #railstokyo_meetup
RailsTokyo#2【sponsored by 株式会社タイミー】でActive Record ADBC adapterを紹介しつつRailsアプリで活用できそうかどうかを聞いてきた須藤です。