2014年にやりたいことと2013年のまとめ

年の初めなので、2014年にやりたいことと2013年のまとめを書きます。

もっと読む

メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか

毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。

もっと読む

消費税率引上げへの対応 契約時の対応編

はじめに

10月に消費税率引上げへの対応を書いたところ多くのアクセスをいただきありがとうございます。前回の記事の時点では、2014年4月1日の消費税率引上げの日をまたいだ契約はそれほどありませんでした。しかし、この3ヶ月間で締結した契約のほとんどが2014年4月1日をまたぐもので、取引先ごとの消費税率引き上げへの対応がまちまちで調整に時間がかかりました。例えばまだ社内システムが消費税率8%に対応していないので、8%での支払いはできないケースや、2014年3月31日までの支払い分はすべて5%とするケースなどがありました。そこで今回はこのような取引先の事情にあわせて、クリアコードがとった対応を紹介します。

もっと読む

監視統合ビューアHatoholのセットアップ方法

はじめに

最近、クリアコードではHatoholというソフトウェアの開発に参加しています。Hatoholは複数の統合監視システムの情報を一括して表示することを可能とするソフトウェアです。現在対応している統合監視システムはZabbixおよびNagiosです。他の監視システムに対応することも検討しています。

もっと読む

わかりやすい設定ファイルの項目名:否定形で修飾しない

数週間ほど前、コミットをみていたら「ひっかかる」APIがありました。それについてコメントし、わかりやすいAPIについてやりとりしました。そのやりとりの中で、設定ファイルの項目名をわかりやすくするために、いままであまり意識せず工夫していたことに気付きました。それは「設定ファイルの項目名を否定形で修飾しない」というものです。「否定形」という言い回しではなく、「ネガティブな単語を使う」というような言い回しの方が近いような気がしますが、あまりしっくりくる言い回しを思いつかないので、ここでは「否定形」ということにします。

もっと読む

Rubyで自然なDSLを作るコツ:値を設定するときはグループ化して代入

最近、fluent-plugin-droongaという分散データストリームエンジンを書いています。その中で、RubyでDSLを実現するときに工夫していることに気づきました。それは、値を設定するときは代入する字面にするということです。代入する字面にするために、グループ化用のオブジェクトを作っていました。

もっと読む

Mozilla Firefox/Thunderbirdの法人利用者向けFAQを編纂中です

現在、Mozilla Japan主導でFirefoxとThunderbirdの法人利用者向け情報の整理が進められています。 クリアコードもMozilla Japanサポートパートナーとしてこの作業に協力しており、弊社内で蓄積されてきた技術情報を積極的にFAQ項目へフィードバックしております。

もっと読む

Groongaビジネスパートナーズ発足の経緯と発足後の変化

2/9にクリアコードをはじめ6社が集まりGroongaビジネスパートナーズ(略称グルンパ)が発足しました。グルンパはGroongaの普及とGroongaに関するビジネスの拡大を目的とした団体です。Groongaに関する有償サービスの紹介やGroongaの導入検討に関する資料を共同で作成するなどして、Groongaの導入を促進するような活動を行います。今回は、グルンパ発足の経緯や発足後の変化を紹介します。

もっと読む

Debianでパッケージをリリースできるようにしたい - WNPPへのバグ登録

はじめに

オープンソースのカラムストア機能付き全文検索エンジンといえば、Groongaがあります。Groongaを使うと全文検索機能付き高性能アプリケーションを開発することができます。

もっと読む

Groongaでの可変長データの管理方法

Groongaには可変長データを削除・更新しつづけるとデータベースのサイズが大きくなり続けてしまうという問題があります。次回のリリースではこの問題が解消される見込みで、現在、ユーザーにテストをお願いしています。(詳細は[groonga-dev,02173] データベース肥大化に悩むみなさんへテストのお願いを参照。)

もっと読む

test-unitならRSpec 3のComposable Matchers相当のことをどう書くか

RSpec 3の新機能であるComposable Matchersの使い方の例をtest-unitならどう書くか紹介します。リンク先のコードを示し、それのtest-unitバージョンを示す、という流れを繰り返します。

もっと読む

Firefox・Thunderbirdの組織内向けカスタマイズの方法の簡単な紹介と比較

企業や団体などにおいて、組織内標準のWebブラウザとしてFirefoxの導入を検討されているお客様や、Firefoxを既に導入済みであるというお客様から、「Firefoxの設定を管理者が一括して管理したい(ユーザに管理させたくない)」という要望をよく伺います。

もっと読む

Debianでパッケージをリリースできるようにしたい - よりDebianらしく

はじめに

以前、オープンソースのカラムストア機能付き全文検索エンジンであるGroongaをDebianに入れるために必要な作業について、最初のとっかかりであるWNPPへのバグ登録の紹介記事を書きました。

もっと読む

GitHubのWikiが変更されたら差分付きで通知する方法

一人でWikiを使っている場合はそんなことはありませんが、複数人でWikiを使っている場合はだれかがWikiを変更したらそれを知りたいものです。複数人でWikiを使っている場合は、情報共有のために使うことが多いです。Wikiが変更されたことがわかると、最新の情報を入手することが容易になるため、情報共有という目的を達成しやすくなります。

もっと読む

2014/6/22(日)に学生向けリーダブルコード勉強会を開催予定

要約:6/22(日)に学生向けリーダブルコード勉強会を開催する予定なので、興味のある学生の人は予定を空けておいてください。興味のありそうな学生を知っている人は教えてあげてください。

もっと読む

Jekyllで複数言語のコンテンツを継続してメンテナンスする方法

GitHub PagesのWebサイトジェネレーターであるJekyllで複数言語のコンテンツを管理する方法を紹介します。複数言語のコンテンツを管理するとは、例えば、英語と日本語のコンテンツを提供しているWebサイトにコンテンツを追加・修正・削除し、継続的にメンテナンスするということです。

もっと読む

LXCのテンプレートをカスタマイズする方法

最近LXC - Linux Containersで開発環境を構築したので、その作業の中からコンテナのカスタマイズについて書きます1

  1. LXCのバージョンは0.9系を想定していますが、0.8でも1.0でも基本的には変わりません。

もっと読む

学生向けリーダブルコード勉強会の参加者募集を開始

2014/6/22(日)にSEプラスさんが学生向けリーダブルコード勉強会を開催します。リーダブルコードの解説を書いた須藤がトレーナーをします。会場提供はクックパッドさんで、ランチも提供してくれます。

もっと読む

Thunderbirdの要約ファイルやアドレス帳ファイルの内容を読む方法

FirefoxやThunderbirdではデータの永続的な保存のためにSQLiteやJSON、プレーンテキストなど、様々な形式のファイルが使われていますが、その中にMork形式という物があります。この記事では、それらのファイルの内容を見る方法について解説します。

もっと読む

HerokuでRroongaを使う方法

RubyやRailsも使えるPaaSであるHerokuRroongaを使えるようにしました。これにより、高速な全文検索機能を提供するRubyによるWebアプリケーションをHeroku上で動かすことができるようになりました。

もっと読む

Heroku用Groongaのビルド方法

HerokuにGroongaはインストールされていないので、HerokuでGroongaを使うためにはGroongaをビルドしなければいけません。今回はHerokuでGroongaをビルドする方法を説明します。

もっと読む

Launchpadを利用してパッケージを公開するには

はじめに

オープンソースのカラムストア機能付き全文検索エンジンのひとつにGroongaがあります。Groongaを使うと全文検索機能付き高性能アプリケーションを開発することができます。

もっと読む

Groongaの管理画面の改良案

クリアコードは今年もインターンシップを実施します。インターンシップをどのように実施するかを3行で説明すると次の通りです。

もっと読む

SEゼミ - リーダブルコード勉強会(1回目)を開催

2014/06/22にプログラミングが好きな学生のためのリーダブルコード勉強会を開催しました。後述の通りチャレンジングな目標設定にしたので、学生のみなさんがついてこられるのかという点が不安でしたが、9割以上の参加者が満足し1、半数以上の人がこれからコードを読んでいこうという思いを持ってくれたようです2。このため、この勉強会で目指していたことは達成できたと言えます。よかったです。

  1. アンケート結果より。

  2. アンケート結果より。

もっと読む

Debianでパッケージをリリースできるようにしたい - mentors.debian.netの使いかた

はじめに

以前、オープンソースのカラムストア機能付き全文検索エンジンであるGroongaをDebianに入れるために必要な作業について、最初のとっかかりであるWNPPへのバグ登録やDebianらしいパッケージかどうかチェックするためのLintianについて紹介記事を書きました。

もっと読む

SEゼミ - リーダブルコード勉強会(2回目)を開催

2014/07/06にプログラミングが好きな学生のためのリーダブルコード勉強会の2回目を開催しました。内容を知りたい方は資料やこれまでの記事を読んでください。

もっと読む

Groongaユーザ向けの、はじめてのDroonga

昨年11月29日に開催したイベント「全文検索エンジンGroongaを囲む夕べ 4」 において、Groonga族の新たな一員としてDroongaが加わった事をお知らせしました。その後現在に至るまでにリリースを着実に重ね、現在はバージョン1.0.4となっているのですが、その間に方針や開発の優先度が変わってきている事についてのきちんとしたアナウンスができておらず、今改めてDroongaの事を知ろうとした時に「で、結局これって何なのよ?」ということが分かりにくくなってしまっています。

もっと読む

GStreamerのエレメントをつないでパイプラインを組み立てるには

はじめに

オープンソースのマルチメディアフレームワークとしてGStreamerがあります。音声・動画の再生、フォーマットの変換、録音・録画など基本的なことはもちろん、RTSPなどを用いたネットワーク通信を行うこともできます。

もっと読む

LXCコンテナに名前でアクセスする方法

LXCコンテナを複数作って、開発に使用しているとIPアドレスではなく名前で各コンテナにアクセスしたくなります。 もちろんlxc-consoleを使えば名前でアクセスできるのですがlxc-consoleではC-aが取られてしまって不便です。

もっと読む

LXCコンテナにホスト側のユーザをバインドする方法

LXCコンテナを作ったとき、毎回自分の設定をコピーするのは面倒です。 dotfilesを変更する度にLXCコンテナ側に設定を反映するのは特に面倒です。

もっと読む

RubyKaigi 2014にスピーカー・スポンサーとして参加予定

9月18日から20日の3日間RubyKaigi 2014が開催されます。

もっと読む

新装版リファクタリング

2014年7月にリファクタリングの新装版がオーム社から出版されました。旧版は2000年にピアソン・エデュケーションから出版されていましたが、今は絶版となっています。

もっと読む

PassengerでRroongaを使ったWebアプリケーションを動かすときにチューニングのコツ

RroongaはSQLite3のような手軽さで使えるRuby用の全文検索ライブラリーです。Webアプリケーションに全文検索機能をつけたいときにも便利です。Rubyのリファレンスマニュアルの検索サービスであるるりまサーチもRroongaを使っています。

もっと読む

FedoraプロジェクトのGroongaパッケージを一緒にメンテナンスしてみませんか?

はじめに

オープンソースのカラムストア機能付き全文検索エンジンに、Groongaがあります。Groongaを使うと全文検索機能付き高性能アプリケーションを開発することができます。

もっと読む

手動でインベントリーファイルを作らずにVagrantとAnsibleを一緒に使う方法

最近、Hatoholというオープンソースの運用管理ツールの開発にも参加しています。

もっと読む

SSHポートフォワード(トンネリング)を使って、遠隔地からLAN内のコンピュータにログインする

こんにちは。クリアコードの結城です。

もっと読む

2014年10月30日(木)にリーダブルコードワークショップを開催予定

クリアコードは社名の通り、クリアなコード(書いた人の意図が明確なコード)を大事にしている会社です。自分たちが日々クリアなコードを書くことはもちろんですが、自分たち以外の人たちもクリアなコードを書いて、世の中のクリアなコードが増えていくとうれしいと考えています。

もっと読む

AC_ARG_WITHでオプションを省略するとき、しないとき

はじめに

クリアコードの林です。今回はAutotools 1 にまつわる、最近遭遇したAC_ARG_WITH(に限らず)マクロの省略可能引数の落し穴の事例を紹介します。

  1. Autotoolsに関しては Autotools事始め という過去記事もあるのでAutotoolsをまだよく知らない人は参考にしてみてください。

もっと読む

RubyKaigi 2014:Three Ruby usages - High-level interface, Glue and Embed #rubykaigi

RubyKaigi 2014の最終日(2014/9/20)にThree Ruby usagesというタイトルでRubyの使い方を紹介しました。

もっと読む

Cutterで画像を使ったテストを書くには

はじめに

今回は弊社が中心となって開発しているCutterという、書きやすさ・デバッグのしやすさを重視したC言語・C++言語用のテスティングフレームワークを使って、画像を使ったテストを簡単に書く方法を紹介します。

もっと読む

検索エンジン自作入門

2014年9月に技術評論社から「検索エンジン自作入門 - 手を動かしながら見渡す検索の舞台裏」という全文検索エンジンについて解説する本が出版されました。

もっと読む

OSC2014 Tokyo/FallでMySQLユーザー向けに日本語全文検索について紹介予定

今週末(2014年10月18日(土)と19日(日))、オープンソースカンファレンス2014 Tokyo/Fallが開催されます。初日(18日(土))の11:00から11:45の枠で日本MySQLユーザ会の須藤がいろいろ考えると日本語の全文検索もMySQLがいいね!という発表をします。

もっと読む

いろいろ考えると日本語の全文検索もMySQLがいいね! #osc2014tk

もっと読む

12/9にリーダブルコードのWeb授業(生放送)を開催予定

須藤はリーダブルコードの解説の著者1としてリーダブルコード普及のために活動しています。その一環として、約1ヶ月後の12/9に名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こうというWeb授業を開催します。

  1. 本文は書いていないです。解説を書いただけです。

もっと読む

Debianでパッケージをリリースできるようにしたい - そしてDebianへ

はじめに

以前、オープンソースのカラムストア機能付き全文検索エンジンであるGroongaをDebianに入れるために必要な作業について、最初のとっかかりであるWNPPへのバグ登録やDebianらしいパッケージかどうかチェックするためのLintian、mentors.debian.netの使いかたについて紹介記事を書きました。

もっと読む

Rubyのテスティングフレームワークの歴史(2014年版)

2014年12月にRuby 2.2がリリースされる予定です1

  1. たぶん。

もっと読む

Groonga 4.0.7の実験的機能であるカラム値の圧縮とRroongaからそれを使うには

はじめに

オープンソースのカラムストア機能付き全文検索エンジンとしてGroongaがあります。 この記事を書いている時点の最新版であるGroonga 4.0.7では、カラムの値を圧縮して保存することができるようになりました。

もっと読む

Ubuntuでdebパッケージのお手軽クリーンルーム(chroot)ビルド環境を構築するには

はじめに

debパッケージを用意してDebianの公式リポジトリからインストールできるようにするために必要な作業については以前いくつか記事を書きました。

もっと読む

Ubuntuでdebパッケージのテストをするには

はじめに

以前、パッケージをクリーンルームでビルドする方法としてCowbuilderを使うやりかたについて記事を書きました。

もっと読む

12/9のリーダブルコードのWeb授業(生放送)用の資料

もっと読む

milterプロトコル

これはPostfix Advent Calendar 2014の10日目の記事です。

もっと読む

schooでリーダブルコードのWeb授業を開催

もっと読む

Sphinx 1.3で使えるgettextとバージョン管理の相性の悪さを改善する仕組み

ドキュメントを作りたくなってしまう魔法のツールとしてSphinxがあります。 全文検索エンジンGroongaでは、Sphinxを英語と日本語のドキュメントの生成に利用しています。

もっと読む

Clangの静的解析を使ってコードの潜在的な問題点を探すには

はじめに

LLVMをベースにしたC/C++、Objective-C/C++のコンパイラフロントエンドとしてClangがあります。 Clangプロジェクトでは、コンパイラだけでなく、静的解析ツールも開発しています。

もっと読む

Firefox OSのサポートサービス開始のお知らせ

クリアコードはFirefox OSのサポートサービスを開始しました。すでに2014年12月23日にMozilla JapanからFirefox OSとそのエコシステムに期待される企業のご紹介において、アプリの開発・最適化・Firefox OSの移植といったFirefox OSに関するサービスを提供する企業として、クリアコードを紹介して頂いています。

もっと読む