2019年7月2日火曜日

タピオカとガソリン

こんばんは。
タピオカブームが続きますね。空いたら行こうと思っているのですが、なかなか機会がありません。

次々とロールアウトされるタピオカ。
あれって、1日でどれぐらいのエネルギー(熱量)が移動しているのでしょうか。
気になったので計算してみました。

以下の条件を想定します。
・タピオカミルクティーは、1杯500キロカロリーとする。
・20秒につき1杯のタピオカミルクティーが売れるとする。
・店舗の営業時間は10時間とする。
・ガソリン1リットルの熱量を8,400キロカロリーとする。

タピオカミルクティーは、1分につき3杯が売れます。
1時間に180杯です。
営業時間を10時間としたので、1日に1,800杯のタピオカが売れます。
よって、総流通カロリーは90万キロカロリーと推定できます。

ガソリンに換算すると、大体108リットル相当になりました。
ドラム缶の半分ぐらいです。

これから、タピオカ店を見たときは「この店で1日にドラム缶の半分のガソリンに相当する熱量が移動しているんだな」と思うことにします。

2019年6月30日日曜日

主人が検索エンジンを作り始めて2年が経ちました

旧Nyafoo!時代を含め、検索エンジンを構築し始めて2年が経ちました。

スタートすぐは、アクセスが少し集中したらダウン。
メンテしたらダウン。
とにかくダウン。安定して動く構成に仕上げるだけで一苦労でした。

1年たった時は、elasticsearchクラスタや、FESSのフロント系、FESSのクローラ系、nginxのリバースプロキシ、ロードバランサ、クラウドフロントを揃え、スケールしやすい構成にまとめました。

そして2年が過ぎた今年。URLリストは5万件近くになりました。
新聞、雑誌、書籍、オンラインメディア、上場企業、大学、高専、高校など、政府、官公庁、地方自治体、公益法人等、グルメ、ホテル、レジャー設備、交通公共機関、音楽レーベル、音楽事務所、俳優・歌手等公式ページ、辞書。
これぐらいはクロール対象になりました。
インデックスは数千万件で収まるようにしています。

2年過ぎた知禅ですが「やっぱり当たらない検索エンジン」。時々近いものが出てくるけれど、昔のグーグルのズバズバ感には程遠い。実力はまだまだです。

3年目は、「当たる検索エンジン」を目指したいと思います。
石の上にも3年の知禅の発展をお楽しみに!

2019年6月19日水曜日

エクストリーム・FESS・クローリング

こんばんは。
現在、知禅は1日に100万URLをクロールして処理する能力があります。

このあたりになると、意外なLimitに足を引っ張られるので、僕の解決策を書くことにしました。

きっちりソースを読んでいないのでアレですが、FESSは検索エンジンにかかわるデータをelasticsearchに保存しています。
※各インスタンス(サーバ)に依存する部分は/etcや/usr/share/fessの設定ファイルに書き込んでいます。
この時はBulk APIを多用しているみたいです。

通常のクロール速度だと問題ないのですが、クロール速度を上げるとelasticsearchのbulk数の上限に当たるようになります。
/etc/elasticsearch/elasticsearch.ymlでbulk上限を1000まで引き上げてみてください。
普通はこれで大丈夫だと思います。

さて、ここからがエクストリーム。
FESSのクローラは、.crawler.data、.crawler.filter、.crawler.queueの3つのindexを作ります。
この中で、.crawler.filterがクロール対象を制御しているようです。
100万件/dayぐらいになると、buik limitを1000に引き上げても、まだ足りずにbulk queueからあふれることがあります。

こうなると、クローラーがelasticsearchから.crawler.filterを読もうとしても、elasticsearchがデータを返してくれません。
クローラーは処理を続けてしまうので、クロール対象を正しく読み取れず、意図しないサイトをクロールしてしまうようなのです。

もし、FESSで100万URL/dayを超えるようなクロールを目指すなら、.cralwer.filterは別のノードに置いて、bulk queueからあふれても読み出せるようにインデックスを配置しないとならないでしょう。

2019年6月11日火曜日

知禅の支援をお願いいたします

知禅は赤字です。大きなサーバを動かしており、維持費が大きいのです。
一応広告もありますが、まだまだサーバー代を賄えるほどではありません。

そこで、お願いです。知禅が存続できるよう、支援をお願いいたします。
少額でも、長期の支援をいただけると助かります。

支援ぷらっふぉとーむはEntyを採用しました。
https://enty.jp/x8Yel22

支援者になると、ポルリン先生に書いてもらった、Nyafooイメージイラストを見ることができます。

よろしくお願いいたします。

2019年3月28日木曜日

なぜ「イノベーション横断組織」は何も生み出さないのか

「イノベーション横断組織」なるものが作られ、各事業部からエース級とお目付け役が集められます。月1ぐらいで集まって、当社のイノベーションについて会議が開かれますが、結局時間が過ぎてゆくだけです。

よく見る光景です。では、なぜ優秀な人が集まっているのに、イノベーションが起きないのでしょうか。

原因は予算が割り当てられていない、それから従業員が優秀で安かったからだと思います。

まず、イノベーション。社会に変革を与えるサービスや製品。これは、どのように成り立ってきたのでしょうか。
僕は、「欲求、閃き、開発、イノベーション」の順で成り立つものと考えています。

「欲求」は「こんな面倒くさいことはやめたい」「代わりにやってくれないかな」「もっと節約したい」「ガソリン代を減らしたい」など、嫌な事が無いと出てきません。

「閃き」は、欲求を具体的な形にした瞬間です。「ハイブリッドにして、ブレーキで熱にして捨てていた運動エネルギーを電気で回収しよう」。閃きは必要な装置を具体的に描く必要があります。

「開発」は、閃きを試作品にするプロセスです。「遊星歯車を使って、エンジン、モーターを組み合わせるハイブリッドシステム。制御コンピュータは新開発。既存エンジンと遜色ない体積でFF車に適した2軸出力。既存のラジエータなど極力流用するように。そして、クラッシュテストなどを経て型式認定を取得し、量産可能な状態にする」。ヒト・モノ・金を膨大に使います。

最後「イノベーション」は、製品リリースと同義です。出したものが社会を変えるほど受け入れられたら「イノベーション」になれます。イノベーションのためには、製品の特長を説明できる広告戦略、効果的な営業スクリプトと、それをマスターできるスタッフ。無理のない納車体制。開発より、さらにお金がかかります。

冒頭の会議で「イノベーション」が起きないのは、「欲求」すら無く、「今まで通り進めて、なんとか売り上げが回復する業者は無いか」ばかり考えているからです。

この20年間、いろんな業者が完成品と遜色のないデザイン案やプロトタイプを持ってきてくれて、派遣さんが面倒な作業を安価に引き受けてくれたため、イノベーションの素地になる欲求は発生してきませんでした。若者を使い倒せばよかったので、やる必要が無かったのです。

回転寿司のように、素晴らしいプロトタイプやアイディア、デザインがやってきて、良さそうなのをピックアップする作業を「企画」としてしまったため、企画部門が「仕入れ部門」に変質した会社も少なくありません。

冒頭の例では、35歳までのメンバーに予算を与え、上役が一切口出しすることなく、製品をリリースすべきでしょう。その製品の大半は当たりません。それでも開発を続ける。これが、イノベーションを起こさないと生き残れない会社が、今から為すべきことでしょう。


2019年1月30日水曜日

FESSのKuromoji辞書をミスった時の対処法

ミスを含むKuomoji辞書をFESSにアップロードすると、レプリカシャードが落ちてゆきます。
完全にダウンしないところが、かえって手間がかかる感じです。

いろいろ実験してみましたが、「不正な辞書でインデックスに登録した部分を除去する」のが対処療法として使えそうです。

管理画面の右上の検索窓に
timestamp:[now/d-2d TO *]
を入れると、過去2日間で更新されたレコードを抜け出せます。
これを、UIの画面下の赤ボタンで削除。
これでげかしゅつじゅは終わりです。

2019年1月28日月曜日

FESSのKuromoji辞書の更新に失敗したら

FESSは非常に優れたオープンソースの検索システムですが、日本語の形態素辞書についてはデリケートな扱いが必要です。

端的に言えば、辞書を間違えると、インデックスが半落ちします。

僕も時々インデックスを飛ばしているのですが、Kuromoji辞書はかなりデリケートです。

何回か飛ばして、不整合を起こす例を調べたのですが、
1.トークンが重複してはならない
2.分割と読みの文節数が一致していないとならない
3.「ぁ」と「あ」は同一視され、かつトークンが重複してはならない
を守らないとなりません。

今はAccessでトークンがユニークになるようにしています。

Kuromojiが失敗すると、FESSは以下の症状を起こします。

1.プライマリシャードは一見、正常に見える
2.レプリカシャードが徐々に落ちる
3.レプリカシャードを手動でアサインできなくなる
4.レプリカシャードをアサインしても、Translogが0.0%から進まない

こうなったら、まずクローラーを停止して、レプリカの数をゼロに戻します。
辞書を正常に動作していた時に戻して、レプリカを1に戻します。

これで、一応アサインされたら復旧できるのですが、成功率が100%でないので、僕も研究をしているところです。

タピオカとガソリン

こんばんは。 タピオカブームが続きますね。空いたら行こうと思っているのですが、なかなか機会がありません。 次々とロールアウトされるタピオカ。 あれって、1日でどれぐらいのエネルギー(熱量)が移動しているのでしょうか。 気になったので計算してみました。 以下の条件を想...