ククログ(6)

WebExtensions用Native Messaging HostをmacOS向けに安全に配布する

結城です。

Firefox、Thunderbird、Google Chrome、Microsoft Edgeなどのアプリケーション用の拡張機能(WebExtensions)は、セキュリティ上の制限のために、任意のローカルファイルへのアクセスや外部の任意のプロセスの起動といった処理を行えません。 そういった処理が必要な場合は、処理を代行する小型のネイティブアプリケーションであるNative Messaging Hostを別途開発して、API経由で実行する1必要があります。

当社のメール誤送信対策製品「FlexConfirmMail」のThunderbirdアドオン版も、一部の機能でNative Messaging Hostを使用しています。 このNative Messaging Hostは今までWindows用の物のみを提供していましたが、当社の法人向けThunderbirdサポートサービスのお客さまからのご要望に基づいて、FlexConfirmMail 4.1.5からはmacOS用のバイナリも提供するようになりました。 この過程で、macOS向けにNative Messaging Hostを頒布する際の知見が溜まったため、その要点を簡単に解説します。

  1. Native Messaging Hostだけは例外的に、ネイティブアプリケーションであってもAPI経由で起動できるようになっています。

もっと読む

プレゼン資料の画面共有中にデモ用の端末の画面を安全に映したい!

結城です。

コロナ禍以後、オンラインでの会議や技術イベント登壇の機会が増えました。 登壇時の発表は大抵の場合、自分が操作しているPCの画面を共有して配信する形で行うことになります。

このとき、ただ漫然と画面全体を共有してしまうと、社外秘の文書や、プライバシー情報を含むメッセージの通知など、人に見せてはいけない情報までもが画面共有されてしまう恐れがあります。 画面共有での「意図しない情報が参加者に見えてしまう」事による情報漏洩リスクについて、皆さんはどのように対策を取っているでしょうか?

当社のメンバーが関わる場面でよく登場するプレゼンツールRabbitのバージョン3.0.1以降には、プレゼン発表のウィンドウ内に端末の画面を埋め込む機能が含まれています。 デモンストレーションの内容が端末エミュレータ上での操作だけで済む場合、この機能を使えば、誤配信による情報漏洩のリスクを低減し、より安全にライブデモを行えます。 この記事では、この機能の具体的な使い方をご紹介します。

もっと読む

事前情報:RubyKaigi 2023 - Ruby + ADBC - A single API between Ruby and DBs #rubykaigi

RubyKaigi 2023Ruby + ADBC - A single API between Ruby and DBsというADBCの話をする須藤です。RubyKaigi 2023での私の話をより理解できるようになるために簡単に内容を紹介します。2023-04-27に開催されたSMSさん主催のRubyKaigi 2023 予習イベント ~推しトーク紹介~でもちょっと紹介しました。

なお、クリアコードはシルバースポンサーとしてRubyKaigi 2023を応援しています。

もっと読む

トランクベース開発での競合の解消の仕方

結城です。

1つ前の記事では、フリーソフトウェア・OSS開発プロジェクトで採用されていることの多いブランチ運用スタイルである「トランクベース開発」の概要を紹介しました。

どのようなブランチ運用を取っていても、チームでの開発で複数人で並行して作業していると、変更同士が競合1しがちです。 しかし、競合を解消する方法をインターネットで検索して、見つけた記事に書かれたコマンドをやたらめったらコピペ実行しても、期待した結果を得られなかったり、ともすれば作業の成果を失ってしまったりもします。 競合を解消するためには、それぞれのブランチがどのような関係にあるかを正確に把握した上で、的確に操作しなくてはなりません。

この記事では、トランクベース開発で運用されているGitリポジトリで起こりやすい競合の場面のそれぞれについて、競合を解消するための考え方と具体的な手順を解説します。

  1. 例えば双方が同じファイルの同じ行を変更していた場合、行単位で変更を管理するGitではどちらの変更を先に適用しても支障が生じるため、何らかの解決が必要です。また、変更した行が極めて近接している場合も、Gitは双方の変更をうまく1つにまとめられず、解決が必要になることがあります。このような状況は「衝突」や「コンフリクト」とも言い、ここでは「競合」に統一することにします。

もっと読む

研鑽Rubyプログラミング

Rubyコミッターの須藤です。

2023年4月に「すでにRubyをよく知っている」人向けの書籍研鑽Rubyプログラミングが出版されました。私はRubyをよく知っているので読む資格があるはず!

もっと読む

Open Build Serviceを利用してパッケージを公開する方法

はじめに

自由なソフトウェアを開発・配布する際、パッケージを作成し、独自にリポジトリを公開するということがあります。 導入障壁を下げ、より多くの人に使ってもらいやすくするという意味では有用です。 その反面、aptやdnfコマンドでパッケージをインストールできるようにするために、リポジトリの公開まですべて自前で頑張ろうとするのはなかなか大変です。

そこで、パッケージの作成や配布のサービスを提供しているOpen Build Serviceのインスタンスを利用する方法を紹介します。(本記事は、debやrpmといったパッケージをビルドしてみたことがある人を想定しています)

もっと読む

Fluentd v1.16.0 と v1.16.1 をリリースしました!

こんにちは。最近Fluentdのメンテナーになった福田です。

2023年4月17日にFluentdの最新版となる v1.16.1 をリリースしました。 2023年3月29日にリリースした v1.16.0 と合わせて、その内容をメンテナーの観点から解説します。

なお v1.16.0 では設定次第でFluentdが起動に失敗するという問題があるので、 v1.16.1 をご利用ください。

もっと読む

フリーソフトウェア・OSS開発プロジェクトでよく見られるブランチ運用

結城です。

GitやGitHubといった便利なツール、Git FlowやGitHub Flowなどのブランチ運用ルールが普及したことで、今では「初めて入社した会社でGitを教わり、GitHub Flowで開発を覚えました」という方も多いのではないでしょうか。

それらのブランチ運用ルールに比べて簡素なブランチ運用として、トランクベース開発(Trunk Based Development)と呼ばれるスタイルがあります。 そのブランチ運用のあまりに簡素な様子に、GitFlowやGitHub Flowなどに親しんできた方は驚かれる場合もあるようです。

当社ではGitLab.comのclear-codeのグループGitHubの同名グループ、あるいは個々のプロジェクトごとのグループなどで、フリーソフトウェア開発プロジェクトのリポジトリを公開しています。 また、メンバー個々人も個人で開発しているソフトウェアを同様に公開していることがあります。

この記事では、それらのリポジトリで採用していることが多い1トランクベース開発において、具体的にどのようなブランチ運用を行っているかを図を交えてご紹介します。 (特別に何か優れた運用を行っているから紹介するというわけではなく、社内向けの説明資料としての性質が強い記事です。)

  1. 具体例としては、GroongaFluentdmilter managerなどが該当します。

もっと読む

「クリアコードで働く」私のビフォーアフター

2023年1月に入社した屋代(ヤシロ)です。初の記事となります。

入社するまでと入社してからの「ビフォーアフター」を紹介します。

結果から述べますと、新しい職場を探し始めた時に希望していたことのほぼすべてが実現しました。 互いの需要と供給がマッチした幸運にも恵まれ、気持ちよく、快適に仕事をしています。

もっと読む

おすすめ.ssh/config設定

はじめに

つい先日、GitHubのRSA SSHホスト鍵が突如差し替えられるという一件がありました。

詳細に関しては識者による解説に委ねますが、ちょうどタイムリーな話題だったので、SSHをより安全に利用するという観点でおすすめ設定についていくつか紹介します。

なお、クリアコードではSSH以外にもおすすめzsh設定おすすめEmacs設定という記事も公開しているので参考にしてみてください。

2023年5月11日更新:StrictHostKeyCheckingyesにする場合の安全なknown_hostsの更新方法について追記しました。

もっと読む