便利なキーボードショートカット

  • Win + P
    サブディスプレイ、プロジェクタの投影オプションを切り替え
    PCのみ・複製・拡張・セカンドスクリーンのみ
  • Win + Shift + S
    画面の一部を指定してキャプチャ
  • Win + 矢印
    左右:ウィンドウを左右の画面半分に割り付け
    上:最大化、下:最大化解除、最小化
  • Win + X
    シャットダウンや設定、PowerShellへのショートカットを表示
  • Win + R
    ファイル名を指定して実行
  • WIn + W
    Windows Ink Workspace 付箋はる、画面に書き込みなど
  • Win + L
    ロック画面を表示 (離席する際にはWin + L!)
  • Win + D
    ウィンドウをすべて隠してデスクトップを表示
  • Win + E
    ファイルエクスプローラを起動
  • Win + +  拡大鏡を起動 拡大
  • Win + - 拡大鏡 縮小
  • WIn + Esc 拡大鏡 終了
  • Ctrl + S ファイルの保存 上書き
  • Ctrl + X 切り取り
  • Ctrl + C コピー
  • Ctrl + V 貼り付け
  • Ctrl + Z 操作のやり直し
  • Ctrl + Y 操作の繰り返し
  • Ctrl + F 検索ダイアログの表示
  • Ctrl + Shift + Esc タスクマネージャー起動(プロセスタブから強制終了)
  • Alt + F4 ウィンドウを閉じる。ウィンドウが開いていないときはシャットダウンメニューの表示。
  • Alt + Tab 開いているウィンドウを順繰りに表示する

新型リーフ (2017) のバッテリー劣化 – 新車48か月点検(車検)を終えて

新型リーフ (2017) のバッテリー劣化 – 新車36か月点検(車検)を終えての続編です。

2017年10月の納車から4回目の12か月点検、初めての車検を終えましたので、バッテリー劣化の現状を報告します。

LeafSpyで取得したSOHの経時データ。2017年10月納車、走行距離は1,000-2,000 km/月、気候は関東平野部。

1年前にバッテリーの劣化が遅くなったことに気づきました。納車から24か月あたりまでは経過時間に対してSOHが直線的に低下しました。このあとは、非常に緩やかな速さで劣化が進行しているようです。この調子だと60か月(5年)でもセグメント低下ラインまで到達しないどころか、80か月(7年)くらいまでは大丈夫そうな気配です。

バッテリーが劣化して航続距離が短くなったと体感できるレベルでもなければ、内部抵抗が上がって急速充電時の温度上昇が急激になるという感じもなく、単に数値上は徐々に劣化しているんだなとわかる程度です。初代リーフのバッテリー劣化を思えば、驚異的な技術の進歩を感じます。このリーフに搭載されているバッテリーは4年も前に量産化されたものですから、現在はより良くなっているのだろうと予想でき、EVの今後に期待が持てます。

[Microsoft365] PublisherでQRコード画像を含んだ差し込み文書を作成する

Microsoft Officeの中でも影が薄いPublisherは、紙に印刷する用途でPowerPointのように自由なレイアウトを作るのに適してます。無理やりPowerPointやExcelで掲示物を作ると印刷するときに意図しないズレが生じたり、紙の大きさに合っていなかったり、決まった寸法で大量に掲示物を作ろうとしたときにうまくいかないといった不便さがあります。Microsoft 365 (旧Office 365)を導入していればほぼ使えるだろうPublisherを使って、このようなケースに対応してみましょう。

このページでは、レイアウトを揃えて、内容が異なる印刷物を作る例を紹介します。QRコードのような画像も入れ替えながら印刷できます。

Publisherの基本的な使い方

Publisherは印刷に適したソフトである一方でWordやExcel、PowerPointのように詳細な解説本がないというデメリットがあります。とはいっても、WordやPowerPointを使ったことがあれば直感的に操作できるようなソフトなので、ヘルプを読みながら、いろいろと自分で試してみるといいでしょう。ここでは、基本的な使い方を紹介します。

テンプレートから用紙サイズを選んでみましょう。Publisherを起動した画面で、新規>その他の白紙のページサイズを選びます。

次に、「宛名ラベル」から「30枚/ページ」を選んでみましょう。このとき、幅6.668 cm高さ2.54 cmの用紙サイズが設定されます。もちろん、目的にあったほかの用紙サイズを設定していただいて結構です。

用紙サイズを選択すると、いよいよ編集の開始です。指定した用紙サイズの白紙が表示されます。よく見ると、縦軸と横軸にcmの寸法が表示されていることに気づくでしょう。このように、PC上で作成したレイアウトが印刷したときにどのような大きさになるかを確認しながらレイアウト作成をできるのがPublisherの強みです。

Publisherで白紙が表示されたところ

このあとの操作はWordとPowerPointを合わせたようなものです。画面上部のメニューで「挿入」を選ぶと、PowerPointと同じように「テキストボックス」や「図形」といった選択肢があります。ほとんど同じように使えます。

Publisherの挿入メニュー

まずは共通する部分のレイアウトを作成してみましょう。PowerPointと同じと思って操作すれば大丈夫です。たとえば、下図のように共通部分を作ってみました。

Publihserの「差し込み印刷」機能を使おう

印刷レイアウトとは別に、予めExcelで差し込み印刷に使うデータを用意しておきます。データはExcelファイルで作成するのが便利です。1行目に何のデータを入れるのか書き、2行目以降に差し込み印刷に使いたいデータを入れていきます。このとき、実際にはあとで使用しないデータ列が入っていても問題ありません。

例として、次の図のようなExcelファイルを作りました。A列にはページタイトル、C列にはページのURLを書き込んでいます。D列には、C列のURLをQRコードにした画像のファイル名を書いています。同じ行に書き込まれたデータをセットとして、対応する項目を書き換えた印刷物が出力されるわけです。

差込データの身中身

画像ファイルは、上図のExcelファイルと同じフォルダに格納しておきます。フォルダの中は下図のようになります。

差込データと画像の入ったフォルダ

差し込みデータの準備ができたら、Publihserの方でデータを読み込みます。「差し込み文書」タブを開いて、「宛先の選択」をクリックします。すると下図のようなメニューが出てきますので、「既存のリストを使用」をクリックします。

「データファイルの選択」を求められますので、先ほど作成したExcelファイル (差し込みデータと画像.xlsx)を選択します。Excelファイルを選択すると、Excelファイルの中のどのシートを使うか問われます。ここではSheet1しかないので、これを使います。ここで「先頭行をタイトル行として使用する」にチェックが入っていると、データを選ぶ際に便利です。

差し込みデータの読み込み画面その11

PublisherがExcelファイルを読み込んで、読み込んだデータセットの対応が正しいかを確認する画面が出ます。ここで「アドレス帳」という言葉が使われるのは、もともと差し込み印刷の機能が手紙の宛名を印刷するのによく使われていたことの名残です。まったく意味はないので気になさらずに。

差し込みデータの読み込み画面その2

データの読み込みが終わると、レイアウトに差し込みデータを挿入できるようになります。「差し込みフィールドの挿入」を押すと、差込データのタイトル行に書かれた文言が表示されます。ここで「ページタイトル」を選択すれば、印刷時に「ページタイトル」の中身が表示される場所(フィールド)をレイアウトに挿入できます。

差し込みフィールドの挿入

画像を挿入する場合は、「画像」から差し込みデータで画像のファイル名をタイトル行に書いた「QRコード画像」を選択します。

差込画像の挿入

実際に差込フィールドを入れたの次の図です。「<<ページタイトル>>」と書かれた部分に、差込データの「ページタイトル」列のデータが入ります。差し込み文書は、通常のテキストボックスと同じように、それぞれ文字の大きさやフォントなどを設定することができます。画像の差し込みでは、画像アイコンが表示されていることを確認してください。画像アイコンになっていない場合、文字として挿入されている可能性があります。

sささsさし差込データ差込データ差し込みフィールドを含んだレイアウト

これで準備完了です。「完了と差し込み」をクリックして、「プリンターに差し込み」を選択してください。

完了と差し込み

印刷画面が表示されます。「用紙1枚に複数ページ」の設定で印刷プレビューをした場合には、次のように表示されます。差込データに対応して、文書と画像が書き換わっていることがわかるでしょう。この画面から印刷するなり、PDFに保存するなりすれば、レイアウトの揃った状態で内容を変えた印刷物を出力することができます。

差し込み印刷のプレビュー

QRコードの画像を用意する

QRコードの作成はフリーソフトなりWEBサービスなりで前もってやっておきます。あまり凝ったレイアウトを必要としない場合はWordの差し込み印刷機能にあるバーコード機能を使う手もあります。Wordのバーコード機能を使えばQRコードの画像を別に用意しなくていいので楽です。WordではQRコードの大きさ指定やレイアウトが若干使いづらい点は注意が必要です。フリーソフトではQRコードジェネレータ – QRコード一括作成ソフトが使えそう。ExcelシートからQRコードを大量生成するではExcelファイルをアップロードするとQRコードを作ってくれます。Pythonを使える方は、このページのコードをローカルで実行するのが便利でしょう。

2020年1月-2020年12月

2020年各月の走行データをまとめました。

7月から車通勤になり走行距離が大幅に伸びました。アパート暮らしなので週末、水曜日、金曜日の週3回は急速充電をしています。また、週末に遠出をする場合は追加的な充電を行っています。

車通勤なので雪が降ったら車に乗らないというわけにはいきません。そのため冬季はスタッドレスタイヤを使用するようになりました。

走行距離 km電費 km/kWh充電費用 JPYガソリン燃費換算 km/L急速充電回数普通充電回数急速充電1回あたり走行距離 km
12927.2220019.34073
26747.2220043.69175
310517.3220064.5100105
410397.5220057.914074
52988.1220016.04075
69327.6220052.310093
725987.6220014732181
820757.62598102174122
916508.3269578.8140118
1022557.92200130210107
1115227.9220086.6140109
1221447.82239123216102
2020年1月から12月の走行データ

2020年10月で納車から3年が経過し、はじめての車検がありました。納車時の点検不正問題は遠い昔のことのようです。電池劣化は顕著でなく、満充電で航続距離300 km程度です。急速充電メインで10%-80%の間を使っている分には体感的な不便はありません。

現場でデジタルトランスフォーメーションを進めるための資料

以前から効率化が叫ばれて久しいところコロナ禍の到来によって業務のデジタル化が待ったなしの状況です。しかし、どのような考え方で、どんな手法を使って、身の回りの環境を変えていけばいいのか、そこにはどんな困難が生じやすいのか、知識がないところから気合だけ振り絞っても空回りしてしまいます。本稿では、現場からデジタルトランスフォーメーションの機運を上げるために役に立ちそうな資料をまとめます。

書籍

書籍は情報が整理された宝箱です。出版されているだけで権威付けもされて、まじめに読んでみようという気にさせてくれます。

組織を動かす

使いやすい仕組みをつくる

  • UI/UXデザインの原則
    デジタル化はそれ自体が目的ではなく、コンピュータの力を借りて、簡単に、速く、確実に業務を遂行できるようにすることが目的です。ヒトとコンピュータが向き合うUser Interface、ヒトが感じるUser Experienceをいかに優れたものにするかを学べます。デザインの考え方は紙の資料でも役に立ちます。

WEB

WEBはリンクから手軽に情報にアクセスできるのが魅力です。無料のサイトなら、必要なのものは時間と前向きな時間だけ。他人に新しいアイデアを紹介するとき、入口として最適です。

まとまりの良いもの

単発記事

[GAS] WEBアプリはフォームの多重送信に注意。特にスマホを使う場合。

Google Apps Script (GAS) はWEBアプリケーションを簡単に作成できるため、改善活動レベルで業務アプリをサクサク構築できます。JavaScript (JS)とHTMLを多少勉強する必要がありますが、業務の自動化を推進する上で強力なツールです。

GASではGET、POSTに対応する処理を行って、対応するHTMLを返すことができます。これをWEBアプリケーションと呼びます。WEBアプリの活用方法として、自作のフォームを使って依頼や連絡、申請の手続きを自動化したいと考える場面もあるでしょう。ここで気を付けたいのが、多重送信の防止です。

WEBアプリを操作する場合、ブラウザの戻る・進むの動作によって、GASに届けたい情報(パラメータ)を送るページを意図せず複数回開いてしまう可能性があります。注文のような1回だけ送りたい情報が何度も送られるようでは混乱を招くので、情報の多重送信を防ぐ仕組みの導入が必要です。
スマホを使う場合は、より多重送信への注意が必要です。PCから操作する場合、余計なタブを閉じたりPCをシャットダウンする際にブラウザも終了されるため、ブラウザの戻る・進むくらいしか意図せずページを開く可能性はありません。ところが、スマホの場合はアプリを終了しない、スマホの電源も切らないで運用されることが多く、多重送信の問題が生じやすい状況です。たとえば、ブラウザのアプリで複数のタブを開いた状態でスマホのホームボタンを押してもアプリが終了されるわけではありません。再度アプリを開いた時点でタブに残っていたページにブラウザがアクセスしようとして、前回アクセスしたときと同じリクエストを出してしまいます。

GETリクエストではURLにパラメータを含むので、同じURLにアクセスすれば同じパラメータが送信されます。別のURLに遷移させない限り、同じURLにアクセスするのを防がないと多重送信が生じます。

POSTリクエストでは、送信されるパラメータがURLに含まれないので、最後に表示されているのがPOSTリクエストへ応答してGASが生成したHTMLだということを忘れてしまうかもしれません。ブラウザ側はPOSTリクエストを覚えていて、再度その画面を開いたときにPOSTリクエストを再送してしまいます。PCでChromeなどブラウザを使っていると戻る・進むによってPOSTリクエストを送る場合に警告が出る場合がありますが、前述したスマホのタブでは警告もなくPOSTリクエストが再送されてしまいます。

多重送信の対策方法は、さいきょうの二重サブミット対策など様々な場所でまとめられています。
まず検討したいのが、GASが受け取るリクエストが過去のリクエストと同一でないか確認できる機構(トークンチェック)を組み込むことです。簡単には、フォームを含むページにアクセスしたときにトークンを発行し、formのhiddenにした要素を使ってほかの回答と一緒にトークンが送信されるようにします。送信されたトークンを過去のトークン(どこかに貯めておく)と比較して、過去に同じトークンを持った回答が送信されていない場合に次の処理に進むようにすれば、多重送信を弾けます。
トークンチェックで多重送信を検知したときに、安易にエラーページを表示するのはかえって危険です。ユーザーが送信に失敗したと思って、最初からフォームの送信作業をやり直すかもしれません。これは正規な手続きなので内容が同じであっても多重送信ではないためシステム側で検出することはできません。トークンチェックで多重送信を検出した場合は、あたかも送信に成功したかのように見せておくとユーザーの勘違いを防げます。

このほかに、フォームの送信ボタンを画面が更新される何度も押すという形の多重送信もあります。この場合はJavaScriptでフォームのボタンを無効にすることで、ボタンを複数回押せなくする方法で対策できます。formタグにonSubmitで回答送信ボタンがdisableになるJavaScriptを仕込むことで実現できます。

新型リーフ (2017) のバッテリー劣化 – 新車36か月点検(車検)を終えて

新型リーフ (2017) のバッテリー劣化 – 新車24か月点検を終えての続編です。

2017年10月の納車から3回目の12か月点検、初めての車検を終えましたので、バッテリー劣化の現状を報告します。

LeafSpyで取得したSOHの経時データ。2017年10月納車、走行距離は1,000km/月、気候は関東平野部。

これまでとは劣化の挙動が異なります。納車から24か月までは、経過時間に対して直線的にSOHが低下していました。ところが、SOHが90%を切ったあたり、納車から24か月経ったあたりから直線的な低下トレンドから上振れて、ほとんどSOHが変化しなくなりました。ZE1の発表時に日産が10年10万kmで10%以内といっていたのを思い出すと、SOHが90%あたりで変化しなくなるような試験結果があるのかもしれません。非常に興味深いデータです。

電池の劣化に対応して、満充電時の航続距離は1割程度減少しましたが、ほとんど満充電をせずに10%~80%充電で運用しているので、あまり変化は感じられていません。良いことですが。

日産は新車3年の車検のときにカーナビの地図を無料で更新できるので、今回の車検で実施しました。地図が新しくなるだけでなく、カーナビのソフトウェア更新が行われたAndroid Autoに対応しました。私はAndroidユーザーなのでありがたい更新でした。

[GAS]WEBアプリケーションの見た目を整える

GASでWEBアプリケーションを作れるようになると、さまざまなシーンで電子化・自動化を進められます。よりたくさんの人に使いやすいと感じてもらうためには、多少の工夫が必要です。HTMLの知識があれば、見た目のよい、ぱっと見てわかりやすいWEBアプリケーションを作成することができるでしょう。

WEBページの見た目を改善するのには、HTMLと組み合わせて使われるCSSの作例を調べるのが簡単です。以下にすぐ使えるページを紹介します。

[GAS] Googleドキュメントの途中にパラグラフを挿入する

基準点となる文字列を含んだパラグラフの次に新しいパラグラフを挿入する方法を考えます。新しいパラグラフの中身はダイアログボックスで入力した文字列とします。

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();
  
  var paragraphs = body.getParagraphs();
  
  for (var i = 0; i < paragraphs.length; i++) {
    var paragraph = paragraphs[i];
    var index = i;
    var text = paragraph.getText();
    if(text === 'key paragraph'){
      Logger.log('index %s text %s', index, text);
      var child = paragraph;
    }
  }
  
  var childIndex = body.getChildIndex(child);
  Logger.log('childIndex %s', childIndex);
  
  //input text to insert
  var ui = DocumentApp.getUi();
  var response = ui.prompt( '挿入する文字列を記入する。', ui.ButtonSet.OK_CANCEL);
  
  // Process the user's response.
  var button = response.getSelectedButton();
  var textToInsert = response.getResponseText();
  //キャンセルならスクリプト終了
  if (button !== ui.Button.OK) {
    return;
  }
  
  //insertParagraph
  body.insertParagraph(childIndex + 1, textToInsert);
}

//メニューを追加
function onOpen(e) {
  DocumentApp.getUi()
      .createMenu('GAS')
      .addItem('insert paragraph', 'myFunction')
      .addToUi();
}


まず、DocumentAppでBodyとその下のparagraphsを取ってきます。各paragraphの中の文字列はgetText()で取れるので、基準点となる文字列が含まれるparagraphを探します。上の例では、paragraphの文字列が「key paragraph」であるという条件で該当するparagraphを指定しました。

基準点となるparagraphオブジェクトが見つかったら、body.getChildIndex(paragraph)のように引数として渡してやると、bodyに対するchildIndexが返ってきます。

基準となるparagraphの childIndexが求まったら、そのparagraphの前に挿入する場合は childIndex を、そのparagraphの後ろに挿入する場合はchildIndex+1を、insertParagraphの引数に渡します。

挿入する文字列を入力するのに使ったダイアログボックスですが、V8エンジンではBrowser.inputbox()が動かないのか、UI.prompt()を使うと動きました。UI.prompt()は返ってきたresponseにさらにgetResponseText()しないとテキストが取れません。

ドキュメントのメニューからスクリプトを動作せさせる工程はGoogle Apps Scriptを使った独自メニューの作り方を参照しました。

テンプレートを別ファイルで用意する場合はGoogle Apps Scriptで議事録テンプレ作成を楽にしたが参考になります。