榊原伸也 のすべての投稿

Google Homeから適当にしゃべってLUISに自然言語処理させ、カレンダーに予定を登録させるというお話(其の一)

しばらくぶりのブログでございます。

ネタはいろいろあるんですが、ついついクオリティにこだわりすぎるあまりまとめきれず・・・

言い訳は見苦しいのでさっさと本題に参りましょう。

今回は、「Cogbot! – Cognitive Services, Bot Framework, Azure ML, Cognitive Toolkit(CNTK) Advent Calendar 2017」
のためのエントリーでございます。

https://qiita.com/advent-calendar/2017/cogbot

ということで、最近話題の機械学習についてのエントリー。
技術屋といいつつ全然技術屋らしくないことばっかり普段ボヤいているので、今回はちょっと頑張ろうかと思います。

最新のGoogle HomeとGAしたてのLUISで最先端!

今回の主役は「LUIS」。

正式には「Language Understanding Intelligent Service」といいます。
2017年12月13日にGAを迎えたばかりの、ホットなサービスですね。

何をしてくれるかというと、人間が投げかけた普段話している文章を、全体の文脈や文章の中に含まれている単語などから意味を理解し、理解した意味に沿って解析してくれるというものです。

(やってくれるのは文章の解析までで、その後何をするかはこちらで用意してやる必要があります。)

例えば・・・
明日の天気を知りたい場合、丁寧に言えば
「明日の名古屋の天気を教えてください」
でしょうが、実際に人との会話の中ではもっとフランクに

  • 「明日の天気教えて。名古屋の。」
  • 「明日の天気知ってる?」
  • 「明日天気どうかな」
  • 「明日名古屋晴れるかな」

といろいろです。

これまでのITサービスでは、このような自然な言葉の”揺らぎ”を吸収することができず決まった言葉でサービスに投げかける必要がありました。

それを解決し、自然な口語でコンピュータと対話できるようにする技術・自然言語処理が「LUIS」なのです。

今回は、このLUISを使って、もう一つ話題のGoogle homeから投げかけた言葉を解釈してカレンダーに予定を登録するという仕組みを作ってみたいと思います。

ここまで前置き。

LUISは人間とコンピュータの間の翻訳家みたいなもの

さて、全体の構成はこのようになります。

image

メインとなるLUIS以外にも様々な要素が絡んでますが、それを一つ一つ説明していると大変なので、本日は主にLUISの部分について解説していきます。

LUISは・・・

  1. 予定登録のためのいい加減な文章のテキストデータ(※インテント)を入力とし
  2. 予定登録のために必要な、日時や場所、予定の内容などの情報(※エンティティ)に分ける

ことをやってくれます。

※インテント 平たく言えば文章(特定の回答を持つ文章群)

  •  天気予報の回答を求める文章
  •  時刻の回答を求める文章
  •  ただの挨拶

※エンティティ 平たく言えば単語(特定の意味を持つ単語の集合)

  •  駅名(名古屋、大阪、東京、福岡、札幌)
  •  天気(晴れ、曇り、雨、雪、槍)
  •  時間の概念(今日、明日、何日、何時)

なので、LUISを利用する場合・・・

  • 自分が何を求めたいのか
  • ユーザーのどんな要望に回答させたいのか

を明確にすることが重要になります。

今回は「予定の登録」ということに的を絞っていますが、一般の人が想像するような賢いAI・・・
マルチなBOTを作ろうと思うと、無限のインテント登録とエンティティ登録が必要になります。
これはすごく大変。

自然言語処理の難易度をわかりやすいかどうかは別として例えてみると・・・

1.あいさつ・・・・容易

2.特定の回答・・・まぁまぁ容易
(天気予報とか、時刻の回答)

3.特定のジャンルのチャットボット(アニメで例えれば「四畳半神話大系」に関するBot)・・・やや困難
(ジャンルに関するインテントの準備とエンティティの準備がソコソコ多い)

4.広いジャンルのチャットボット(ガンダムに関するBot(作品は単発だが壮大なシリーズ構成))・・・かなり困難
(ジャンルに関するインテントの準備とエンティティの準備がかなり多い)

5.かなり広いジャンルのチャットボット(アニメ全般)・・・滅茶苦茶困難
(ジャンルに関するインテントの準備とエンティティの準備が半端なく多い)



100.人間のエミュレーション(無限大)

これを自動的にやる手法としては、昔よくあった人工無能のように、わからない質問に「それはなに?」と質問に質問で返して学習でしょうか。

今時な手法としては、不明な質問群を再帰的にAIに食わせて自己学習させていく感じでしょうか。夢は膨らみます。

ということなので、インテントとエンティティの材料集めの仕方や攻略アルゴリズムを得た人が勝ちということですね。

それをさらにAIに処理させることによって指数関数的に賢くなれるということになります。
もうこれは数多くこなしたほうがいいに決まっているので、やるなら早くやったほうがいいということです。

では予定登録のLUISを実装してみましょう

閑話休題。

では早速今回のケースを実装してみたいと思います。

LUISの基本的なサービス利用方法については、以下のブログがこんなブログより大変ためになるので是非参考にしてみてください。

LUIS 入門(Cognitive Services – 2017年12月版 – 1/2)
http://beachside.hatenablog.com/entry/2017/12/07/000000

LUIS 入門(Cognitive Services – 2017年12月版 – 2/2)
http://beachside.hatenablog.com/entry/2017/12/11/140000

お話は、LUISのサービス利用準備が整い、アプリを作る手前の画面から始まります・・・。

2017-12-23_00h38_45
「Create new app」をクリックし

2017-12-23_00h40_07
「Name」には任意のアプリ名を入力します。
「Culture」はかならず”Japanese”を選択しましょう。
「Description」はアプリに関する説明です。特に入力は不要です。
入力できたら「Done」をクリック。

2017-12-23_00h40_19
入力した通りのアプリが作成されたことを確認しましょう。

インテントの登録

2017-12-23_00h49_08
早速インテントを登録していきます。
エンティティから入力しても良いですが、まずは人間が発話する自然な文章を片っ端から入力していくのが良いのではないかと思います。
エンティティに引っ張られず、よい例文がたくさん並ぶと思います。

2017-12-23_01h02_30
こんな感じで、スケジュールの登録に必要な文章を入力していきます。
例文はちょっと整いすぎてますね・・・
もっと表現をバラしたほうが、最終的な学習精度が良いと思います。

この時点ですでに、名詞や助詞などに文章が区切られています。
単語の間に微妙にスペースがあるのが分かり、カーソルで単語にフォーカスすると単語ごとに[]で分割されていることが分かります。

エンティティの登録と関連付け

2017-12-23_01h04_20
続いてエンティティを登録します。
エンティティはエンティティの要素を一つ一つ登録してくのではなく、エンティティを包括する種類・カテゴリを登録します。

2017-12-23_01h04_35
例では「場所」のエンティティを登録しています。
これは、インテントの中にある「名古屋」や「半田」といった地名をまとめるエンティティです。

2017-12-23_01h07_22
同様に、スケジュールにおいてどんなことをするのかという「予定の内容」というエンティティを作成します。
今回のケースでは「打合せ」や「ミーティング」「出張」などがこれにあたります。
ちょっと例が悪く、このエンティティは相当な量を登録しないと精度が上がらなさそうですね・・・。

2017-12-23_01h09_19
さてここで一旦、インテントの中にある単語とエンティティをひもづけてみましょう。

文章の中にある地名に相当する単語をクリックすると単語の下に
「Browse prebuilt entities」
「予定の内容」
「場所」
と、登録したエンティティが表示されるので該当するエンティティをクリックして関連付けを行います。

2017-12-23_01h09_31
関連付けが終わると、エンティティ名に置き換わります。

2017-12-23_01h11_12
同様に「予定の内容」エンティティも関連付けます。

2017-12-23_01h13_37
エンティティに登録したい語句が複数の単語にまたがる場合、最初の単語をクリックした後登録したい単語までカーソルを移動し、末尾の単語でもう一度クリックすることで連続した単語でエンティティに登録することもできます。2017-12-23_01h13_51
出来上がりはこんな感じ。

が、これも非常に多くのパターンを登録しなければ精度は上がらないと思われます。
可能な限りエンティティは小さくまとめるようにしたほうが良いかと思います。

2017-12-23_01h16_20
ということで場所と予定の内容のエンティティの関連付けができました。

日付に関するエンティティの問題

肝心な日時が残っていますが、これが実はなかなか大変・・・。

LUISには、多くの方が利用するようなエンティティに関しては、学習済みの多くのプリセットエンティティが用意されており、日時についても相当するものがあります。

それが「Datetime」です。

2017-12-23_03h16_14

認識精度が高いことを期待して当初このPrebuiltエンティティを使っていたのですが、日本語で表現される日時のフォーマット(2018年1月22日15時など)はうまく認識してくれず、月だけエンティティ化されたり、時間だけエンティティ化されたりと最後まで癖がつかめませんでした
(諸先輩方、よい方法あったら教えてください)

故に最終的な結果もあまり芳しくない状態になってしまっています。無念。

2017-12-23_01h21_08
ということで、とりあえず日時の範囲だけでも正確に取得するために「日時」エンティティを作成し、関連付けしました。
このぼんやりとしたエンティティ・・・エンジニア的にはなんとも歯がゆいところであります・・・。
(推奨フォーマットはISO 8601 format)

インテントとエンティティの登録が終わったら学習させよう

2017-12-23_01h25_40
さて、インテントをいくつか(※)登録しエンティティとの関連付けが終わったら、登録したインテントをもとに学習させます。
画面右上の「Train](電車じゃない)をクリックします。

※長い文章、複雑な文章ほどインテントを多くしたほうが精度が上がります。

2017-12-23_01h26_04
学習が始まり・・・・

2017-12-23_01h26_11
学習が終了しました。

2017-12-23_01h26_24
では実際にきちんと認識してくれるか試してみましょう。
「Test」ボタンをクリックします。

2017-12-23_01h27_53
テスト用に文章を試すことができる入力フォームが現れるので、インテントを登録したように文章を入力してEnterキーを押します。
すると反転した文章が表示されます。
反転した文章の右下「Inspect」をクリックすると、入力したテストデータの解析結果を見ることができます。

今回は日時、場所、予定の内容について、日時のみ正確でした。
(個人的に内容は”パーティの打ち合わせ”まで認識してほしい・・・が登録インテント数が少ないので難しい)

2017-12-23_01h29_46
失敗した文章はインテントに登録し、エンティティの関連付けを行います。
これを繰り返して精度を上げていきます。
LUISはAPIも公開されているので、判定スコアの低い結果については自動的に学習用のインテントに取り込んで、管理者にエンティティ付けを行わせるようにすることで効率的に解釈の精度を上げていくことができるように思います。

2017-12-23_01h30_31
リトライ。正確に認識してくれました。
(インテントまんまだからそりゃそうでしょ・・・)

外部連携のためにアプリを公開

さて、ある程度学習とテストを繰り返したら、公開しましょう。
今回はこれだけでは終わりません。
入力はGoogle Homeからもらい、処理した後カレンダーの登録を終えなければいけないのですから!!!!

2017-12-23_01h31_18
画面右肩のタブ「PUBLISH」をクリックし、「Publish to production slot」をクリックします。

image
インテントの登録後学習が十分でないと、グレーアウトしてボタンが押せなくなっている場合がありますが、その場合は再度学習させましょう。

2017-12-23_01h31_30
公開プロセスが進み・・・

2017-12-23_01h31_33
公開プロセスが完了しました。

これで外部のサービスからも利用することができるようになりました。

2017-12-23_03h39_05
この時、後々サービス間での関連付けに必要になるKey情報をコピーしておきます。

2017-12-23_03h00_50_2
現在終わったのはこれだけ。
紙面の都合で、その他の部分は改めて別のエントリーとします。
(そもそもここまでの手順って、上述のブログであったような・・・orz)

Logic Appsで全体の処理の実装

さて、ではその他の仕組みと連携させましょう。
AzureのLogicAppsで全体を組み立てていきます。

2017-12-23_01h34_55
LogicAppsの手前、Google Homeから取得する、解析元になる文章は、WebHookでIFTTTから取得します。
そのあとの変数とか日時データの取得は苦し紛れの対応なので、とりあえず無視してください。
みなさんはもっとスマートな実装を目指しましょう。
(いい方法あったら教えてください)

2017-12-23_01h36_14
LUISの設定は、アクションの登録から「LUIS」で検索して「LUIS – Get prediction」を選択します。

2017-12-23_01h37_04
まずはどのLUISサービスに接続してアプリを利用するのか判別するために、先ほどコピーしておいたKey情報を「API Key」エリアに入力します。
「接続名」は任意の文字列でOK。
「作成」をクリックします。

2017-12-23_01h40_41
「LUIS – Get prediction」アクションが作成されると、また入力フォームが現れます。
「App Id」はクリックすると、Keyに紐づく先ほど作成したLUISアプリが表示されるので、選択するだけです。
「Utterance Text」は解析させたい文章・文字列なので、Webhookから送られてきた文章を指定します。
(本来はその他の処理も考えてJSONで送りたいところですが、今回は簡潔にするためプレーンテキストで送っているため本文をそのまま処理しています。)
「Desired Intent」は、処理させたいインテントを指定することができます。
前処理で確実に「予定の登録」インテントで処理することが分かっている場合はプルダウンから「予定の登録」を選択しても良いですが、通常はデフォルトの「Desired top scoring intent」が良いでしょう。

インテントが複数登録されていた場合、文章の解析中に判定されたスコア(最も適切なインテントである確率)が一番高いインテントが自動的に利用されます。

LUISの処理登録はこれだけです。

続いて、処理後の値をカレンダー登録させるための処理を設定します。

LUISで処理後は、以下のようなJSONが返っていています。

{“query”:”2018 年 1 月 22 日 16 時 名古屋 で 打ち合わせ”,”topScoringIntent”:{“intent”:”予定表の登録”,”score”:1.0},”intents”:[{“intent”:”予定表の登録”,”score”:1.0},{“intent”:”None”,”score”:0.008573224}],”entities”:[{“entity”:”2018 年 1 月 22 日 16 時”,”type”:”日時”,”startIndex”:0,”endIndex”:19,”score”:0.916193664},{“entity”:”名古屋”,”type”:”地名”,”startIndex”:21,”endIndex”:23,”score”:0.99994874},{“entity”:”打ち合わせ”,”type”:”予定の内容”,”startIndex”:27,”endIndex”:31,”score”:0.9998853}]}

2017-12-23_01h44_26
Logic Appsが解釈してオブジェクトごとに分けた結果

この中で必要なデータは、解析後のエンティティのカタマリなので、「Entities Array」を「For each」アクションでエンティティのアイテムごとに取得し、エンティティのtypeで判別してそれぞれ予め準備しておいた、エンティティに対応する変数へ格納します。
(もうちょっとスマートにならんかなコレ・・・)

2017-12-23_01h43_01

で、準備できたエンティティのデータをようやくカレンダーに登録します。

2017-12-23_01h44_43
が、ここで問題が・・・。
Google Homeからやってくる日付データはまんま日本語の文字列です。最近はある程度のフォーマットでまとまっている場合、うまいことパースしてくれるシステムもあるのですが、Logic Appsではそれがうまくできず、取得した日付データを用いてのカレンダ登録は断念しました。ぐぬぬぬ無念・・・

LUISを使うことが主テーマなので、自然言語処理で得られた日付のエンティティデータを後続処理でISO 8601規定に則ってフォーマットしてからGoogleのAPIに投げるなどしないといけないですね。

お恥ずかしながら、今回は現在時刻で「仮登録のスケジュール」として登録し、あとで予定表を手動で治すというクソオペレーションでお茶を濁すことと相成りました。
絶対直してやる。
(「終了時刻」と「開始時刻」の”デフォルト開”とか”デフォルト閉”は現在時刻の取得アクションから取得したデータを投げてるだけですスミマセン)

ということで、一通りの処理が作成できたのでテストです。
(例によって細かいチューニングはありますが・・・)

今回の動画で実際に取得したEntities Arrayのデータ。

Entities Array
[
{
“entity”: “2018 年 1 月 22 日 16 時”,
“type”: “日時”,
“startIndex”: 0,
“endIndex”: 19,
“score”: 0.916193664
},
{
“entity”: “名古屋”,
“type”: “地名”,
“startIndex”: 21,
“endIndex”: 23,
“score”: 0.99994874
},
{
“entity”: “打ち合わせ”,
“type”: “予定の内容”,
“startIndex”: 27,
“endIndex”: 31,
“score”: 0.9998853
}
]

で。登録された結果です。

2017-12-23_02h20_08

肝心の日付が・・・

さて、長くなりましたので、一旦本日はここでお開きといたします。

LUIS前後のLogic Appsの処理の解説や、日付処理のリベンジはまた改めてやりたいと思います。

長い時間お付き合いいただきありがとうございました。

 

【車DIY】エンジンがかからない・・・(2)

急にエンジンがかからなくなった車の修理顛末です。
前回からの続き!

セルユニットを応急修理する

ということでセルを修理してみましょう。
部品もないのでこれも応急処置です。

方針は以下の二つ

  1. セルユニットの分解と洗浄
  2. 明らかな異常があれば修繕

メンテの基本は分解と清掃・洗浄です。接点不良やちょっとした動作不良なんてこれで大概直ります。
そのうえで明らかな異常が見受けられれば、交換部品が届くまでの応急修理を施します。

では分解分解分解!!!

IMG_0309

セルの位置はエンジンルームの奥深く、バッテリーやエアクリーナーの下にあります。
まぁまだ見えるだけましですね。

まず作業に邪魔なバッテリーを取り外します。

IMG_3933

続いてエアクリーナーボックスを取り外します。
いろんなセンサーのカプラーがついているので気を付けます。
なんとエアクリの蓋にエアフロセンサがついていました。

エアクリ交換するとき気を付けないと・・・

IMG_3935

エアクリを外すと俄然セルモータにアクセスしやすくなります。
12mmのナットで+のケーブルが、またカプラがついているので取り外します。

配線を切ったらあとは本体を外すだけ。
セルユニットは2か所14mmのボルトで固定されているので、2本を外します。それほど窮屈ではないですね。

IMG_3940

手前側。

IMG_3941

セルの奥側。アースと共締め。

IMG_3971

外れました。
上がマグネットスイッチ。
マグネットスイッチも分解清掃するので、外します。2本の+ネジで止まってます。ナメると悲惨なので、慎重に外しましょう。

ネジが無事外れたら適当にバラして掃除します。
特に動きに渋さはなく、おそらくこちらは関係なさそう。

本命のセルモーターも簡単にバラすことができます。

IMG_3970

エンジンと反対側にある8mmのボルトを外します。

IMG_3942

簡単にばらせます。
左からケース、ローターとブラシ、ギアユニット。

IMG_3943

ケース内もブラシのカスでいっぱいです。
エアブローで掃除。
コンプレッサーなどがない場合はガス式で。

 

IMG_3944

ローターもブラシカスでいっぱい。
まずはエアブローします。

IMG_3946

ローターをブラシ側ケースから外すには、このスナップリングを外さなくてはいけません。
ゴムキャップの裏に隠れているので外します。
手持ちのスナップリングプライヤーより小型のフックだったので、ちょっとやすりでスナップリングプライヤーを削りました。

 

IMG_3947

で、ローターをブラシと分離。
左側のケースについている変形した四角の四つの部品がブラシ。程よく汚れています。

IMG_3949

って、ええええええええええええええええ!?
マイナス側のブラシほとんどないやん・・・

IMG_3949

プラス側のブラシに比較して、約5㎜ほど短くなっています。片側は特に損耗が大きく、ローターに当ててみると全く当たっていません。0.5mm程度は隙間がある感じです。
シックネスゲージが通りますw
こりゃかからんわ。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

シンワ測定 シックネスゲージ E 17×13×105mm 73796
価格:1439円(税込、送料別) (2017/10/8時点)

 

自動車に限らず電力供給のための接点や配線の太さ(面積)というのはとても大切で、その電力供給能力は断面積の大きさに比例します。
接点が小さくなればなるほど流れる電流の量が少なくなり、持てるポテンシャルを発揮できなくなります。

今回の場合、まず片側の接点は死んでいるのでもう一方だけで電力供給を担っていた状態で、かつブラシの摩耗により接触面積が減ったことで、今朝方モッサリとしたセルの動きになったのでしょう。(そもそも片側はバックアップかも)

ということは、修繕してやればまたキビキビとした動きになるはずです。

IMG_3951

ということでバラします。

IMG_3955

ブラシユニットを外します。
ブラシとケース、ブラシをローターに押し付けるばねで構成されています。

残念ながらブラシそのものは極限まで損耗しており、ワイヤーが引っかかってこれ以上どう頑張ってもローター側には出てこない状態です。

IMG_3963

ケースとブラシの関係はこんな感じ。これはプラス側。

IMG_3958

そのため、ブラシケースを加工しつつ、ブラシケースそのものを底上げしてやることでローターにおしつけてやります。

ケースの加工のためにブラシユニットもばらします。

path5906-5-5

こんな状態。
なので加工して・・・

path5906-5-5-9

ブラシケース自体を底上げして、ローターに押し当てます。
ブラシケースが動く分、ブラシケースそのものがローターの接点(コミュテータ)にあたるとまずいので、ブラシケースの上部をグラインダーで削ります。

IMG_3964

ということで加工が終わったブラシ。
わずか1mmの底上げですが、これで半年は持つでしょう。
どのみちすぐに新品のブラシに交換するので十二分です。

IMG_3967

ローターをくみつけます。
しっかりと密着しているのが分かります。
ブラシの接触面とコミュテータの接触面を軽く研磨して、接点の状態も改善させたのでなおよいと思います。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

呉工業(KURE) [NO1424] 接点復活スプレー 220ml NO-1424 290-1501
価格:347円(税込、送料別) (2017/10/8時点)

 

紹介しておいてなんですが、ケミカル系は避けた方がいいかも。
今回はスコッチブライトで接点を磨いてます。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

スリーエム(3M) スコッチブライト 工業用パッド74487448 S/B 1箱(20枚)
価格:4093円(税込、送料無料) (2017/10/8時点)

 

あとは逆の手順で組み立てるだけ。

さて緊張のエンジン始動です!

ご参考までに

【車DIY】エンジンがかからない・・・(1)

エンジンがかかりません。
やる気のエンジンとかそういうダメ人間暴露系のエントリーではなく、普通に車のエンジンがかからないのです。

結果的には元気モリモリエンジンかかっておりますが、今回はそんなエンジンかからないときのDIY対応顛末を綴りたいと思います。

今回はこんな症状

車種はH16年式、13万5千キロ走ってるAZR60 ノアです。
車検半年残した状態で、コミコミ18万で購入しました。
意外にもワンオーナー(書類上は一件中古車屋を挟んでいる)で大きな問題もなく、ディーラーで定期的にメンテされていたようです。走行距離と年数から言って、ボチボチところどころヤレが出てくる頃です。
まぁ自前で修理可能なので、それも承知の上で購入しました。

購入から半年、特に問題なく快適に運行していましたが、ある時役所まで行った帰りに、役所の駐車場でエンジンをかけようとするとセルモーターのリレーの音が「カチっ」とするだけでセルはうんともすんとも言いません。

幸い次の予定まである程度時間があったのでヒヤリとはしましたがそれほど焦ることもなく、次の瞬間にはニヤリとしてしまいました。

トラブルですよ!
エンジンに火は入りませんが、DIY魂に火が付きました。

まずは落ち着こう、そして考えよう

ふつうは慌ててパニックになるところなので「落ち着け、落ち着いて考えるんだ」となるところですが、私の場合はトラブルに対応する機会が来たこと(ブログネタ)に興奮してしまって正常な判断能力を失う可能性があるために、まずは落ち着くことにしました。そして、セルが回らない一般的な原因を確認してみることにします。

1.シフトレバーが正しい位置にない

オートマ車の場合、Pレンジ、またはNレンジにシフトレバーがないと、エンジンはかかりません。
まれにシフトレバーのスイッチの接触不良でPやNレンジと認識されていないこともあるので、何度かグリグリPとNの間でシフトレバーを動かして始動を試みますが、インジケーターは正しく動作しますが、リレーがカチッとは言うもののセルはうんともすんとも言いません

これが一つ味噌で、もしPやNに入っていない場合はそもそもセルのリレーが「カチっ」とすら言わないため、見当違いであることが判ります。

シフトレバーは原因候補から消去です。

2.ヒューズが飛んだ

なんらかの原因で(それはまたあとで確認・解決しなければいけませんが)過電流が流れ、セル用のヒューズが飛んだことが考えられます。

ヒューズを確認してみますが、特に異常なし。
念のため他の電子機器用のヒューズも確認しますが、特に異常なし。ヒューズは問題なさそうです。

テスターがあればセルモーターで直接電圧測って確認できるのですが、出先でそんな便利なものはありません。

3.異常を検知してECUで制御している

なんらかの機器の異常をECUが検知して、始動が危険と判断しセルを制御していることが考えらえます。
が、その場合もシフトレバーと同じくそもそもリレーすら起動しないはずなので、違いそうです。
まぁでも対処するのはタダなので、バッテリーを外してECUリセットを試みました。結果変わらず。

4.バッテリーがアガっている

IMG_0311

車にある程度詳しい方は真っ先にここを疑えよと思うかもしれませんが、最初に疑わなかったのには理由があります。
そもそも今朝役場に行く前はエンジンがかかっており、しかもそれほど長距離を運転していないので、セルがピクリとも動かないほどまでのレベルに急激にバッテリーが劣化することは考えられません。
キーONで元気にオーディオはなりますし、ライトも暗くなく、パワスラも元気に動きます。
この程度の電力が残っていれば、最初の一回りぐらい「ウニョッ」と回るはずです。

ただし、バッテリー原因説を完全に消去するにはやや引っかかるところもあります。
それは、今朝エンジン始動したときのセルモーターのややモッサリとした回り方です。

普通「キュンキュンキュン」
今朝「キュオッツ・・・キュンキュン」

冬場などにバッテリーの能力が一時的に下がっているときになる感じで、ああ、バッテリー交換時期かなぁ(にしても急にヘタりすぎだけど)と思いました。

5.オルタネーターが死んだ

今朝のセルのちょっとした重さ、それから数時間でバッテリーが逝くまで電力消費する症状の原因として考えられるのが、オルタネータの故障です。
走行13万キロ超えていますし、これぐらいの走行距離でよく出る故障のひとつです。

オルタネータが故障するとエンジン始動中に発電されず、バッテリーは消費されるままになり、数時間の運転で徐々にバッテリーがなくなりそのうちエンジン停止に陥ります。

が、今回は家から十数分の距離、また現状の電装部品の動作状況から考えると、仮にオルタネータが死んだとしてもバッテリーが枯渇するほど酷い状態にはならないはずです。

原因として消去はできませんが、とりあえず応急処置としては手が出せないのでとりあえず棚上げしておきます。

6.セルモーターの故障

様々な原因を消去法で考慮していくと、結局ここに落ち着きます。
13年落ち13万キロという乗り方は、長い距離を乗るのではなく、短い距離を繰り返し乗るような乗り方、近所のスーパーに行ったり送り迎えをしたりといった乗り方ですが、その場合セルが結構な頻度で使われることになります。

セルは大きな電力を利用しまた大きな負担がかかる部品でもあるのでそろそろ異常が出てもおかしくないでしょう。

応急処置を試してみる

IMG_3930e

さて、セルが原因となると考えられるのは二つ。

ブラシの異常か、マグネットスイッチの故障です。

ブラシは車体から供給された電源を、電磁石であるローターに送るための超重要な部品ですが、その構造と原理から損耗やむなしな部品、つまり消耗品です。

マグネットスイッチは、セルモーターが回っている間だけフライホイールにセルモーターのギアを連結させるためのソレノイドスイッチで、レバーを介してモータに接続されたギアをフライホイールに接続します。

こちらは消耗品というわけではないですが、ほこりなどの侵入によりソレノイドがうまく動作しなくなることもあります。

セルモーターとマグネットスイッチ。
この二つの異常にたいして一時的に対応するための、割と知られた応急処置があります。それが・・・

セルユニットをたたく

ことです。
昭和な映画やドラマでブラウン管テレビの映りが悪くなった時にバンバンたたいて直す、アレです。
セルモーターを叩いて喝を入れるのです。

ということでやってみる

ということで、車載してあるやや大きめのモンキースパナでセルをコツコツ叩きます。
叩いたらイグニッションオン!始動!

「キュンキュンキュン ブロロ・・・」

かかりました。
セルはもたつくこともなく元気に回っているので、バッテリーの劣化はなさそうです。(厳密にいえば多少もたつきはある)

原因が気になるところですが、まずは一旦家に帰ります。

一旦帰宅した後バッテリーとオルタネータの状態を確認してみます。

エンジン停止時11.6V、エンジン始動時(オルタネータからの供給時)12.5V弱ということで、いずれも正常な範囲内ということが分かりました。
※やや発電電圧が低い?IMG_3929

エンジン停止状態。11.6V。まぁこんなもんでしょ。

IMG_3928

エンジン始動時。12.4V。ちょっと電圧低いかな?

なんで叩くと直るのか

理由ですが、これは叩いて喝を入れると背筋がビシッと通って気合いが入るからです。
エレクトロニクスに支配された世の中ですが、まだまだ精神論は通じるのです。科学的に解明できないが事実存在する「火事場のバカ力」なんてのもその一例。
ようは気持ちなんです、気持ち。

なわけないです。

まずはブラシから見ていくと、ブラシは前述の通り損耗します。どんどん減っていきます。そのため、減りすぎるとローター側の接点と接触不良を起こし、うまく電気が流れずにセルが動かない事態となります。
結構な電流が流れますが12Vと電圧が貧弱なため、ちょっとの接触不良でちーとも動かなくなります。
これをたたいてやることで、(一時的に)少しでも接触を増やしてやるということです。

マグネットスイッチの場合、汚れやほこりなどによりソレノイドの動きが悪くなるため、これも叩いてやることで多少動きやすくしてやるのです。
固くしまったボルトを緩める際、ちょっと叩いてやるのと似てますかね、違いますかね。

なんにせよ良くない状態であることは間違いないので、セルモータの修理または交換が必要です。

DIYのつらいところで楽しいところ

さて、なんとか応急処置で帰宅したものの、直すためには部品が必要です。しかしどんなに頑張っても、Amazonのプライム会員でも部品が届くのは明日以降(その時点でまだ午前中だったため)。
ディーラーに頼めば夕方までの納入も不可能ではないですが、そのディーラーまで行くためのアシが今こうして故障中なのですからどうしようもありません。

不幸なことに嫁が明日の朝いちばんから車を使う予定があり、今日中に何とかする必要があるのです。

修理工場に預けてしまえば代車の手配もありますが、セルの修理なんていくら取られるかわかったもんじゃありません。
(予想で部品代3万~、交換工賃2万5千で合計5万5千円~

ここはできるところまでやってみるしかありません。
レッツDIY!!!

長くなったので、実際の修理は次回です。

ご参考までに