google-api-client gem is deprecated

gem updateするとこんなメッセージが。


The google-api-client gem is deprecated and will likely not be updated further.

Instead, please install the gem corresponding to the specific service to use. For example, to use the Google Drive V3 client, install google-apis-drive_v3. For more information, see the FAQ in the OVERVIEW.md file or the YARD docs.


FAQによると、コードをそのままで単にサービス毎にgemを分割しただけということで、requireだけ修正すればそのままで動くらしい。

このgemだけ、アップデートにすごく時間がかかっていたので、分割は良いことかと。

「麒麟がくる」の配役

前回に引き続き、今年2020年の大河ドラマ麒麟がくる」、対象期間がほぼ同じと思われる「国盗り物語 と、現時点でわかる範囲で配役を比較してみた。 年齢差はやや少なくなるが、麒麟の方が7.4歳上だ。 国盗り物語では光秀は脇役なので、明智家の人々が若めというのはあるかも知れない。 芦田愛菜ちゃんが林寛子より2歳年上。

その他の美濃関係の人は概ね十歳以上年上。

信長夫妻は同じくらい。信秀はちょうど同年齢だが、千秋実高橋克典千秋実なのか!

役名 麒麟がくる 2020年齢 国盗り物語 1973年齢 年齢差
明智光秀 長谷川博己 43 近藤正臣 31 12
煕子 木村文乃 33 中野良子 23 10
明智光安 西村まさ彦 60 久米明 49 11
明智左馬助 間宮祥太朗 27 三ツ木清隆 20 7
たま 芦田愛菜 16 林寛子 14 2
織田信長 染谷将太 28 高橋英樹 29 -1
帰蝶 川口春奈 25 松坂慶子 21 4
織田信秀 高橋克典 56 千秋実 56 0
土田御前 檀れい 49 南風洋子 43 6
織田信勝 木村了 32 日吉としやす 25 7
平手政秀 上杉祥三 65 田崎潤 60 5
前田利家 入江甚儀 27 目黒祐樹 26 1
木下藤吉郎 佐々木蔵之介 52 火野正平 24 28
柴田勝家 安藤政信 45 宍戸錠 40 5
佐久間信盛 金子ノブアキ 39 安藤三男 45 -6
毛利新介 今井翼 39 村松克巳 34 5
服部小平太 池田努 42 津嘉山正種 29 13
足利義輝 向井理 38 竹脇無我 29 9
足利義昭 滝藤賢一 44 伊丹十三 40 4
細川藤孝 眞島秀和 44 伊吹吾郎 27 17
今井宗久 陣内孝則 62 河村弘二 60 2
松永久秀 吉田鋼太郎 61 永井秀明 52 9
斎藤道三 本木雅弘 55 平幹二朗 40 15
斎藤義龍 伊藤英明 45 若林豪 34 11
小見の方 片岡京子 49 山本陽子 31 18
深芳野 南果歩 56 三田佳子 32 24
稲葉良通 村田雄浩 60 菅沼赫 44 16
土岐頼芸 尾美としのり 55 金田龍之介 45 10
今川義元 片岡愛之助 48 花柳喜章 49 -1
徳川家康 風間俊介 37 寺尾聰 26 11
朝倉義景 ユースケ・サンタマリア 49 浜畑賢吉 31 18
浅井長政 金井浩人 28 杉良太郎 29 -1
井本彩花 17 松原智恵子 28 -11
武田信玄 石橋凌 64 大友柳太朗 61 3
斎藤利三 須賀貴匡 43 亀石征一郎 35 8
細川忠興 望月歩 20 石田信之 23 -3
43.1 35.7 7.4

「鎌倉殿の13人」の配役

2022年の大河ドラマ「鎌倉殿の13人」、対象期間がほぼ同じと思われる「草燃える」と、現時点で発表されている範囲で配役を比較してみた。

名前だけ見ると、「草燃える」の配役の方が重厚感があるが、それは40以上経っているから。放送年時点の年齢で比較してみると、大姫と畠山重忠以外はすべて「鎌倉殿~」の方がずっと年上。 平均年齢でも約11歳違う。

そういった意味では、「草燃える」は若者が活躍するドラマだったと言うことか。義時の松平健はほとんど無名だったはず。今回は清盛で。

役名 鎌倉殿の13人 2022年齢 草燃える 1979年齢 年齢差
北条義時 小栗旬 40 松平健 26 14
北条時政 坂東彌十郎 66 金田龍之介 51 15
牧の方 宮沢りえ 49 大谷直子 29 20
北条宗時 片岡愛之助 50 中山仁 37 13
北条政子 小池栄子 42 岩下志麻 38 4
阿波局 宮澤エマ 34 真野響子 27 7
源頼朝 大泉洋 49 石坂浩二 38 11
源頼家 金子大地 26 郷ひろみ 24 2
大姫 南沙良 20 池上季実子 20 0
源義経 菅田将暉 29 国広富之 26 3
源範頼 迫田孝也 45 山本寛 ??
阿野全成 新納慎也 47 伊藤孝雄 42 5
源行家 杉本哲太 57 戸浦六宏 49 8
比企能員 佐藤二朗 53 佐藤慶 51 2
梶原景時 中村獅童 50 江原真二郎 43 7
安達盛長 野添義弘 64 武田鉄矢 30 34
和田義盛 横田栄司 51 伊吹吾郎 33 18
三浦義村 山本耕史 46 藤岡弘 33 13
畠山重忠 中川大志 24 森次晃嗣 36 -12
土肥実平 阿南健治 60 田豊 45 15
伊東祐親 辻萬長 78 久米明 55 23
三善康信 小林隆 63 石濱朗 44 19
大江広元 栗原英雄 57 岸田森 40 17
平清盛 松平健 69 金子信雄 56 13
平宗盛 小泉孝太郎 44 西田健 34 10
平均 48.5 37.8 10.9

PATHを1行ずつ表示する

環境変数PATHの内容を1項目1行で表示する。 その際に、C:\Program Filesで始まる物は表示しない。

単に改行するだけなら、文字列置換で簡単。改行に置換する際には、遅延環境変数にする事が必要。

C:\Program Filesの除外は、findstr /vで出来れば良いが、置換後の出力をパイプに繋ぐと1行目しか取り出せない。 しょうがないので、ループを回して、先頭から1項目ずつ取り除いていくことにした。 普通に置換すると、複数ある場合に全部置換してしまうので、先頭のみ置換するように先頭に文字を追加する。

@echo off
setlocal enabledelayedexpansion
if /i "%1" == "-a" goto ALL

set P=!PATH!
:LOOP
if "!P!"=="" exit /b
for /f "delims=;" %%A in ('echo !P!') do (
  echo %%A|findstr /i /c:"C:\PROGRAM FILES" >NUL
  if ERRORLEVEL 1 echo %%A
  set P=:!P!
  set P=!P::%%A;=!
  set P=!P::%%A=!
)
goto LOOP

:ALL
echo !PATH:;=^

!

Seleniumでダウンロード先ディレクトリを指定する

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument("--incognito")
options.add_preference "download.default_directory", "D:/Work/Down"
options.add_preference "download.prompt_for_download", false

driver = Selenium::WebDriver.for :chrome, options: options

では駄目で、ダウンロードがエラーになった。 ディレクトリはバックスラッシュで指定する必要がある。解釈をRubyじゃなくてChromeがするからだろう。

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument("--incognito")
options.add_preference "download.default_directory", 'D:\Work\Down'
options.add_preference "download.prompt_for_download", false

driver = Selenium::WebDriver.for :chrome, options: options

コマンドプロンプトの微妙な仕様

コマンドプロンプトで、aaa\..\foo.txtと入力すると、カレントディレクトリにaaaというディレクトリがあれば、その親のfoo.txtなので結局カレントディレクトリのfoo.txtが拡張子に関連付いたプログラムが起動してファイルを開くのは当然だ。

しかし、aaaが存在しなくてもエラーにならず、カレントディレクトリのfoo.txtが拡張子に関連付いたプログラムが起動する。

これは本来はエラーになるべきでは?

type aaa\..\foo.txt等も同様にエラーにならず、表示される。

追記

コマンドプロンプトだけじゃなくて、プログラムでファイルオープンする場合も同じ。"aaa\..\foo.txt"がオープンできる。

教訓

システム開発での教訓。

  • そのニーズが一般的であれば、すでに誰かが解決している
  • 一般的なやり方で解決できない問題は、問題設定自体が間違っている可能性が高い

ただし、世界の先端を走っている人は除く。