自習用」カテゴリーアーカイブ

[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フォームのプルダウンにスプレッドシートの内容を反映させる

[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)

[GAS] GASで送信したメールのリンクを踏むと受領確認できる仕組み

Google Apps Script (GAS)を使って、文書ファイルを指定のメールアドレスに送信する。文書ファイルの内容を確認した旨を自動で取得するため、送信されるメールにはGASへのリンクを張っておき、ワンクリックで受領確認の記録が残るようにする。このとき、文書ファイルのファイルID、受信者のアドレス、受領確認日時が記録されるようにする。

STEP1 承認用のリンクを踏んだ時に動くdoGET関数を定義

承認用のリンクをつくるには、まずdoGET関数を含むプロジェクトを定義し、ウェブアプリケーションとして導入する必要がある。ウェブアプリケーションとして導入するには、doGET関数を定義したのちに、スクリプトエディタのメニュー「公開」から「 ウェブアプリケーションとして導入 」を選択する。作業が完了すると、ウェブアプリケーションにアクセスするためのURLが発行される。

下にスクリプトの例を示す。
URLの最後尾にパラメータとして、スプレッドシートの何行目に承認済みの記録を記入するか (8行目 row)と承認者名 (9行目 SV)を入れるようにする。
12行目はスプレッドシートへの書き込みの例である。8行目で求めたrow行のA列からC列に対して、”recipt”という文字列, rowの中身, supervisor中身を記入する。冒頭で述べた、文書ファイルのファイルID、受信者のアドレス、受領確認日時あたりはここを書き換えればいい。
16,17行目で送信するメール本文を作成する。16行目はプレーンテキストの場合、17行目はHTMLテキストの場合である。受信者の環境によって、いずれかが表示される。
19行目でメールを送信する。送信者は、このスクリプトを実行するアカウントである。宛先はrecipient、メールタイトルはsubject、本文は前述のとおりである。
21行目以降は、ウェブアプリケーションとして導入したURLにアクセスした人に表示される画面を示している。
※「ウェブアプリケーションとして導入」したあとにdoGETの中身を変更した場合は、再度 「ウェブアプリケーションとして導入」 を行う。このときProject VersionをNewにしてから「更新」すること。

//ウェブアプリケーションとして導入する
function doGet(e) {
  var recipient = "受信者のメールアドレス",
      SS_id = "情報を記録するスプレッドシートのファイルID",
      SheetName = "情報を記録するスプレッドシートのシート名",
      Sheet = SpreadsheetApp.openById(SS_id).getSheetByName(SheetName),
      data = Sheet.getDataRange().getValues(),
      row = e.parameter.row,
      supervisor = e.parameter.SV;

  //ファイルに書き込み
  Sheet.getRange(row,1,1,3).setValues([["recipt",row, supervisor]]);

  var subject = '回覧通知';
  
  var plaintxt = "上長の承認が得られたので、報告書を回覧します。";
  var html = '<h1>報告書の回覧通知</h1>'+ '<p>上長の承認が得られたので、報告書を回覧します。</p>';
    
  GmailApp.sendEmail(recipient, subject, plaintxt, { htmlBody: html });

  var display = '<p>報告書の承認を受けつけました。N氏に回覧します。ご協力ありがとうございました。</p>';
  return HtmlService.createHtmlOutput(display);
}

STEP2 承認リンクのURLにパラメータを付加してメールで送信する

STEP1で作成したウェブアプリケーションのURLに、スプレッドシートの情報を読みだしてパラメータを付加させる。

下にスクリプトの例を示す。
7行目のsupervisorを承認依頼メールの受信者にする。data[0][2]すなわちシートのC1セルに入っている値を読みだしている。8,9行目も同様にスプレッドシートのB1セル、A1セルの値を読み込んでいる。
11,12行目で、ウェブアプリケーションにアクセスするURLに、パラメータとしてrowとSVを付加している。パラメータSVならdoGET関数でe.parameter.SVとして受け渡される。複数のパラメータは&で結ぶ。※下のスクリプトでは&amp;となっているが、amp;は除く。
14,15行目はメールに本文を生成している。
17行目は添付したいファイルを呼び出している。ファイルはあらかじめGoogle Driveに入れておく。ファイルIDの調べ方
あとはメールでsupervisorに送る。

//承認依頼のメールを送信する
function myFunction() {
  var SS_id = "情報が記録されているスプレッドシートのファイルID",
      SheetName = "情報が記録されているスプレッドシートのシート名",
      Sheet = SpreadsheetApp.openById(SS_id).getSheetByName(SheetName),
      data = Sheet.getDataRange().getValues(),
      supervisor = data[0][2],
      subject = data[0][1],
      row = data[0][0];
      
  var url = "ウェブアプリケーションのURL(execで終わる)";
      url += '?row=' + row + '&amp;SV=' + supervisor;

  var txt = '承認リンク ' + url;
  var html = '<h1>次のリンクを開いてください</h1>' + '<a href="' + url + '">承認</a>';
 
  var file = DriveApp.getFileById("Google Drive上のファイルのID")
    
    //承認依頼メールを送信する
    GmailApp.sendEmail(supervisor, subject, txt, { htmlBody: html, attachments: file});
}

参考
「Google Apps Script」で社内システムをつくってみた~GASとの出会い編~
GASのワークフローでURLのパラメータで承認・否認を切り替える方法

企業の研究開発における技術伝承のありかた

想定読者 製造業の研究開発に携わる研究者

日本の製造業がかつて世界を席巻したというのは本当の話だろうか。そうだとしたら、日本の製造業の研究開発のレベルはかつてより低下してしまったのではないか。

民間企業の研究所は競合に打ち勝ち利益を上げられるような優れた新商品、新技術を生み出すための専門家集団だ。専門分野ごとに様々な研究者がいて、広範な領域の高度な技術を統合してひとつの素晴らしい商品を生み出す。研究者たちには日々の実験作業を支える助手がいて、研究者は技術の高度化と課題解決に集中する。助手たちは実験作業の手技レベルを向上させることで職人技ともいうべき繊細な実験を行い、新発見の端緒をひらく。そんな研究所を維持できている企業が、いまどれだけあるだろうか。

平成の30年間に人が減った。助手たちは事務系の一般職と同じように派遣労働者に転換された。わずか数年で職場を去る派遣労働者に技術を教えて、信頼できるまでに育ったころにはさようなら。これで職場から職人技が消えた。いわずもがな研究者も減らされた。論文ほど詳細に手順が記されているわけではない社内報告書を読んだところで失われた技術を復元できるわけではない。人がいないのだから、かつては助手がやっくれていた作業も研究者がやるようになった。グローバルな競争のおかげで商品開発の現場に対する要求が弱くなることはないというのに、研究者が商品開発に集中できる環境は減らされている。

日本の人口が減り続けるのだから、かつてのように人的資源が豊富に手に入ることは今後ない。そうであるならば、効率的に技術が伝承され、知見が共有されるシステムを構築して、現役の研究者たちが浪費している時間と費用を削減するほかない。働き方改革をお題目では済まされない。


これまでの技術伝承や知見の共有が効率的でなかったのは、形式知化されていなかった点が大きい。何かあれば詳しい研究者本人に聞きに行けばいい。報告書は成果を上層部にアピールすために書く。詳細な部分は書いてもアピールにならない。自分の暗黙知を文章に起こす時間があれば、その時間を次の商品開発に使った方が効率的だ。人ひとりが持てる知識や技術の量が有限だったとしても、人がたくさんいれば解決する。このような状況で人減らしを行えば、職場を去った人の数だけ技術が失われるのも当然だ。

先人たちの考え方にも一理あるが、暗黙知を形式知に転換するのに要する労力が馬鹿にならない。伝える相手のレベルがわからなければ、どこまで書きおこせばいいいのかわからない。大学で使うような教科書をつくれというのだろか。そんなことはできない。
ここで私が提案したいのは、かつて自分がいまの職場に来たときを思い出し、新人の自分に対して教えるように書くことだ。そこで暗黙の了解とできることであれば、他者が新人の立場でも同じような事柄をすでに身につけているとみなせるだろう。さらに、自分の次の新人が共有できない前提があったとしも自分はそれを説明できるはずだ。そうやって新しい人が来るたびに情報を追加していけば、たいていの人に伝わる内容になるだろう。

書く内容のレベルが決まったとしても、書くべき内容は膨大にあるように思われる。ここで気持ちを萎えさせずに思い出してほしい。自分ですべて書く必要はないことを。他者の文章を剽窃しろというわけではなく、他者の文章を読んで済むなら引用するなり参照するなりすればいい。学部生が勉強するような内容は教科書を読めばいい。ただ、どの教科書を読めばいいのか、何という名前の概念を理解すればいいのかは書いておこう。学ぶ必要はあるが、迷う必要はない。

忙しい中でまとめた資料が使われずに忘れらていくとしたら、そもそもそんな資料を作るべきでなはない。普段の業務を効率化するチートシートや、自習用の資料のような立ち位置で同僚に利用してもらえるような内容を盛り込んでいこう。

最も重要な点は、利用者に資料を改善させられるようにしておくことだ。利用者が不足していると感じた情報をすぐに追加できるようにしておく。内容に誤りがあれば修正できるようにしておく。ここまでくれば、もはや個人のみならずチーム全体の知恵袋として価値を発揮しはじめる。

これが私の考える「暗黙知を形式知へ転換する」ということ。Wikipediaの社内版というイメージがわかりやすいだろう。

windowsでpythonを使いたい

Pythonのインストール

ライブラリのインストール pandasとか

開発環境の整備atomのインストールと パッケージの導入

グラフなど画像や計算結果を表示しんがら実行したいときはjupyterが便利。.ipynb形式を読んだり。atomやVS Codeなどのエディタでもプライグインで対応可能。
Atom と Hydrogen で Jupyter が Atom で動くよ!(インストール、準備、使い方まで)

2次元相関分光の例2Dshige

Google Apps Script を使ったかんたんリマインダーの作成

ユーザーのリテラシーが高くない環境でG Suiteを使いこなすことを考えている。Gmailにはアドオンで予約送信機能を付けることができるが、アドオンの利用も難しいレベルを想定している。

Google スプレッドシートはExcelとほぼ同じように使えるので、あまりPCの扱いが得意でない方でも直感的に利用できる。そこで、スプレッドシートにGoogle Apps Script (GAS) で手を加えることで、だれでも簡単に指定したタイミングでメールを送ることができる仕組みを作成した。

まず、インターフェイスであるスプレッドシートのファイルを作成した。以下の図に示すように、ABC列を送信条件、DEF列を送信するメールの中身とした。入力のやり方が直感的にわからない方のために、3行目に入力例を用意した。
宛先にはカンマで区切ることで複数アドレスを入れられることや、メール本文のセルでセル内改行をするとメール本文でも改行されることなどを明記した。

Google スプレッドシートの画面作例

メール送信タイミングの条件は、データの入力規則で予め入力できる値を制限しておくとよい。作成者が意図しない入力を防げるし、表計算ソフトになれていないとキーワードで値を入力させるよりマウスで選択肢から入力する方が安心する場合がある。
また、余計な空白があると、使用者が意図しない入力をしたり、混乱したりする懸念があるので、G列から右は削除した。

ツール>スクリプトエディタから以下のコードを貼り付ければ、一応動作するものがつくれるはず。時間主導型トリガーで「1時間ごと」に実行するような条件に設定しておけば、条件と合う時刻にGASが作動し、メールを送ってくれる。

function reminder() {
  //スプレッドシートのデータを取得
  var sheet = SpreadsheetApp.getActive().getSheetByName('reminder');
  //dataにはシートreminderのデータが2次元配列で格納される
  var data = sheet.getDataRange().getValues();
  //データ入っている最終列を取得
  var lastrow = sheet.getLastRow();
  
  //トリガー起動時の日付、曜日、時刻を取得
  //現在の年月日時刻を求める
  var date = new Date();
  //日付のみ分取
  var date_now = date.getDate();
  //曜日のみ分取 値は0~6 (日曜日~土曜日)
  var day_now = date.getDay();
  //時のみ分取
  var time_now = date.getHours();
  
  //曜日を数値から文字に変換
  var dayNames = ['日','月','火','水','木','金','土'];
  var day_now_name = dayNames[day_now];
  
  //スプレッドシートの上から最後の行まで繰り返し
  //配列のインデックスは0から始まることに注意。スプレッドシートの3行目を入力例にしてので、4行目 i = 3 からスタート。
  for (var i = 3; i<lastrow; i++){
  
  //送信条件を格納
  //日付
  var date_to_send = data[i][0];
  //曜日
  var day_to_send = data[i][1];
  //時間帯
  var time_to_send = data[i][2];
  
  //送信条件判定
  //日付判定 日付条件指定なしの場合は毎日実行するようにした
  if (date_now == date_to_send){
    var flag_date = true;
  }else if (date_now =='指定なし') {
    var flag_date = true;
  }else{
    var flag_date = false;
  }

  //曜日判定
  if (day_now == day_to_send){
    var flag_day = true;
  }else{
    var flag_day = false;
  }
  
  //時間帯判定
  if (time_now == time_to_send){
    var flag_time = true;
  }else{
    var flag_time = false;
  }
  
  //メール送信条件判定 すべてのflagがtrueならメールを送信する
  if (flag_date && flag_day && flag_time){
  //送信内容取得
  var sendto = data[i][3];
  var title = data[i][4];
  var message = data[i][5];
  
  //メール送信
  MailApp.sendEmail(
    sendto,  //メール宛先
    title,   //メール件名
    message, //メール本文
    {
      name: 'かんたんリマインダー'   //差出人の名前
    }
  );
  }
  
  //繰り返し単位終わり
  }
}

関連項目 GoogleフォームとGASでつくる同報メール送信システム

電池性能の指標 面抵抗

騒がれている割に市場に出てこない全固体電池。ブレイクスルーっぽさを感じるニュースが定期的に出てくるけれど、その発見にはどのような価値があるのか。

最近、次のようなニュースが流れてきた。いわく、電極と固体電解質の界面で大きな抵抗が生じるのが問題だったが、界面抵抗を低減する方法を見つけたという。

東京工業大学物質理工学院の一杉太郎教授、日本工業大学の白木將教授および、産業技術総合研究所(産総研)物質計測標準研究部門の白澤徹郎主任研究員らによる研究グループは2018年11月、界面抵抗が極めて小さい高性能な全固体電池を実現するためには、界面における原子配列が、規則的であることがポイントになることを発見したと発表した。


全固体電池、界面の規則的原子配列が高性能の鍵
eetims 2018年11月27日

ここで見慣れない単位を見かけた。界面抵抗Ωcm2である。調べてみつと、界面での電位降下[V]を電流密度 [A/cm2]で割った単位だった。中学校の理科で勉強する電気抵抗Ωは、回路の大きさを考えていない。実際には、回路の電線が太くすれば電気抵抗は小さくなる。これは単位面積あたりに流れる電流が小さくなるためと考えればよい。すると、材料として電気を通しやすいか否かは電流が流れる面積を揃えてあげないと、公平な比較ができない。このため、単位面積で比較する界面抵抗という単位が用いられる。

界面抵抗を使った簡単な計算をしてみよう。たとえば、以下のような問題を考えてみる。

急速充電時の発熱を見積もるには、電極面積の値が必要である。接触抵抗率[Ω cm2] = 電圧 [V] / 電流密度 [A/cm2]をもとに、日産リーフの電池をモデルに考えてみよう。まず電池パックが2並列であることから、CHAdeMO規格50 kWの充電電流120 [A]は2並列に分かれるのでひとつのセル、電極には60 [A]が流れる。
電極面積はシート形状(261 mm×216 mm)からおよそ500 [cm2]と見積もれるので、電流密度は0.12 [A/cm2]と求まる。
接触抵抗率 5.5 [Ω cm2 = V / (A /cm2)] であれば、界面の電圧が0.66 [V]になるので、界面全体での消費電力は60 [A] * 0.66 [V] ~ 約40 [W]になる。ちなみに、40 [W]というと、オフィスの直管型蛍光灯1本の消費電力と同程度である。

ところで、60 [A]での充電というのは、どれほど電池にとって厳しいことをしているのだろうか。電池容量が1 [Ah]のものと1000 [Ah]のものがあったら、同じ60 [A]という電流値であっても電池にとってのキツさは異なる。そこで、所定の時間で完全に充放電できる電流値を比較の物差しにする。先ほどと同じく2018年現在のリーフの電池をモデルに考えてみよう。定格容量56.3 [Ah]なので、60 [A]なら約1時間で充放電される。1時間で完全に充放電される電流値が1Cといわれる値であり、電池容量に電流の大きさとしては普通の値である。この2倍、3倍、5倍、10倍というような電流値になると、電池にとって厳しいハイレート充電・放電という言われ方をする。

電池パック全体では300 [A]のような大電流で充電したとしても、並列回路で電流を分けたり、広い面積の電極をつかったりすれば、それほど高い電流密度になるわけではない。一方で、電池の大きさはできる限り小さくしたいという要望があるので、このバランスとして車載電池のスペックが決定される。