techrmc’s blog

ICT大好きな中小企業診断士のブログです

【書評】テクノ専制とコモンへの道(著者:李舜志、集英社)

以前からオードリー・タンのPluralityを読んでみたいなと思っていました。英文なら次のサイトで公開されていて無料で読めるのですが、残念ながら分量が多く、読むのに時間がかかりそうです。

https://github.com/pluralitybook/plurality

https://www.plurality.net

ということで、エッセンスだけ掴もうということで、本書を手に取りました。

Pluralityは、オードリー・タンとグレン・ワイルが提唱している概念で、日本語にすると多元性です。デジタル技術のようなテクノロジを駆使することで、デジタル民主主義の実現をめざしており、多様な考え方を持った人々がテクノロジの力によってお互いを信頼・尊重しながら協働し、豊かな社会を築いていきます。昨今の世界、特に欧米では、二つの対立するイデオロギーへの分断と対立が進み、非常にギクシャクした住みづらい世の中になってきています。二大政党制への移行が頓挫した日本では、幸い、多数の少数政党が乱立する状態でありまだ二元論には陥っていませんが、エコーチェンバー現象に陥りやすいSNSでは極論やフェークニュースが横行し、政治の世界でも耳障りの良い主張で有権者を集めるポピュリズム的な政治家も増えてきています。日本も怪しい雲行きです。

Pluralityは、単なる多数決ではなく、テクノロジを活用して多様な人々をつなぐことで、対立や分断を解消します。様々な考え方があるため、全員が100%満足することはできないかもしれませんが、できる限り多くの人がまあまあ満足できる解、日本的な落とし所を探します。0、1ではない中庸をめざすのは、日本のカルチャに合っているように感じました。

オードリー・タンのPluralityを読むのは大変だ、という方は、入門書として本書を読むのも良いかと思います。(オードリー・タンのPluralityは読んでいないので、本書との違いはわかりませんけど)

 

【書評】日本経済の死角(著者:河野龍太郎、筑摩書房)

欧米諸国はこの30年間に実質賃金が大きく上昇しているにも関わらず、日本では実質賃金が上昇していません。そして、日本企業の生産性が低いから賃金を上げられないという主張を耳にすることがあります。しかし著者によると、バブル崩壊後の30年間、実質賃金は3%ダウンしているものの、日本においても生産性は30%アップしているそうです。生産性が上がっているにも関わらず実質賃金が上がらないのはなぜか。著者は、生産性向上の果実が国内投資や賃金のベースアップに向かうことなく、利益剰余金として大企業が内部に溜め込んできたことを原因に挙げています。大企業も投資活動は行っているのですが、投資先が海外であるため、国内のイノベーションには繋がりません。個々の企業としては、グローバル化のために海外投資に重きを置くのは自然ですし、株主重視のコーポレートガバナンスが求められる中では非正規社員の活用によって賃金抑制に向かうのは合理的です。しかし日本経済全体としては経済成長に結びついておらず、著者は「合成の誤謬」と呼んでいます。

昨今は、雇用形態を従来のメンバシップ型からジョブ型に移行する企業が増えていますが、この点についても著者は警鐘を鳴らしています。ジョブ型は特定の職務への雇用であるため、メンバシップ型のようなジョブローテーションが起こりません。メンバシップ型では、長い間にさまざまな職場を渡り歩く中で複数の上司から多様な評価を受けますが、ジョブ型は特定の上司からの一面的な評価となります。そのためジョブ型では、特定の上司との相性次第の偏った評価になりがちで、被評価者の方も短期的な成果を追い求めがちです。日本での中長期的な企業成長のためには、著者が主張するように、純粋なジョブ型ではなく、長期雇用を前提とした若手の早期選抜制の方が適しているのかもしれません。

また著者は、イノベーションを、平均生産性をアップするだけのイノベーションと、限界生産性をアップするイノベーションに分類しています。前者のイノベーションは、平均生産性アップによって労働者の削減が可能になり、結果的に実質賃金ダウンに向かいます。一方、後者のイノベーションは、労働者が生み出す付加価値が向上して実質賃金がアップします。昨今は急速に企業へのAI導入が進んでいますが、AIはどちらのイノベーションになるのでしょうか?現時点ではどちらに向かうか判断できませんが、是非とも後者のイノベーションとなるよう、私たちも知恵を絞っていきたいものです。

【書評】全員が幸せになる「トラブルなし」で問題社員に1ヶ月で辞めてもらう方法(著者:西脇健人、翔泳社)

パワハラ、セクハラ、会社備品の横領、遅刻常習などの問題行動を起こす社員(問題社員)に対して、訴訟の可能性のある解雇ではなく円満退職に導く段取りを解説しています。著者は、問題社員の円満退職を支援するサービスを企業向けに提供している弁護士さんで、生々しい事例や、問題社員との交渉や手続きの進め方を具体的に説明しています。事例の中には、先代社長から仕えていた古株社員が二代目社長に反発する事例など、中小企業の事業承継のご相談でたまに遭遇する事例もあります。

中小企業は社員数が少ないため、大企業に比べると、少数の問題社員の存在が会社全体の事業運営に与える影響は大きなものがあります。上司や経営者との粘り強いコミュニケーションで問題行動が改善されれば良いのですが、中には相当な稼動を費やして指導しても改善に至らないケースがあり、やむなく問題社員に辞めてもらわざるを得ないこともあるでしょう。

本書には、そのような事態に陥った中小企業経営者に役立つ具体的な知恵が詰まっています。例えば、周囲の社員に問題社員の振る舞いを証明してもらう陳述書や、合意退職書面、解雇通知書、解雇理由証明書のサンプルが紹介されています。また、問題社員に退職勧奨を行う際の対応シナリオや経営者の心構えも示されています。普通の経営者は、退職勧奨の経験はあまりお持ちでないでしょうから、本書の具体的な記載は非常に参考になりそうです。

【書評】データ分析者のためのChatGPTデータ分析・可視化術(著者:白辺陽、翔泳社)

ChatGPTを用いたデータ処理と処理結果の可視化方法を解説しています。対応しているモデルは本書発行時点で最新のGPT-4oです。

生成AIの特性上、本書に記載された通りのプロンプトをChatGPT へ入力しても出力が本書と異なる、という事態が往々にして起きます。そのため読者は戸惑うかもしれませんが、試行錯誤で様々なプロンプトを試しているうちに自分なりのコツを掴むことができます。

本書では次のような可視化技術が解説されています。

  • 折れ線グラフ
  • 棒グラフ
  • 散布図
  • ペアプロット
  • ヒートマップ
  • ジョイントプロット
  • 箱ひげ図
  • ダンベルチャート
  • 帯グラフ
  • バブルチャート
  • コードダイアグラム
  • コロプレス図
  • PlantUML

見栄えの良い可視化事例が解説されているので、コンサルティングの一環で様々な調査結果を報告する際に、これらの手法を是非活用したいと思います。

ちなみに本書では、可視化だけでなくデータ処理もなるべくChatGPTで実施しようというスタンスです。しかし、実際に統計データを処理する際には、自分のExcelの力量の範囲内で、できるだけ関数を駆使してExcel上でデータ処理した方が、処理結果の精度が確保できると思われます。プロンプトが悪いと言われたらそれまでですが、ChatGPTがおかしなデータ処理をしてしまうケースに時々遭遇しました。ご存知の通り、生成AIにはハルシネーションという問題点があり、ChatGPTのデータ処理結果が正しいかどうかを確認する必要あります。

結論としては、データ処理はできるだけExcelで実施し、大量の手作業や可視化をChatGPTに任せるという役割分担がオススメです。

日本地図への地点プロット 〜外国人に人気の観光地10ヶ所〜

前記事では日本地図による都道府県別統計情報の可視化を紹介しました。

techrmc.hatenablog.com


今回は、外国人に人気の観光地10ヶ所を日本地図に地点をプロットします。Google地図でも同じことができますが、ChatGPTを使うと、非常に簡単に地図へのプロットが実現できました。

地点情報の入手

外国人に人気のある観光地10ヶ所をChatGPTにリストアップしてもらい、各観光地の中心部の緯度・経度情報もChatGPTに調べてもらいました。用途によっては、ChatGPTの出力した緯度・経度が本当に正しいか確認した方が良いですが、ここではそこまでの精度は求めないので、そのまま利用しました。

外国人に人気の観光地10ヶ所

OpenStreetMapを用いたプロット

上記で得られた地点情報を元に、ChatGPTに各地点をOpenStreetMapへプロットしてもらいました。出力はHTMLファイルとして出力するように指示し、そのHTMLファイルをブラウザで開いて白川郷をクリックした画面を下図に示します。画面の縮尺の都合で地点が重なっていますが、地図をズームアップすると、10ヶ所がきちんとプロットされていることが確認できました。各地点をクリックすると、その場所の名称や緯度・経度がポップアップ表示されます。

OpenStreetMapにプロットした観光地

このようにChatGPTを利用すると、Googleマップを利用した場合と比べて、日本地図への地点プロットが非常に簡単に実現できました。

日本地図への統計データの可視化 〜都道府県別の通勤・通学時間〜

地理的な分布状況を直感的に把握するため、統計データを地図上に表現したいことがあります。ここでは、都道府県別の平日の通勤・通学時間をChatGPTを用いて日本地図で表現してみました。

統計データの入手

都道府県別の通勤・通学時間のデータは、独立行政法人統計センターの教育用標準データセットから入手しました。このサイトでは、様々な公的統計データがダウンロードできるようになっており、「SSDSE-社会生活(SSDSE-D)」に都道府県別の平日の通勤・通学時間が掲載されています。ExcelCSVの2形式が用意されていますが、ここではExcel形式をダウンロードしました。

このファイルをExcelで開くと、項目名が1行目・2行目に記載されており、「通勤・通学」のデータと思われる列が複数存在します。ダウンロードサイトのpdfの解説によると、MG51が平日に通勤・通学をした人の平均時間(行動者平均)とあり、所望のデータとわかります。

GeoJSONデータの入手

コロプレス図のベースになる日本地図のデータを入手します。ここでは、地球地図日本のデータを用いたGeoJSONデータを利用させて頂きました。このデータの使用ライセンスは、非営利目的の場合は「出典元(地球地図日本)の明記」、営利目的の場合は「出典元(地球地図日本)の明記」と「著作権者(地球地図日本)への利用報告」、が条件となっています。

ChatGPTでのコロプレス図作成

統計データファイルとGeoJSONデータファイルをChatGPTにアップロードし、D3.jsを用いて都道府県別の通勤・通学時間のコロプレス図を作成しました。使用したモデルは、現時点で最新版のGPT-5です。出力は、単一のHTMLファイルとしてダウンロードできるように指定しました。

このように作成したコロプレス図は下記の通りです。このコロプレス図では、都道府県の上にポインティングデバイスを持ってくると、その都道府県の数値(平日の通勤・通学時間の平均値。単位は分)がポップアップ表示されます。下図では、神奈川県の「100分」がポップアップ表示されています。

平日の通勤・通学時間の平均値(単位:分)
地図データ出典元:地球地図日本

上図を見ると、首都圏や関西圏が色濃く表示されており、他の地域に比べて通勤・通学時間が長いことが直感的にわかります。

このようにChatGPTを使うことで、極めて少ない作業量で、統計データを見栄え良く地図上に表現することができました。ChatGPTは、調査データの可視化に便利なツールですね。

自作HEMS(Home Energy Management System) 〜運用編〜

下記の記事で紹介したHEMSの測定データをファイルに落とし込む手順を説明します。
techrmc.hatenablog.com

Raspberry Piはプロトライピング用ですから長期間運用には適しておらず、測定データを喪失するリスクがあります。
また、測定データをCSVファイル等に出力すれば、さまざまなデータ分析を行うことができるようにもなります。
そこで、mySQL内の測定データをCSVファイルへ出力する手順を紹介します。

テーブルのCSVファイル出力

データベースsensordbのテーブルpowerのデータをmySQL内で/tmp/power.csvへファイル出力するコマンドは次の通りです。なお、ファイル出力は出力先(ここでは/tmp)への書き込み権限が必要なので注意してください。

MariaDB [(none)]> use sensordb;
MariaDB [sensordb]> select * from power into outfile '/tmp/power.csv' fields terminated by ',' optionally enclosed by '"' escaped by '' lines terminated by '\n';

fields terminated byはフィールドの区切り文字の指定です。デフォルトはtabとなっているため、カンマに変更します。

optionally enclosed byはフィールドのデータを囲む文字の指定です。上記ではダブルクォーテーションで囲んでいます。

今回の測定データにはエスケーブが必要な文字がないので、escaped byは特に指定していません。

lines terminated byは行の区切り文字で、上記では、'\n'としています。

テーブルのデータ削除

格納データが大きくなりすぎるとmySQLRaspberry Piそのものの動作が不安定になる恐れがあります。
そこで、適当なタイミングでデータを削除してあげます。
テーブル内のデータを全て削除するには、mySQL内で次のコマンドを打ちます。
この時、自動的にインクリメント(auto_increment)されるrecordidはリセットされ、再び1から始まります。

MariaDB [sensordb]> truncate table power;

シェルスクリプト

これまでは、測定データのCSVファイル出力やテーブルのデータ削除といった運用操作をmySQL内で行いました。
ここでは、mySQLに入らずにこれらの操作をコマンドラインで行うシェルスクリプトを作成します。

作成するシェルスクリプトの仕様は次の通りです。

  • 出力ファイル名には、出力時の日時・時刻を表す文字列を埋め込みます。例えば、2025年5月4日14時34分にシェルスクリプトが起動された場合は、202505041434を埋め込みます。
  • CSVファイルを出力した後で、テーブルpowerのデータを削除します。ただし、後から過去データを元に戻したくなった時のために、データ削除する前に、テーブルのデータをダンプします。
#!/bin/bash
var=$(date +%Y%m%d%H%M)
csvfile='/tmp/'$var'power.csv'
dumpfile='/tmp/'$var'power.dump'
#
mysql -u root -p -D sensordb -e "select * from power into outfile '$csvfile' fields terminated by ',' optionally enclosed by '\"' escaped by '' lines terminated by '\\n';"
mysqldump --single-transaction -u root -p sensordb power > $dumpfile
mysql -u root -p -D sensordb -e "truncate table power;"

mysqlコマンドラインオプション-e "..."のダブルクォーテーションの中では、" や \ は \ によるエスケープが必要です。

このシェルスクリプトコマンドラインで実行すると、

  • 202505041434power.csv
  • 202505041434power.dump

の2つのファイルが/tmpに生成されます。
202505041434power.csvは、その時点でテーブルpowerに格納されていた測定データのCSVファイルです。
202505041434power.dumpは、その時点のテーブルpowerのダンプファイルで、シェルスクリプトで削除したテーブルpowerのデータを復旧したい時は、次のコマンドでリストアします。

mysql -u root -p < /tmp/202505041434power.dump