投稿者「dekkaino」のアーカイブ

日産EV用プラットフォームは電池水冷方式へ

生きていた“ゴーン計画”、日産がEV専用プラットフォームを20年量産

走行用電池の熱マネジメントは、電池の性能を大きく左右する。Teslaが電池パックの中に冷却液を流して強制的に冷却しているのに対して、初代ZE0から2代目ZE1まで日産リーフは自然放熱に頼っている。走行用電池があまりにも高価であるため、コスト低減の目的で電池冷却機構は省略されたといわれている。モデルSの発売が2012年6月で価格は1000万円以上するのに対して、日産リーフは2010年12月に400万円弱で発売されたことからも、日産のコスト低減努力が相当なものだったことがうかがえる。しかし、日産リーフの電池はアリゾナ州など高温環境で顕著に劣化することが発覚したり、急速充電を繰り返すと電池温度が高くなって保護のため充電電流が制限されたりと、自然放熱に頼った電池温度制御の問題点が指摘されていた。

日産、三菱、ルノーが2020年ごろに共通のEV用プラットフォームを採用した車を市場投入するとアナウンスされたときも、2010年ならいざ知らず2020年にもなって受動的な熱マネジメントに頼るEVは難しいだろうという思いを抱いたものだ。予想通り、2019年の東京モーターショーで披露されたクロスオーバーEVのコンセプト車アリアを含む新プラットフォーム車は水冷式になる可能性が高いというコメントが開発担当者から出た。電池の劣化は日産リーフの抱える最大の問題といっても過言ではないから、次の車からは温度管理が強化されて気苦労なく乗れる車になってほしい。

 リチウムイオン電池は床下に敷き詰める。日産はこれまで電池パックの冷却冷却方式として、自然空冷を採用してきた。アリアを含む新PF採用車は、水冷方式に切り替える可能性が高い。「電池の性能を安定化させたり劣化を抑制したりするためには、強制的に冷却する方が良い」(前出のEV開発担当者)と判断した。

生きていた“ゴーン計画”、日産がEV専用プラットフォームを20年量産
久米 秀尚=日経 xTECH/日経Automotive
2019/10/23 20:36

[GAS] フォームの送信時トリガーの多重実行

スプレッドシートをフォームとリンクして、フォームからの書き込みがあったときにスクリプトを動作させるトリガーが「フォームの送信時」トリガーである。これにバグがあるようで、フォームに回答が1回しかないのに、トリガーをかけているスクリプトが複数回実行されることがある。あとから実行されたスクリプトではeに値が入っていないので、ファイルへの書き込むなどに支障がでる。

代表的な回避策としては、スクリプトをスプレッドシートではなくフォームの方に記述し、スクリプトを介してスプレッドシートへの値書き込みを行うというものがある。ほかには、スプレッドシートのスクリプトでsleepを数秒かけたり、eの値が入っていないときに処理を止める条件分岐を付ける手法がある。

フォームのスクリプトの基本的な作り方はGASのonFormSubmit()でハマったことを参照。あとはreferenceでも読んで試してみる。スプレッドシートに書き込むには、appendRowすればいい。フォームへの回答の中身は以下で確認できる。ファイルのアップロードは、Drive上のファイルIDが回答になる。

function onFormSubmit(e){
  var mail = e.response.getRespondentEmail();
  Logger.log(mail);
  var date = e.response.getTimestamp();
  Logger.log(date);
  
  var itemResponses = e.response.getItemResponses();

  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var title = itemResponse.getItem().getTitle();
    var value = itemResponse.getResponse();
    Logger.log('["%s"] Title "%s", Value "%s"', i, title, value);
  }
}

便利そうなやつ
Googleフォームのプルダウンにスプレッドシートの内容を反映させる

2019年10月

10月の走行距離は311kmでした。

電費は7.8 km/kWhで9月より0.2改善しました。冷房が要らなくなってきましたが、夜はステリングヒーターを点けるときがあります。

月額2,160円のZESP2に対して、ガソリン140 円/Lとして燃費20.2km/Lと同等です。

急速充電 7回、普通充電は0回、急速充電1回あたりの走行距離は44 kmでした。

[GAS] GASを使ってもらうようにする導入資料

GASを知らない同僚にGASを使う価値を理解してもらい、学習を始めるきっかけを与えるために有用な資料を集める。

GASの価値を理解してもらう

Google Apps Script (GAS) で毎週 30 分の雑務を自動化した話
毎月 500 時間の社内ルーティンワークを GAS を使って自動化した話
ともにグロービスのYuki Tanabe氏が社内業務にGASを活用したケースを紹介している。ありがちな事務作業が対象で、自職場での活用イメージがわきやすい。

GASの学習を始める最初の一歩

非プログラマの事務員にGASをいきなり書かせるのは難しい。まずはマクロやちょっとした関数として使ってもらう。Google Apps Script ハンズオン資料にあるような具体的なケースを与えて、一緒にプログラムを作る経験を積ませる。慣れてきたらGAS ビギナーが GAS を使いこなすために知るべきこと 10 選で紹介されているような一段階高度な内容を教えるとともに、自分だけでプログラムを描けるように励ます。

【保存版】初心者向け実務で使えるGoogle Apps Script完全マニュアル
実例が非常に豊富

GAS使わなくても便利な機能があることも同時に教える

非プログラマには、プログラムを書くのは魔法を覚えるようなもの。はじめは何でもできるような気がするが、仕事では投入する時間やリソースと利益を秤にかける必要がある。車輪の再発明をしないためにも、既存の機能を学ぶことも推奨する。

たとえば、Google ドキュメントの音声認識機能(ツール>音声入力)。音声からかなり正確に文章を生成してくれる。まさに魔法のようだ。音声入力はキーボード操作が得意でない層にアピールするだろう。音声入力以外に翻訳機能もある。

[GAS] Google Apps Scriptでハッシュ化する関数

GASで送信したメールのリンクを踏むと受領確認できる仕組みにはURLクエリパラメータを使えばいい。しかし、ユーザーIDのような意味のある値をあからさまにURLに付加するのはやりたくない。そんなときは受け渡すパラメータの値をハッシュ化すればいい。

Google Apps ScriptではcomputeDigest関数でアルゴリズムを指定して簡単にハッシュ値を取得できる。使用可能なアルゴリズムは、MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512, (2019/11/1現在)。

たとえば、スプレッドシートの何行目の値を編集するかをクエリで指示する際に、行数を指定する情報とユーザーIDを結合した文字列をハッシュ化したものをスプレッドシートの同じ行に書き込んでおく。このハッシュ値で検索すれば、あからさまにユーザーIDや行を特定する情報をパラメータに含まなくても、該当する行を選択することができる。

参考
スプレッドシートで覚えるブロックチェーン |「もしかして渡した値」「入れ替わってる!?」

[GAS]Googleフォームの解答欄にあらかじめ答えを入れておく

アンケート調査や申し込み手続きで回答を入力してもらうのに、Googleフォームは非常に有用だ。スプレッドシートに回答を転写してくれるので、入力された値を集計したり、入力値をもとに何かスクリプトを走らせることもできる。スプレッドシートのGASには、わざわざフォームから送信されたとき用のトリガが用意されている。

フォームを利用者の入力インターフェースにして、スプレッドシートのデータを使って条件分岐したいときに、予め一部の回答が入力された状態のフォームに利用者を誘導したい。

実はけっこう簡単にできる。フォームの回答画面はURLの最後がviewformになっているので、この後ろに&で
解答欄のID=予め入力したい回答
をつけてやればよい。
解答欄のIDを確認する簡単な方法は、Chromeでフォームの回答画面を表示(プレビューでいい)して、解答欄のIDを確認したいテキストボックスなどを右クリックする。次いで検証を押すと画面右側にカラムが表示される。ハイライトされている部分からnameを探す。一般のテキストボックスだとname=”entry.数値”となっている。この “entry.数値” が解答欄のIDである。

(フォームのURL)/viewform&entry.1234=hoge
というアドレスにアクセスすると、解答欄のIDが entry.1234 である場所に予めhogeと書かれた状態で始まる。
複数の解答欄に予め回答を入れておくには&でつないでいけばいい。

参考
GOOGLEフォームの初期値

[GAS] GASでセルを結合した表をドキュメントに挿入する

Google Apps Scriptはスプレッドシートだけでなく、ドライブ、ドキュメントなどほかのG Suiteでも使える。スプレッドシートにまとめた情報をもとに、ドキュメントで報告書を自動生成することも可能だ。

これまで手作業で作成していた報告書をGASで作成するにあたって、2つ手の込んだことを求められた。ひとつには、セルを結合して少々複雑な形をした表をつくることだった。ふたつには、単なるテキストではなく、上付きや下付き、斜体といった書式設定を伴う形で表に文書を書き込むことだった。

ひとつ目の「セルを結合した表」は少々厄介であった。GASのリファレンスを読んでみても、セルの結合に相当するMethodがないのだ。試しにドキュメントでセルの結合をした表を作ってGASで読み込んでみると、セルを結合してできたセルは、TableCell.getColSpan()の値が1より大きい値になっていた。しかし、setColSpan()というMethodは存在しない。merge()も期待したような動作をしないドキュメントではなくHTMLファイルとして出力することはできそうだが、いまはドキュメントを書き換えたいので不適当だ。
結局のところ、あるドキュメントファイルにあらかじめセルを結合した表を用意しておいて、新しいドキュメントにコピーするという手法をとることにした。TableRowのレベルで挿入していけば、下の図のような2行を単位とした繰り返し構造の表がつくれる。

GASでセル結合した表を挿入する例

ふたつ目の書式を維持した文書を挿入するのは簡単である。上で挿入した表のセルに対して、転写したい文書のParagraphをappendしてやればよい。

次に示す例では、元になるドキュメントファイルの1行目 (getCHild(0) またはpp[0] )から5行目(getCHild(4)またはpp[4])に書式をいじった文書が入っている。これを段落ごとに読みだしている。また、7行目( getCHild(6))にはテンプレートにしたい表がある。
appendParagraphする文書をどこのドキュメントファイルに置いておくか、スプレッドシートにでもまとめておけば、表の繰り返し単位ごとに適切なドキュメントファイルを読みだして、表の各セルを埋めることができる。
appedTableやappendParagraphをする際には、copy()を付けてやる必要がある。また、 appendParagraphをする際には、 .merge()をつけないと、余分な改行がセル内に残る。

function tryTable(){
  var doc_from = DocumentApp.openById('元になるドキュメントファイルのID'),
  doc_to = DocumentApp.openById('書き込み先になるドキュメントファイルのID'),
  pp = doc_from.getBody().getParagraphs();

  var body = doc_to.getBody();
  //表をつくる
  var table0 = body.appendTable(doc_from.getBody().getChild(6).copy());
  table0.getRow(0).getCell(0).clear().appendParagraph(pp[0].copy()).merge();
  table0.getRow(0).getCell(1).clear().appendParagraph(pp[1].copy()).merge();
  table0.getRow(0).getCell(2).clear().appendParagraph(pp[2].copy()).merge();
  table0.getRow(0).getCell(3).clear().appendParagraph(pp[3].copy()).merge();
  table0.getRow(1).getCell(0).clear().appendParagraph(pp[4].copy()).merge();

  //表のテンプレートを下に伸ばす。例として10回繰り返し。
  for (var i = 0; i < 10; i++) {
    table0.appendTableRow(table0.getRow(0).copy());  
    table0.appendTableRow(table0.getRow(1).copy());
  }
}

参考
【Microsoft Office 英語】日本語/英語の対照表(Excel, Word)

2019年9月

9月の走行距離は813 kmでした。

電費は7.6 km/kWhで8月より0.1改善しました。

月額2,160円のZESP2に対して、ガソリン136 円/Lとして燃費51.1 km/Lと同等です。

急速充電 9回、普通充電は1回、急速充電1回あたりの走行距離は90 kmでした。

2019年8月

8月の走行距離は1,590 kmでした。

電費は7.5 km/kWhで7月より0.2悪化しました。普段は1人乗りですが、4人乗りで1,000 kmちかく走ったのが影響したかもしれません。

月額2,160円のZESP2に対して、ガソリン136 円/Lとして燃費100 km/Lと同等です。

急速充電 26回、普通充電は1回、急速充電1回あたりの走行距離は61 kmでした。

宮城県は牡鹿半島の先端から神奈川県まで夜中12時間かけて走ったときは、バッテリー温度が上がって急速充電の抑制がかかりました。やはり1年目に見積もったように効率的に大電流で急速充電できるのは1日2回が限度だと思いました。寝ている間に満充電にしておけるように、普通充電器を宿泊施設に普及させる取り組みが重要だと思います。

2019年7月

7月の走行距離は1,350 kmでした。

電費は7.7 km/kWhで6月と同じでした。

月額2,160円のZESP2に対して、ガソリン138 円/Lとして燃費86.5 km/Lと同等です。

急速充電 19回、普通充電は0回、急速充電1回あたりの走行距離は71 kmでした。

7月後半の猛暑と、長野の方の山道をひたすら走っていたことを考慮すると、まずまず数字だと思います。