C10K 問題とは
i18n と L10N は,それぞれ internationalization と localization の略称だ。
internationalization は綴りが長いので,「i」と「n」の間に 18 文字あるというところから「i18n」という表記が生み出された。L10N も同様。
なお,「i18n」が小文字で「L10N」が大文字なのはタイプミスではない。
参考:国際化と地域化 - Wikipedia
では,「c」で始まり「k」で終わり,間に 10 文字ある英単語としてどんなものがあるだろうか。
これが C10K 問題である1。
コード
まず,英単語が大量に集められたファイルがあるとよいのだが,幸い,Linux や macOS にはそういうファイルが存在する。
/usr/share/dict
というディレクトリー内にたいていそういうファイルがあるので覗いてみてほしい。
私の macOS では /usr/share/dict/words
が英単語リストだった。
1 行に 1 単語。これがただひたすら並んでいるだけのファイルだ。数えたら全部で 23 万語以上あった。
ここから正規表現で抜き出せばいい。Ruby なら 1 行で書ける。
puts IO.foreach("/usr/share/dict/words").grep(/^c.{10}k$/i)
IO.foreach にファイルパスを与えると,行とごとにブロックを評価するが,ブロックを与えない場合は Enumerator を返す。
それを Enumerable#grep でフィルタリングしてやるだけ。
grep
に正規表現を与えると,マッチした文字列だけからなる配列ができる。
結果は以下のとおり。
concertstuck
countercheck
counterprick
counterstock
Czechoslovak
な,なんじゃこれは?
Czechoslovak は名詞で「チェコスロバキア人」,形容詞で「チェコスロバキア(人・語)の」だが,あとの単語は見たこともないものばかり。macOS 付属の『ウィズダム英和辞典』にも載っていない。
concertstuck はどうもドイツ語の Konzertstück と関係ありそうだ。
Konzertstück は音楽用語で「小協奏曲」などと訳されたり,外来語として「コンツェルトシュテュック」と呼ばれたりするようだが,音楽に疎いのでよく分からん。
残りの 3 語はすべて counter- が接頭辞になった複合語だ。
ネットで調べてもいまひとつよく分からないけど,「countercheck」は「対抗手段」とか「ダブルチェック」(二重に点検すること)というような意味があるっぽい。
「counterstock」はチケットなどの半券を指すぽい。
「counterprick」はなんだろうな?
-
この記事はジョーク記事です。本当の C10K 問題はまったく違うものです。ごめんなさい。 ↩