k8s＝Kubernetesについて本気で調べてみた。ついでにi18n


# 背景

最近、**k8s** という単語をよく目にするようになりました。
**k8s** とは、**Kubernetes**のことだそうです。
**k ～8文字～ s** なので、**k8s**と書くそうです。

Kubernetesとは何か？は、
他の多数の素晴らしい入門記事様を見ていただくとして、
興味を持ったのは、
**k8s ＝ Kubernetes って一意に決まるの？**
ということです。

もし、他の単語でもk8sがいるなら、
「**k8sの座**」を、Kubernetesだけに奪われてよいのか、
**いや、良いハズがないっ！**（反語表現）

そこで、
**まさにタイトル通り「k8s＝Kubernetes」が成立するのか調べます。**
「Kubernetes」について本気で調べてみた、
というわけではないのであしからずご了承ください。

※正確には「k」が大文字じゃね？とかあるかもしれませんが、
　「Kubernetes」の時は、大文字の方が多くても、
　「k8s」の時は、小文字の書き方を多く見かける気がするので、
　この調査では大文字小文字は区別せずに(基本小文字で)扱うことにします。


# さっそく調査に乗り出すことに

まず、英辞郎のテキストデータを用意します。
以前、このサイトで購入していました。(500円)
https://booth.pm/ja/items/777563

およそ、200万単語含まれています。スゴイ。

このデータを、pythonで、
{"見出し語":"意味"} の形の辞書形式に加工します。
ここは本題では無いのでコードは省略します。
調査対象の単語リストの準備ができました！

中身を見ると、
「k」で始まる単語は**約２万１千語**ありました！
（他のアルファベットに比べかなり少ないほうです）

# k8sチェッカーの作成

正規表現で、k8sの条件を満たすかチェックする
チェック関数を作成します。

```
^k[A-Za-z]{8}s$
```

の形を基本として、少し一般的に作りました。

```py

import re
#kNs_checker("k",8,"s", target_word)が条件にハマるかチェックするよ
def kNs_checker(head_char, num, tail_char, target_word):
    #k8s (k + 8 文字 + s)
    #target_word = r'kubernetes' 
    #pattern = r'^k[A-Za-z]{8}s$'
    pattern = r'^' + head_char + '[A-Za-z]{' + str(num) + '}' + tail_char + '$'
    result = re.match(pattern, target_word)
    if result: #none以外の場合
        #print(result.group())
        return 1
    else:
        return 0
    return 0

print(kNs_checker("k",8,"s", "kubernetes") )
```

# k2sを求めてみよう！

まずは、k2sから求めてみましょう。
さきほどの「k8sチェッカー」を用いて、辞書を検索します。
「k8sチェッカー」が「１」を返す＝条件を満たす、ので、
その単語を列挙します。


```py:k2sを求める

#「k」で始まる単語の辞書の読み込み {"見出し語":"意味"} 
dict = load_dict("k")

def pickup_word(head_char, num, tail_char):
    for key,val in dict.items():
        if kNs_checker(head_char, num, tail_char, key) > 0:
            print(key + "： " +val)

pickup_word("k",2,"s")

```


```py:k2sの結果
kiss： キスする
kris： クリース◆マレー人が用いる短剣
kvas： クヴァス◆ロシアの発酵飲料
# ※結果の意味の所は、加工しています。
```

k2sの時点でも３つと意外と少ないですね。
これはKubernetesが**一意の座**を得ることが出来るかも！？

※他に、kids、などが思いつきますが、
　辞書上、原型しか登録されていない場合もあり、
　複数形や活用は無視します。

# k3s～k7sの結果

「２」を３～７に変えて上記のプログラムを動かします。

```py:k3sの結果
kecks： 〈英俗〉ズボン
kudos： 〔功績などに対する〕称賛、賛辞
kumis：  <→koumiss> クミス、乳酒◆中央アジアの伝統食品。
kurus： クルーシュ◆トルコの貨幣単位
```

ほうほう。

```py:k4sの結果
kairos： 〈ギリシャ語〉実行［決断］の時、潮時
kermes： ケルメス◆カイガラムシの雌の羽を乾燥させた赤紫色の染料の原料
killas： 《地学》粘板岩
knives：  knifeの複数形
kouros： クーロス◆古代ギリシャの青年の裸体像
kyphos： 《病理》〔脊柱の〕後彎（症）
```

日本語でも知らんがな、って単語が多いですね。

```py:k5sの結果
kalends： 〔古代ローマ暦の〕月の最初の日
kenosis：  神性放棄
ketosis： 《病理》ケトーシス、ケトン症
keyless：  キー［鍵］のない［不要の］
kickass：  <→kick-ass>〈卑俗〉エネルギー、力
kinesis： キネシス◆生物の動き
kinless： 親類［親族］のない
kissass： <→kick-ass>〈卑俗〉エネルギー、力
klipdas： 《動物》ケープハイラックス
koumiss： クミス、乳酒◆中央アジアの伝統食品。
kylikes： kylixの複数形

```

だんだん増えているし。数字の少ない方が多いと思ってた。

```py:k6sの結果
keenness： 鋭さ、熱心さ
keftedes： ケフテデス◆ギリシャ料理の肉だんご
kehillos： kehillahの複数形
kindless： 不親切な
kindness：  親切（であること）、思いやり（があること）
kinesics：  動作学
kinetics： 《物理》動力学
kingless：  国王の存在しない
kneesies： 〈米俗〉〔恋人同士などが愛情の表現として〕膝と膝を触れ合わせること
knickers： 〔女性用の〕ブルマー
knockers： 〈卑〉おっぱい
kouskous：〈アラビア語〉クスクス◆パスタの一種。世界最小のパスタ
kurtosis： カートシス、尖度
kyphoses： kyphosisの複数形
kyphosis： 《病理》〔脊柱の〕後彎症
```

おっぱい！？

```py:k7sの結果
kaluresis： ＝<→kaliuresis>カリウム利尿
kantharos： カンタロス◆上方に伸びた取っ手（2個）が付いている大きな杯
katabases： katabasisの複数形
katabasis： 《軍事》退却
katharsis： <→catharsis>カタルシス、〔精神の〕浄化
keratitis： 《病理》角膜炎
keratorus： 《医》角膜膨隆
keratoses： keratosisの複数形
keratosis： 《病理》角化症◆【略】K
ketolides： ケトライド系薬◆【略】KLs
ketolyses： ketolysisの複数形
ketolysis： 《化学》ケトン分解
kibbutzes： kibbutzの複数形
kidstakes： ごまかし、見せ掛け
kilobucks： 千ドル、大金
kilogauss： 《電気》キロガウス◆【略】kG
kinetoses： kinetosisの複数形
kinetosis： 《医》乗り物酔い
knismesis： 《生理》軽いくすぐり刺激◆羽根が触れたり虫がはったときなど
knotgrass： 《植物》ニワヤナギ、ミチヤナギ
kookiness： 〈俗〉変人ぶり、異様なこと
kraurosis： 《病理》萎縮症
```

もっと増えてる。これはk8sも厳しいか・・・？

# おまちかね、k8sの発表です★

```py:k8sの結果
kaliuresis： カリウム利尿
karyolysis： 《生物》核溶解
katholikos： ＝<→catholicos>〔東方教会の〕総主教
keloidosis： ケロイド症
keratinous： ケラチン［角質］の［から成る・に似た］
kindliness： 親切（な行為）、温情、温和
kinematics： 《物理》運動学
klinotaxis： 《生物》屈曲走性
knockknees： <→knock-knees>《医》X脚、外反膝
kohlrabies： kohlrabi(《植物》コールラビ、カブカンラン)の複数形
```

**なんと、１０件のk8sが見つかりました！！**

**残念Kubernetesよ、k8sはお前だけのものではないのだ！**

さあ、これからは、**k8s**について語るときは、
「え、それって、**ケロイド症**について話しているの？」
「k8s入門って、**X脚に入門する**ってこと？」
「絵本で分かるk8sって、キリンが**核溶解**する絵本？」
って確認することで、話している対象を間違えずにすみますね。

# さらに、K8sの結果

**Kubernetes一意性信者の野望を完全に打ち砕く**ため、
念を入れて、「K」が大文字の場合も、
同様のプログラムで求めてみました。

```py:K8sの結果
Kannapolis： {地名} : カナポリス◆米国
Karagatsis： {人名} : カラガーチス
Karamanlis： {人名} : カラマンリス
Kariotakis： {人名} : カリオタキス
Kastanakis： {人名} : カスタナキス
Katsuwonus： 《魚》カツオ属
Kilcommons： {人名} : キルコモンズ
Kolkasrags： {地名} : コルカ岬
Kompaneets： {人名} : カンパニェーツ
Korolkovas： {人名} : コロルコワス
Korostvets： {人名} : コロストベッツ

```

「K8s」だろうが、「k8s」だろうが、
世界はKubernetesを中心に回っているわけではありません。
もしかしたら、あなたの見つけた「K8s入門」は、
**「カツオ(Katsuwonus)」に入門することになるかもしれない。**
https://ja.wikipedia.org/wiki/カツオ

提言：これからは、キリンとかクジラ以外に、
**「カツオ」**も登場させてあげるのが
**元祖K8s**に対する礼儀ではなかろうか？


# こうなると、最大値が知りたくなる

**最大のkNsはなにか？**　を知りたくなるのが人情です。
pythonの正規表現のところを以下のように変更します。

```py
pattern = r'^' + head_char + '[A-Za-z]*' + tail_char + '$'
```

上記を実行して調べた結果、
**k18s** が最大だと分かりました！

**keratoconjunctivitis： 《眼科》角結膜炎**

なんと、**k8s**を２倍以上うわまわっています。
これは、k8sを語る上でほぼ必須の~~ムダ~~知識ですね。
**k18s**を知っていれば、**k8sより２倍強い**です。

# i18n は一意なのか？

同様の問題として、
**i18n ＝ internationalization** なのか調べてみます。


> Internationalization(国際化対応)とは、文化、地域、言語によって異なるターゲットオーディエンスに合わせて容易にローカライズできる製品、アプリケーション、または文書内容の設計と開発のことです。～W3Cの定義～

コードはk8sのものと全く同様です。

```py:i18nを求める
def pickup_word(head_char, num, tail_char):
    for key,val in dict.items():
        if kNs_checker(head_char, num, tail_char, key) > 0:
            print(key + "： " +val)

pickup_word("i",18,"n")
```

```py:i18nの結果
immunophotodetection： 免疫光学的検出
institutionalisation： ＝<→institutionalization>制度化、慣行化
institutionalization：  制度化、慣行化
internationalisation： <→internationalization>国際化、国際管理下に置くこと、国際管理化
internationalization： 国際化、国際管理下に置くこと、国際管理化
iodochlorhydroxyquin： 《薬学》ヨードクロルヒドロキシキン

```

Kubernetesは、英辞郎には存在しなかったのですが、
internationalizationは、本人が英辞郎にも居ました。
そして、

**残念internationalizationよ、i18nはお前だけのものではないのだ！**

kNsは１８が最高値で、１８で一意だったので、
i18nならもう少し頑張ってくれるかと思ったのですが、
いやー、おしかったですね。

これからは、i18nについて語る時は、
**ヨードクロルヒドロキシキン**についての話しじゃないよね？
と確認していく必要があります。

# まとめ

**こうしてこの世界にまた一つ新たなトリビアが生まれた**

* **k8sは、Kubernetesのみの一意に定まらない**
* **最大はk18s ＝ keratoconjunctivitis ＝ 角結膜炎**
* **i18nは、必ずしも国際化対応のことではない**

この記事によって、
k8s や、i18n について語る時に生じる誤解を
0.00001%くらい軽減できたと思います！
エンジニアが良く使う言葉について、
とても役に立つ有用な知識を得ることができました。

コンテナとかdockerとか、ムズカシイ言葉を一切使わず、
ここまでk8sについて詳細に解説している記事は
他に類を見ないのではないでしょうか。

**k8sとは何か？** と聞かれた場合には、
この記事を紹介してあげると、とても**kindliness**ですね。

または、**「カツオ(Katsuwonus)の略だよ！」** と教えてあげると、
魚類まで網羅したあなたの博識ぶりに驚くこと間違いなしです。

現場からは以上です。