🐼変異種:晴読雨読:東京都の区市町村別累計確認感染者数をPDFからコピペしてスプシに貼り付ける過程を半自動化:ジャバスクリプトでファイル読み込み2021年06月04日 10:47

変異種:晴読雨読:東京都の区市町村別累計確認感染者数をPDFからコピペしてスプシに貼り付ける過程を半自動化:ジャバスクリプトでファイル読み込み
変異種:晴読雨読:東京都の区市町村別累計確認感染者数をPDFからコピペしてスプシに貼り付ける過程を半自動化:ジャバスクリプトでファイル読み込み


先週土曜日昼の会食の際、愚弟にアドバイスを求めたんだが、そんなもんはプロが手を出すもんじゃないから、ネットで調べてサンプルコードをコピペしろと、何とも連れない返事。

まあいい。

翌日から伊豆大島にゆるゆるのダイビングをしに行ったので、水曜日までは構想のみ。

昨日は、天気も良く、今月1日からから大井町のフィットネスも再開されているので行こうかどうしようか迷ったが、筋肉痛にかこつけてサボリ決定。

ついでに、久しぶりにプログラムを書こうと決めた。

ウインドウズの環境で、なるべくそのまま使いたいから、バッチファイルで作れると楽ちんでいいので調べたんだが、良く分らなかった(たぶん、バッチファイルが正解のような気がするんだがな)。

以前、ベーシックで減圧ソフトを書いたりして、変数の回しとかは経験済みなので、その線で当たったんだが、外部ファイルからデータ取り込んだりするのは参考になるものが少なく、環境も作らなくてはならないので、今回は見送り。

結構時間を掛けて調べたのは、Jスクリプトというマイクロソフト御用達のスクリプト言語。

ジャバスクリプトに似ているんだが、いろいろ調べても痒いところに手が届かない。

外部ファイルの取り込みとかはふつーにできるし、テキストの置き換えにも対応していて、今回はこれで行こうかと粘ったんだが、置き換えの細かいところが分からず涙を呑んで断念(たぶん、これも正解かも知れない)。

結論としては、減圧ソフトとかでも使ったジャバスクリプトが、ネット上の情報も多く、必要なサンプルコードをスパゲッティな感じで繋げていけばナポリタン(目的とするプログラム)が作れそうな感じで書き始める(実際には、コピペですが)。

まずは、元になる東京都福祉保健局のPDFからコピペしたテキストから。

(別紙
◆令和3年6月3日16時45分時点)
https://www.fukushihoken.metro.tokyo.lg.jp/hodo/saishin/corona2103.files/2103_.pdf

「【参考】区市町村別患者数(都内発生分) (6月2日時点の累計値)」という前日のデータを区市町村別に集計した表があるので、マウスでコピペしてウインドウズのメモ帳に貼り付ける。

「851 (812) 2612 (2513) 5301 (5134) 8783 (8624) 2401 (2297) 2969 (2847) 3224 (3100) 5307 (5095) 4710 (4525) 4404 (4239) 7854 (7604)
11712 (11186) 4666 (4488) 5221 (5052) 6430 (6198) 4260 (4084) 3648 (3481) 2604 (2460) 6064 (5764) 7148 (6894) 7425 (7220) 5496 (5311)
6861 (6610) 3943 (3820) 1326 (1241) 1278 (1224) 1512 (1443) 791 (779) 1844 (1730) 789 (763) 1899 (1812) 2622 (2520) 930 (884)
1113 (1064) 1148 (1120) 815 (761) 807 (747) 426 (398) 475 (448) 592 (550) 454 (430) 390 (370) 651 (625) 367 (354)
889 (870) 537 (521) 343 (334) 545 (494) 1541 (1491) 179 (172) 105 (94) 10 (10) 25 (25) 23 (23) 0 (0)
1 (1) 1 (1) 4 (4) 2 (2) 9 (7) 0 (0) 4 (4) 13496 (13359) 76」

①カッコ内は累計回復者数ということだが、浮沈子は使っていないので、これを手で消していた(かなり面倒くさい)。

②また、改行が4か所ほどあるので、これも消す(手間ではないけど、簡単に出来そうだったので:意外と難航した)。

③最後に、グーグルスプレッドシートに貼り付ける際に、縦書きで(データが縦に並ぶように)行うために整形する。

いろいろネットの記事を読んだんだが、主に参考にしたのは「侍エンジニアブログ」というページ。

やや、宣伝がうるさいけど(プログラミング教室の勧誘)、必要な所だけつまみ食いして撤退したい浮沈子には無縁だ(体系的にプログラミングの勉強をしたことはありません)。

まず、食いついたのは、メインのメソッドであるデータの置き換えをする機能のページ。

(【JavaScript入門】replaceの文字列置換・正規表現の使い方まとめ!)
https://www.sejuku.net/blog/21107

参考にしたコード。

「文字列に含まれているカンマを除去する方法:
var str = '1,234,567';
var result = str.replace(/,/g, '');
console.log( result );」

もう一つ、実際にコピペに使ったもの。

(JavaScriptのreplaceメソッドを使って様々な置換を試してみよう)
https://techplay.jp/column/535

「全角空白・半角空白を削除する:
var sample='吾 輩 は     猫 で ある   ';
sample=sample.replace(/\s+/g,'')
console.log (sample)」(\はバックスラッシュ:以下同じ)

浮沈子の開発環境は、エディターはウインドウズのオマケのメモ帳、実行環境はグーグルクロームなので、コンソールとかは使わない(使えばいいのに・・・)。

で、結果を吐き出す先はブラウザーにする。

「document.write(sample) ;」

文字列を効率よく扱うには、正規表現を使うのがいいらしいということで、その辺りのお勉強も。

(【JavaScript入門】4つのパターンで理解する正規表現の使い方まとめ!)
https://www.sejuku.net/blog/20973

参考にした部分。

「「\d」0〜9の数字」

「今回のように数字であれば、「\d」を1つ記述してその後に続けて「*」「+」を書くだけでどんな桁数の数字にもマッチすることになります!」(今回は「*」を使用:カッコ内(累計回復者数)には空文字はないので)

「「time」はそのまま固定で、末尾の「s」に続けて「?」を付けることで、「s」の「ある」「なし」を表すことが出来るのです!」(改行コードのところで「?」が出てきます。)

「正規表現で扱う「特殊文字(. * + ^ | [ ] ( ) ? $ { }など)」は、パターンを作成する時にエスケープしなければいけないケースがあります。」

「正規表現でエスケープ処理を行うのに必要なのは「 (バックスラッシュ)」です」

累計回復者数はカッコ「( )」で囲まれているので、これを正規表現で扱うには、エスケープ処理が必要だからな。

コードを書く(コピペする)上で、MSゴシックだとバックスラッシュが正しく表記されないので、エディターであるウインドウズのメモ帳のフォントを「Arial」に変更しておく。

いろいろ試したんだが、カッコつきの数字(回復者数)を、いきなりブラウザーの改行記号である<br>に置き換えようとすると2回改行されてしまった。

そこで、仮に「p」(文字はテキトーです)で置き換えておいて、「p」をさらに<br>に置き換えることにした(もっとうまいやり方があると思いますけど)。

元データに改行が4か所ほど混ざっているので、これを取り除こうと苦労した。

作成途中では、データをベタ文字列で変数に貼り付けていたので、これを弄ってもうまく置き換えてくれない。

後述の外部ファイルからの読み込みを行って、その内部データに対して置き換えを行ったところ、見事に消えてくれた!。

(【JavaScript入門】文字列を改行する方法(改行コード/「\n」/置換))
https://www.sejuku.net/blog/55631

「改行コードはOSごとに異なります。:
Unix:\r
mac(OS X):\n
mac(OS 9以前):\r
Windows:\r\n」

これらを正規表現で一元的に表記すると、「\r?\n」となるわけだな(ロジカルには「\r?\n?」になるような気も)。

最後は、まあ、順序的には逆なんだが、ローカルのファイルからデータを読み込むところ。

これは、さっぱり分からないので、変数とかもそのままコピペして、置き換え処理のところで入れ替えたりした(禁じ手!)。

(JavaScriptでファイル処理! JSONやCSVなどのファイルを読み込もう)
https://www.sejuku.net/blog/32532

「ファイルの読み込みを実現させるためには、一般的にFile APIを使います。」

「これは、HTML5から利用できるようになった機能(API)になります。JavaScriptからFile APIで提供されているメソッドを組み込むことで簡単にPCのローカルファイルを読み込ませることが可能です。」

簡単とか書いてあるけど、浮沈子には何をやっているのかさっぱりだ。

ここは、そのままコピペして、ファイルの中身を指している変数は、途中で入れ替えるという禁じ手を使ってしまう(スパゲッティープログラミングで、最もやっちまう方法かあ?:良い子はマネしないでね!)。

まあ、そのままでもよかったんですが・・・。

参考にしたコード(つーか、そのままコピペ)。

「<body>

<form name="myform">
<input name="myfile" type="file" />
</form>

<script>

//Form要素を取得する
var form = document.forms.myform;

//ファイルが読み込まれた時の処理
form.myfile.addEventListener('change', function(e) {

//ここにファイル取得処理を書く

})
</script>

</body>」

取得処理のところも、次のコードをそのままコピペした。

「var form = document.forms.myform;

form.myfile.addEventListener( 'change', function(e) {

var result = e.target.files[0];

//FileReaderのインスタンスを作成する
var reader = new FileReader();

//読み込んだファイルの中身を取得する
reader.readAsText( result );

//ファイルの中身を取得後に処理を行う
reader.addEventListener( 'load', function() {

//ファイルの中身をtextarea内に表示する
form.output.textContent = reader.result;
})

})」

説明の意味は、さっぱり分からないが、ちゃんとプログラミングのお勉強している人には簡単なんだろう。

で、試行錯誤を重ねて、出来上がったスパゲッティーナポリタンがこれ・・・。

「<html>
<body>

<form name="myform">

<input name="myfile" type="file" />

</form>

<script>

var form = document.forms.myform;

form.myfile.addEventListener( 'change', function(e) {

var result = e.target.files[0];

//FileReaderのインスタンスを作成する
var reader = new FileReader();

//読み込んだファイルの中身を取得する
reader.readAsText( result );

//ファイルの中身を取得後に処理を行う
reader.addEventListener( 'load', function() {

//②改行除去(ここで、変数の入れ替え!:reader.result→sample)
sample=reader.result.replace(/\r?\n/g,'');

//①カッコ内を仮置き換えpへ(カッコ内を消す処理(その1))
sample=sample.replace(/\(\d*\)/g,'p');

//③仮置き換えpをブラウザー上の改行<br>へ(カッコ内を消す処理(その2)+横書きを縦書きへ)
sample=sample.replace(/p/g,'<br>');

//ファイルの中身をブラウザー上に表示する
document.write(sample) ;

})

})

</script>
</body>
</html>」

①、②、③は、概ね今回の処理でやりたかったことと対応している。

ファイルの選択をもっとシンプルにしたいとか(一応このままでも、クロームでは、ドラッグアンドドロップでも出来ます)、スパゲッティコードを何とかしたいとか、ファイルの読み込みをちゃんと理解したいとか、出力先をブラウザー上ではなく、ファイルにしたいなど課題は山積だが、当初のイメージ通りの仕掛けになったのでいいことにする。

今回の収穫は、これまでちゃんと勉強したことがなかった正規表現について、上っ面だけでも一通り眺めたことだろうな。

開発環境と実装にジャバスクリプトを選んだのは、正解かどうか分からない。

気力と時間が許せば、Jスクリプトは手を付けてみたい気もするし、何より、バッチファイルでさっくり処理したい。

同じことを、異なるプログラミング言語で表現できれば、何となく豊かになった気がするのは、自然言語と同じだ。

メモ帳にコードを書いて、ファイル名にhtml拡張子をつけ、ダブルクリックで起動すると、ブラウザーに画像のタブが出るので、インプットメソッドでPDFから貼り付けたテキストファイルを選ぶだけで、ブラウザーに縦書きの数字が上書きで並び、それをそのままスプシにコピペする。

従来は、PDFから貼り付けたメモ帳で手処理で改行を取り除いたり、区切り文字として入っている半角スペースを入れたり、それらを含めて、半角スペースをタブに置き換えたりという前処理から始まり、作業用のスプシを開き、横書きのまま貼り付けてからコピーし、特殊貼り付け→転置して貼り付けで縦横変換し、1行おきに拾うために0、1で交互にフラグを立てたり並べ替えを行って、ようやく縦書きの累計感染者数だけのデータを得ていた。

改行除去などの前処理もなし、1つおきに拾うこともなし、縦横変換もなし。

PDFからテキストファイルにコピペして、そのまま保存。

デスクトップからジャバスクリプト入りのファイルを起動してタブを開かせ、保存したファイルを選択すれば、整形済みのデータがブラウザー上に展開される。

そのデータ(最初に引用したものと同じ6月2日分)

「851
2612
5301
8783
2401
2969
3224
5307
4710
4404
7854
11712
4666
5221
6430
4260
3648
2604
6064
7148
7425
5496
6861
3943
1326
1278
1512
791
1844
789
1899
2622
930
1113
1148
815
807
426
475
592
454
390
651
367
889
537
343
545
1541
179
105
10
25
23
0
1
1
4
2
9
0
4
13496
76」

それを、集計してグラフ化しているスプシにコピペしてお終い。

時間的には、大した話じゃないけど、毎回毎回、同じ処理を繰り返し行う苦痛が無くなるだけでもマシというものだ。

このブログ記事は備忘のために書いている。

参考に開いたホームページとかは、グーグルに筒抜けだしな。

どーせ筒抜けなんだから、試行錯誤した手順とかも、得意のAIでブログ記事に仕立てて書いて欲しいもんだな。

そうすれば、半徹(半分徹夜)しなくても済んだかもしれないのにな。

今朝は雨。

東京はそれ程でもないけど、西日本は大雨だそうだ。

さて、飯でも食いに行って、爆睡するか・・・。

<以下追加>ーーーーーーーーーー

(JavaScriptのイベントの仕組みが一発で理解できるウェブアプリ「Explore DOM Events」レビュー)
https://gigazine.net/news/20210603-explore-dom-events-javascript/

「JavaScriptには、特定の動作が発生した際にそれに応じてコードを実行する「イベント」という仕組みが存在しています。」

ファイルを読み込んで処理系に渡すときに、どうもイベントドリブンな仕掛けを使っている気がしたので、たまたま読んだギガジンの記事をリンクしておく。

それよりも、この記事からリンクされているチュートリアルは、まあ、英語の直訳だが日本語化されていて、ジャバスクリプトのお勉強には向いている気がする(「イベント」、「DOM」からリンクしている)。

気が向いたら、取り組んでみるのもいいかもしれないな・・・。

<さらに追加>ーーーーーーーーーー

6月5日記。

今日も、フィットネスをサボって、シコシコとプログラミングに勤しむ・・・。

(JavaScript テキストエリアの値を取得/設定する)
https://itsakura.com/js-textarea

考えてみれば、わざわざテキストファイルを経由しなくても、ジャバスクリプトを使うわけだからブラウザー上のテキストエリアに直接コピペした方が簡単に決まっている。

PDFファイルからコピーしたデータは、テキストエリアにペーストすれば、当然テキストデータとして扱われるだろうから(まんまや!)、それをそのままハンドリングすればいい・・・。

で、上記のページを参考に(えーと、例によってコピペしただけですが)茹で上げたスパゲッティーミートソース(ナポリタン改め)が、これ。

「<html>
<body>
<textarea id="textarea3" value="1" cols="140" rows="10" maxlength="1000"></textarea><br>
<input type="button" value="変換" onclick="clickBtn5()" />
<input type="button" value="クリア" onclick="clickBtn7()" />

<script>
function clickBtn5() {
let ta3 = document.getElementById("textarea3").value;

//改行除去
ta3=ta3.replace(/\r?\n/g,'');

//カッコ内を仮変換pへ
ta3=ta3.replace(/\(\d*\)/g,'p');

//仮変換pをブラウザー上の改行へ
ta3=ta3.replace(/p/g,'<br>');

//ファイルの中身をブラウザー上に表示する
document.write(ta3) ;
}

function clickBtn7() {
document.getElementById("textarea3").value = "";
}
</script>
</body>
<html>」(\はバックスラッシュ)

出力は、テキストエリア内でも試してみたんだが(その方がカッコいいし)、半角スペースが残ってしまって上手くいかなかったので、今回はそこは弄らずに、ウェブページ上に変換後のデータを上書きでぶちまける(作業的には、これをスプシのセルにコピペすることになる)。

参考にしたページ上では、クリアボタンが実装されているけれど、サンプルコードでは省略されている。

何とかならんもんか・・・。

「テキストエリアに値を設定する:
・・・
テキストエリアをクリアする場合は、空文字("")をセットします。」

クリアボタンは、これを参考にボタンとファンクションを追加した(ボタンのidとか付けてなかったりして、もう、テキトーです)。

今回は、変数は途中で変えたりしないで同じものを使う。

サンプルプログラムのconstのままだと、書き換え時の再代入を受け付けないので、letにしてみたら動いた(スコープであるfunction clickBtn5()内では再代入も可:もちろん、varでも動きました)。

変数の定義にvar、let、constのどれを使うかについては懇切丁寧な解説のページがあった。

(JavaScriptのletとは?知っておくべき特徴と使い方について)
https://www.sejuku.net/blog/58429

「・varは使わずに、これからはletかconstを利用する
・letは再宣言不可でブロックスコープという特徴がある
・constは再代入も不可だがオブジェクトなどの値は変更可能」

この辺りは、例によってテキトーなので、美しくなくてもいい。

動くプログラムが絶対の正義だからな・・・。

<さらにさらに追加>ーーーーーーーーーー

(今すぐ対策できる!HTMLで文字化けを直す方法【初心者向け】)
https://techacademy.jp/magazine/9929

弄っているうちに、ボタンの表示(「変換」「クリア」)が文字化けしたので対策する。

「HTMLファイルは文字コードUTF-8で保存する。」

「HTMLのmetaタグに charset=”UTF-8″ を指定する。」

「<head>
<title>sample</title>
<meta http-equiv="content-type" charset="UTF-8">
</head>」

こんなことになったのは、またまた改良(?)して、テキストエリアに吐き出すことにしたからか。

ーーーーー<<現在のソースコード:ここから>>ーーーーー

「<html>
<head>
<title>PDF2TXT</title>
<meta http-equiv="content-type" charset="UTF-8">
</head>
<body>
<textarea id="textarea3" value="1" cols="140" rows="10" maxlength="1000"></textarea><br>
<input type="button" value="変換" onclick="clickBtn5()" />
<input type="button" value="クリア" onclick="clickBtn7()" />

<script>
function clickBtn5() {
let ta3 = document.getElementById("textarea3").value;

//元データの改行除去
ta3=ta3.replace(/\r?\n/g,'');

//カッコ内を改行へ
ta3=ta3.replace(/\(\d*\)/g,'\r\n');

//ファイルの中身をテキストエリアに表示する
document.getElementById("textarea3").value = ta3;

}

//テキストエリアのクリア処理
function clickBtn7() {
document.getElementById("textarea3").value = "";
}
</script>
</body>
<html>」

ーーーーー<<現在のソースコード:ここまで>>ーーーーー

今まで仮変換していた「p」とかいう仮文字をやめて、ダイレクトに改行コードを入れた(さすがに、テキストエリアに入れると<br>は、そのまま表示されるからな)。

ウインドウズ環境だから、「\r\n」としたんだが、どうもこれが原因らしい(未確認)。

で、上記のようにヘッドでキャルセットを指定したら、化けなくなった。

随分完成形に近づいている。

ブラウザー経由の処理だが、サーバー上に置いておけば、ネット環境からも使える(ニッチな用途だけど)?

まあ、こんだけだから、メモ帳にコピペして拡張子をhtmlとかにしてからダブルクリックで実行してもいいか・・・。

カッコ内のデータを直接改行コードに変換した際に、半角スペースが付いている感じだったけど(trim()とか使っても、取れませんでした。)、スプシにコピペしてみたら、ちゃんと数値として読み込めたので、このスタイルで行くことにした。

結果が全て。

無事に昨日(6月4日分)のデータもスプシに放り込んで、今日の作業はお終い。

JスクリプトやVBスクリプト、ウインドウズバッチファイルなどでも、同じ様な処理が出来そうだ。

ツールとしては、文字置換は一般的な処理で、テキストファイルに落とし込んでおけば、リプレイスなどと同じようなコマンド(メソッド?)で変換してくれる。

対象とするファイル、置き換え前文字列、置き換え後文字列を指定して、任意の返還をしてくれる汎用ツールのようなものもあった。

(JScript でテキストファイルの文字列を置換する)
https://norastep.hatenablog.com/entry/2015/12/05/205308

「今回は、JScript を用いてテキストファイルの文字列を置換するスクリプトを作りました。」

(windows dosで正規表現の置換が実行可能なツールをつくりました)
http://defmementomori.hateblo.jp/entry/2017/03/17/210144

「正規表現の置換を実行するバッチを組みたい」

「そこでvbsでツールを作りました。」

(バッチファイルでテキストファイル内の文字列置換)
https://knowledge.reontosanta.com/archives/816

「Windowsのバッチファイルでテキストファイル内の特定の文字列を置換する方法」

もちろん、各種開発環境を導入すれば、何でもできるだろう。

ウインドウズの素の環境で、ブラウザー以外の実行環境がない状態では、候補はこれくらいか(パワーシェルとかだと、一発だそうですが)。

今回は、やりたいこと(ニーズ)に特化して、出来ること(シーズ)を選んだ。

Cで書け!とか、パールが最適!とか、パイソンでしょう!とか、浮沈子には皆、敷居が高い。

コードを書いた経験は、DOSのバッチファイル、ベーシック、ジャバスクリプト程度だ。

言語の仕様はどんどん変わっていくから、キャッチアップしないとな。

以前は、ジャバスクリプトで外部ファイルを扱うことはできなかった(浮沈子が知らなかっただけかも)。

HTML5.0から、限られた範囲でのアクセスが可能になり、汎用的な処理にも使えるようになった。

最終的には、PDFからのコピペをテキストエリアに読み込む方法にしたけれど、ファイルの中のデータを弄るという、ドキドキする体験も出来たからな(イベントドリブンな処理の理解は、次回持越しだな)。

ジャバスクリプトは、コンピューターのフロントエンドの処理に大活躍しているようだ。

動的なブラウザーのぺージを作るには欠かせないし、クライアントサイドでのローカル処理で済ませられることを済ませてしまえば、通信コストの削減にも繋がる。

サーバーサイドで動くスクリプトもあるようだ(未確認)。

プログラムと言えば、紙のコード表に手書きして、パンチカードに打ち込んでもらい、光学読み取り機で磁気テープに記録し、夜中にバッチ処理を走らせるものだという時代から付き合っている浮沈子にとって、現代は夢のような時代だ。

掌に乗るスパコンを、ありとあらゆる人々が持ち歩き、溢れるような通信環境で高品位動画を再生して楽しんでいる。

テレビ電話(死語です!)は、新型コロナの時代になって当たり前の存在になり、気の利いた会社はリモートワークに移行して実績を上げている。

そんな時代に、テキストデータのカッコ外して取っ払い、改行コードに置き換えたりして、何が面白いのか・・・。

そのデータが、都内感染者の区市町村別内訳だったりするところが、時代を反映しているわけだ(そうなのかあ?)。

まあ、どうでもいいんですが。

動画も、バーチャルリアリティも結構だけど、コンピューターの基本はテキストデータの処理だ(時代錯誤!?)。

数値を演算したり、テキスト文書を操作したり。

浮沈子は、ブログを書き(大部分コピペし)、たまにプログラムを書き(殆ど全てコピペし)、画像(静止画)を撮って(大体キャプチャかコピペして)楽しんでいる。

今回も、コピペして貼り付け、ワンクリックで成果物を得た(それをまた、コピペして貼り付けるんだがな)。

定型処理を手作業で行うという苦痛から逃れて楽をするために、半徹して突破し、さらに2日掛かりで使いやすくした。

その作業の方が余程骨が折れるが、苦痛ではない。

新しいことを学ぶという、得難い経験をさせてもらえた。

学校のお勉強を楽しいとは思わなかったけど、自分がやりたいことを解決するために、調べたり、人様の知恵を借りたり(=コピペ?:カンニングともいう)することは楽しい。

楽をするための苦労は楽しい。

楽あれば苦あり、苦あれば楽あり。

塞翁が馬ということか・・・。

🐼変異種:晴読雨読:東京都の区市町村別新規確認感染者数をPDFからコピペしてスプシに貼り付ける過程を半自動化:ブラウザーに直接貼り付け(ファイル経由から変更)2021年06月05日 23:36

変異種:晴読雨読:東京都の区市町村別新規確認感染者数をPDFからコピペしてスプシに貼り付ける過程を半自動化:ブラウザーに直接貼り付け(ファイル経由から変更)
変異種:晴読雨読:東京都の区市町村別新規確認感染者数をPDFからコピペしてスプシに貼り付ける過程を半自動化:ブラウザーに直接貼り付け(ファイル経由から変更)

改良を重ねて、とうとうマウスオーバーで全選択までできるようになった(この機能は、後でキャンセル:<以下追加>参照)。

参考にしたページ。

(【javascript】テキストエリアの文字列を選択状態にする)
https://ysklog.net/javascript/2154.html

「マウスオーバーされた時に選択状態にする」

別のページでは、マウスオーバーではなく、クリックさせた方がオペレーティングシステムとの操作性に統一感が得られるから、そちらの方が好ましいとあったが、そういう正当な議論は無視する(そんなあ!)。

(input,textareaで全文選択し易いJavaScript)
https://wordpress.matometa.net/archives/20100216130942

「マウスオーバーで全文選択されるタイプは、一般のOS操作とちょっとかけ離れる場合もあるので、一般のユーザービリティ用には、テキストエリアをクリックすると全選択されるタイプの方が、迷いがないというか間違えないというか、意外とクリックの方がいいと思います。」

確かに、一般のユーザビリティを中心に考えればそうかもしれない。

しかし、このプログラムは、人様に使って頂くものではないのだ。

自分さえ使い易ければそれでいい(サンデープログラミングの王道だな:そうなのかあ?)。

自分が、この世界でたった一人のユーザーである自分だけが使うために、世界に一つしかないコードを書く(まあ、コピペですが)。

自分だけが使い易くてどこが悪い?。

「<textarea readonly onmouseover="this.focus();this.select()">テキストエリアがマウスオーバーされると、このテキストエリアが選択されます。</textarea>」

「この1行のみで動きます。」

readonlyとか、そのままだと動かないし、onmouseover絡みのところだけコピペして、動けばラッキー・・・。

ーーーーー<<現在のコード:開始>>ーーーーー

<html>
<head>
<title>PDF2TXT</title>
<meta http-equiv="content-type" charset="UTF-8">
<style type="text/css"><!--.big { font-size:14pt; }--></style>
</head>
<body>
<!- テキストエリアにマウスオーバーすると全選択される処理を追加->
<textarea onmouseover="this.focus();this.select()" id="textarea3" value="1" cols="133" rows="7" maxlength="1000" class="big"></textarea><br>
<input type="button" value="変換" style="position: relative; left: 0px; top: 10px;font-size:20px;width:100px;height:50px" onclick="clickBtn5()" />
<input type="button" value="クリア" style="position: relative; left: 10px; top: 10px;font-size:20px;width:100px;height:50px" onclick="clickBtn7()" />
</body>
<script>
//変換ボタンを押した時の処理(変数の定義とデータの置き換え、テキストエリアへの表示)
function clickBtn5() {
let ta3 = document.getElementById("textarea3").value;
//元データの改行除去
ta3=ta3.replace(/\r?\n/g,'');
//カッコ内を改行へ
ta3=ta3.replace(/\(\d*\)/g,'\r\n');
//ファイルの中身をテキストエリアに表示する
document.getElementById("textarea3").value = ta3;
}

//クリアボタンを押した時の処理(テキストエリアのクリア)
function clickBtn7() {
document.getElementById("textarea3").value = "";
}
</script>
</html>

ーーーーー<<現在のコード:終了>>ーーーーー

テキストエリアの文字を大きくしたかったので、その辺を少し弄った。

(テキストエリアの文字の大きさを変える)
http://www.openspc2.org/reibun/css/form/009/index.html

「<style type="text/css"><!--.big { font-size:48pt; }--></style>」

「<textarea class="big">でかいぞ~</textarea>」

ついでに、ボタンの字が小さいからデカくするとか、ボタンそのものをデカくするとか、配置をどーするなども書いた。

(Input Type Buttonのサイズ変更)
https://oshiete.goo.ne.jp/qa/2782783.html

「<INPUT TYPE="BUTTON" NAME="BUTTON02" VALUE="お問い合わせ"onClick="location.href='http@@@@@@@'" style="font-size:14px; width:100px; height:100px;">」

(○ 絶対位置と相対位置のレイアウト)
http://7ujm.net/asp/javascript8.html

「■ 相対位置 relative での指定:
・・・
<input type="button" style="position: relative; left: 0px; top: 0px;" />」

今回は、自分のための道具だから、スタイルシートなどで凝った作り込みはしない(ホームページ作成が目的じゃないんで・・・)。

おかげさまで、先日来、ジャバスクリプト(とHTML)ばっか弄っているから、どこをどうすると動くとか、何となくヤマ勘で分かるようになってきた(ホントかあ?)。

本来なら、ちゃんとリファレンスを読まないと、まともなコードは書けないし、見直すとHTMLの構文も怪しかったりする(関係ないところはなるべく書かないようにしているからな)。

まあいい。

プログラムは動いてナンボ。

ナポリタンだろうが、ミートソースだろうが、ボンゴレだろうが、カルボナーラだろうが、繋がっていて美味ければそれでいい。

スパゲッティプログラムと呼ばれたい!。

動かないプログラムは、いくら見た目が美しくても役には立たない(トーゼンです!)。

後は、改良するとしたら、PDFからコピペして貼り付けたと同時に、「変換」ボタンなんて押さなくても自動で変換してくれる程度か(どこかで見たような記憶が・・・)。

動作が、貼り付ける前(右クリックした段階)で始まるので、ウエイト(100ミリ秒くらい?)を掛けなければならないというのが気に入らないのでオミットしている。

ちゃんと張り付けられたかどうか(コピーミスがないかどうか)を確認してから変換(置き換え)したいからな。

まあ、どうでもいいんですが。

当初イメージしていたよりも、使い易くなっている気がする。

テキストファイルを経由するより、テキストエリアにペーストする方がスマートだからな。

運用上も、デスクトップにファイルを置いて(htmlの拡張子)、お気に入りに登録しておく。

いちいちデスクトップからダブルクリックで起動しなくてもいい。

構想5日、制作3日で、とりあえず完成形。

コードの整形としては、コピペ時にそのままになっている変数内の数字を整理する程度か。

所詮は自己満足の世界だから、そのままにしておいても何の問題もないけどな・・・。

<以下追加>ーーーーーーーーーー

([javascript] テキストエリアの文字をクリップボードにコピーする方法)
https://blue-bear.jp/kb/javascript-%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%AA%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E3%82%B3/

「javascriptを使用して、テキストエリアの文字をクリップボードにコピーする方法は以下のコードを実装する」

マウスを重ねると選択される処理はキャンセルして、ワンクリックでテキストエリアのデータ変換とクリップボードへのコピーを実装した。

ホームページの実験室にも、「こぴぺ変換」としてアップロードした(まんまや!)。

(浮沈子の部屋:実験室:こぴぺ変換)
https://www.ne.jp/asahi/kfujito/fuchinshi/labo/pdf2txt/index.htm

ーーー<<現在のコード:開始>>ーーー

<html>
<head>
<title>PDF2TXT</title>
<meta http-equiv="content-type" charset="UTF-8">
<style type="text/css"><!--.big { font-size:14pt; }--></style>
</head>
<body>
<textarea id="textarea3" value="1" cols="133" rows="7" maxlength="1000" class="big"></textarea><br>
<input type="button" value="変換してコピー" style="position: relative; left: 0px; top: 10px;font-size:20px;width:200px;height:50px" onclick="clickBtn5()" />
<input type="button" value="クリア" style="position: relative; left: 20px; top: 10px;font-size:20px;width:100px;height:50px" onclick="clickBtn7()" />
<br><br><br>
<a href="../../index.htm">浮沈子の部屋に戻る</a>
</body>
<script>
//変換ボタンを押した時の処理(変数の定義とデータの置き換え、クリップボードにコピー)
function clickBtn5() {
let ta3 = document.getElementById("textarea3").value;
//元データの改行除去
ta3=ta3.replace(/\r?\n/g,'');
//カッコ内を改行へ
ta3=ta3.replace(/\(\d*\)/g,'\r\n');
//テキストエリアに書き出す
document.getElementById("textarea3").value = ta3;
//書き出されたデータをクリップボードにコピーする
var urltext = document.getElementById("textarea3");
urltext.select();
document.execCommand("copy");
}
//クリアボタンを押した時の処理(テキストエリアのクリア)
function clickBtn7() {
document.getElementById("textarea3").value = "";
}
</script>
</html>

ーーー<<現在のコード:終了>>ーーー

上記のコードでは、トップページ「浮沈子の部屋」へのリンクは切れている(サーバー上での指定のため)。

コピペ元の変数をそのまま使っている行儀の悪さはそのままだ(スパゲッティカルボナーラだからな・・・)。

どうも、一度クリップボードを経由しないと上手くいかない(たぶん、違うやり方があるのかも知れないな)。

やれやれ・・・。

初めは、別のボタンを作ってコピーしてたんだが、変換ボタンと一つにまとめてしまった。

実用上は問題ない。

元データをクリップボードからテキストエリアにコピーする仕掛けにもチャレンジしたが、悉く玉砕している。

クローム(バージョン91)のせいかもしれないし、コードが悪いのかも知れない。

パーミッションとやらが引っかかっているのかも知れないな。

まあいい。

ワンアクション減らせるだけだから、実用上の問題はない。

昨日(ダブルタンク+80キュービックフィートのデコタン1本)の筋肉痛が取れず、今日も晴読状態でサボっている(イテテッ!)。

飯でも食いに行ったら、続きを書くか・・・。

🐼老後の嗜み:コンピュータープログラミングつまみ食い:ルビーの指輪2021年06月11日 00:11

老後の嗜み:コンピュータープログラミングつまみ食い:ルビーの指輪
老後の嗜み:コンピュータープログラミングつまみ食い:ルビーの指輪


数年ぶりにジャバスクリプトを弄って、短いプログラムを書いたりしたので、せっかくのノリを生かそうと、プログラミングの学習を始めた。

言語は、まあ、何でも良かったんだが、PHP、ジャバスクリプト、ベーシック、パイソン、ルビー、果てはビジュアルプログラミング言語まで検討した挙句、ルビー(Ruby)にした。

開発環境も軽く、最小構成で30メガバイト程度で収まる。

(ビジュアルプログラミング言語)
https://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

「テキストで記述するのではなく、視覚的なオブジェクトでプログラミングするプログラミング言語」

「グラフィカルプログラミング言語とも言う」

浮沈子が弄ったことがあるのはスクラッチくらいだが、未来のプログラマーは、こういうのを使ってプログラミングするんだろうな。

裏では、自動でテキストコードを生成しているんだろうから、自動化プログラミングの走りかも知れない。

ルビーを選択したのは、様々な記事で、その学習コストが低いことが上げられていたからだが、こんな記事の影響もあった。

(まつもとゆきひろ
「社会的責任」からじゃない。 趣味でつくって、おすそ分け。)
https://wired.jp/waia/2018/01_yukihiro-matsumoto/

「プログラミング言語とは、コンピューターに仕事の順序を伝える手段である。」

「「チューリング完全」という条件さえ満たしていれば、ほとんどのプログラミング言語は同じアルゴリズムを記述することができるんです。基本的にどんなプログラムでも、ひとつのプログラミング言語で書くことができる。」

「その一方でプログラムを書くときに、われわれ人間にはふたつの限界があるんです。」

「ひとつはコストの問題。コストを無限にかけることはできませんよね。」

ここでいうコストの中には、体力、集中力、時間、やる気(モチベーション)なども含まれているに違いない。

「もうひとつは人間の理解力、認知の問題です。人は、ある程度以上の複雑なものは、そのまま理解することができない。」

おおっ!、何か本質的な話になりそうな予感が・・・。

「ですから、複雑なものは整理し、難しいところはうまく隠して、概略だけで話ができるようにする。これをプログラムの世界では「抽象化」といいますが、その道具のひとつがプログラミング言語であり、この扱いやすさに重点を置いているのがRubyなんです。」

ある言語が世に普及するには、なにがしかのアドバンテージがあるからだ。

折しも、新型コロナが流行しているが、感染力やワクチン回避能力が優れた変異種(いまなら、差し詰めデルタ株かあ?)が優勢になるようなもんだな。

「Rubyは本来、インターネットの普及を想定した言語ではありませんでした。」

ルビーオンレイルズの登場で、状況は一変し、今や時代の寵児になっているが、この先どうなるかは分からない。

機械学習に強みがあるパイソンの方が将来性があるとか、未来の言語はビジュアルプログラミング言語だとか。

しかし、そういう流行り廃りの話ではなく、この人は、もっと根っこのところで何かを見つめている気がする。

「もし将来、コンピューターがプログラミングする時代が訪れたら、プログラミング言語は使わないと思うんです。」

「複雑さをとらえきれない」という限界がなく、概念をそのまま把握できますから。」

「でも、わたしたちは脳の働きや心理といったさまざまな能力の制約をもっています。だからこそ、それらの制約のなかにある人間がプログラミングすることを支援できるプログラミング言語をつくりたい、と。」

「Rubyでは本質的に複雑なことを、いかに人間の認知力が上がったかのように見せかけ、プログラマーの満足度を高めるか。コンピューターと人間の間のインターフェイスとしてのデザインは、プログラミング言語の醍醐味ですね。」

「Rubyそのものに関しても、パフォーマンスを向上させたり、機能を追加したりする一方で、すでに多くのソフトウェアに使われている。そうなると当然のことながら、互換性と安定性も維持しなければなりません。相反することを同時に、一生をかけて進める……長く続く一本橋のようです(笑)」

深く考えさせられる言葉もある。

「「何か保障されている」という感覚が幻想」

「幻想を打ち破れ」

形あるものは全て壊れ、命あるものは全て個体としての死を迎える。

神ならぬ人の作りしものは全て、この世から消えてなくなる。

そこに何かを残そうとすれば、それは、人の営みというリソースを注ぎ続けなければならないのだ。

どーせ、飽きっぽい浮沈子のことだから(ジャバスクリプトは3日で挫折)、言語は何でも良かったんだが、学習のモチベーションを維持するのに、この記事は役に立つかもしれない。

(Ruby)
https://ja.wikipedia.org/wiki/Ruby

「オブジェクト指向スクリプト言語」

オブジェクト指向言語は、概念的に理解しにくい感じがして、基本的なことをすっ飛ばしてコピペで済ませ、動けばいいやと誤魔化してきた。

ここいらで、ピュアなヤツを弄っておくことも必要かもしれない。

4日前から始めて、いくつかのサイトを覗いたり、試したりした。

(20分ではじめるRuby)
https://www.ruby-lang.org/ja/documentation/quickstart/

「これは20分程度で一通り読み通せる、簡単なRubyチュートリアルです。」

騙されてはいけない!。

浮沈子は、これに2日掛かった(長くね?)。

(試してみる! (ブラウザから):腹ペコです参照:(その6)の最後)
https://try.ruby-lang.org/

「def hungry?(time_of_day_in_hours)
puts "腹ペコです"
true
end

def eat_an(what)
puts "#{what}を食べます\n"
end

eat_an 'リンゴ' if hungry?(14)

eat_an 'リンゴ' if hungry?(10)」

「hungry?メソッドを、時間(引数で渡された値)が12未満だった場合に “腹ペコじゃないです”と表示してfalseを返すように変更できるか確かめてみてください。」

この設問には、正解が記載されていない。

「def hungry?(time_of_day_in_hours)
if time_of_day_in_hours < 12
puts "腹ペコじゃないです"
false
else
puts "腹ペコです"
true
end
end

def eat_an(what)
puts "#{what}を食べます\n"
end

eat_an 'リンゴ' if hungry?(14)

eat_an 'リンゴ' if hungry?(10)」

一応、これで動いたが、正解かどうかは知らない(if文の後のendを付け忘れて、一晩動かなかったことは秘密です)。

一応、エラーコメントは出なかったからな。

第6章以降は、未だ手つかずだ。

(Rubyがミニツク)
http://www.minituku.net/courses/566428009/contents/740993459.html

各章の先頭にある動画が見たかったんだが、フラッシュプレイヤーが切れてしまっているので、見ることができない。

内容的にも、本文で解説されていないところがテストに出たりしてムカつくけど、それも勉強のうちとグッと堪えて17章あるうちの初めの2章だけ終わらせた。

細かいところも解説してくれていて、公式ページからリンクされているチュートリアルよりは浮沈子向きだと感じている。

まあ、そろそろ飽きてきたので、こうしてブログ記事にして気分転換してるわけだがな(早くね?)。

やはり、オブジェクトとか、メソッドとか、クラス、インスタンスという呪文のような言葉に踊らされている。

アクセサ、オブジェクト変数(VBAのとは違うようです:インスタンス変数(メンバ変数)のことらしい)もヤバイ。

コードをコピペして、動けばいいや、などと言っている場合ではないのだ(ホントにそう思ってるのかあ?)。

まあいい。

動かない美しいプログラムより、動くスパゲティプログラムが正しい(やっぱし・・・)。

ゆっくりと、手戻りしながら、時間を掛けて(10倍でも100倍でも)、自分のペースで学んでいくしかない。

幻想(妄想?)の中に生きている浮沈子は、死ぬまでその殻を打ち破ることはできないだろう。

ルビーは、初心者向きの言語とされているが、それは単に初期の学習コストが小さいだけの話だ。

巷では、プログラミングで飯を食わなければならないから、同じことをやるなら学習コストが小さく、手っ取り早く動かすことが優先されるからな。

パッと使えて、パッと作れて、グリグリしていかなければ商売にはならない。

そういう現世利益を追求する観点じゃなく、ボケ防止でチマチマと学習するなら、まあ、何でもいいわけだ。

ちょろっと書いて、パッと実行するには、インタプリタ言語は適している。

ベーシック、ジャバスクリプトも、そういう観点から検討した。

何か一つ取り組んでおけば、他のものに手を出すときにも参考になるに違いない。

なーに、また直ぐに飽きてしまうに違いないのさ・・・。

🐼変異種:α→英国産:β→南ア産:γ→ブラジル産:δ→インド産:Ruby→日本産2021年06月11日 08:14

変異種:α→英国産:β→南ア産:γ→ブラジル産:δ→インド産:Ruby→日本産


(変異ウイルス“デルタ株” 感染力は1.78倍 都内でクラスターも)
https://www3.nhk.or.jp/news/html/20210610/k10013077751000.html

オリパラが近づく中、新たな変異種の影響が懸念されてきている。

東京都では、スクリーニングを行った検体の3割にインド産変異種(デルタと呼ぶらしい)が認められ、その感染力の強さから、6月21日の緊急事態宣言の解除後、春先と同じようにリバウンドするのではないかと懸念されているようだ。

なにせ、感染力はアルファ(英国産変異種)の1.78倍と推定されているからな。

アルファ自体が、欧州産変異種(ギリシャ文字では何ていうのかな?)の1.5倍程度だったから、もう、昨年の優勢種に対して2倍以上の感染力ということになる。

全く別の感染症が、新たに流行し始めているといっても過言ではない。

「WHOによりますと、このうち、インドで確認された変異ウイルス「デルタ株」の報告があった国や地域は、今月8日の時点で74と、前の週に比べて12増えました。」

結局、検疫などの水際対策では、デルタの侵入は防ぎ切れず、全世界にばらまかれて、これからせっせと蔓延状態に移行するわけだ。

アルファがそうであったように。

おひざ元のインドは感染者が激減し、すでに10万人を切っている(いや、それでも凄まじい数字ですが)。

今月中に、米国を抜いて世界一の座を射止めることは極めて困難となった。

まあ、こういう事態は前回の流行の際もあったからな。

熱しやすく冷めやすいインドの流行の波・・・。

今回は、米国の感染者がロングテイル状態(1日当たり1万人程度)に移行しているから、逆転することはほぼ間違いない。

来月の、遅くとも中旬には、逆転するに違いない。

「都は都内でのウイルスが、「アルファ株」にほぼ置き換わった」

「スクリーニング検査を「デルタ株」へ切り替える方針」

「この変異ウイルスが日本国内で新型コロナウイルス全体に占める割合は、来月中旬には全体の半数を超えるという予測」

変異種は世に連れ、世は変異種に連れ・・・。

昨日まで、プログラミング言語にハマっていたけど、浮沈子がパソコンを触り始めた頃に流行っていたのはN88ベーシック(ROMに焼かれていたやつ)だったからな。

DOSのバッチファイルを弄って遊んだり(仕事中にはしてません!)、出始めたばかりのJAVAで、デューク(赤い一つ目のキャラクター)を転がして喜んだりしたのが昨日のことのようだ。

インターネットも、ウインドウズ3.1にソケット入れて電話回線で繋いだりしていたし、ADSLから光へ、光から無線ルーターへと移行した。

開発言語は、インターネットの普及と共にコロコロ変わり、老舗のC、JAVAに加え、PHP、Rubyが全盛、パイソンが機械学習で注目され、今後はGoとかRust(いずれもコンパイル系)が玄人受けしているようだ(テキトーです)。

新型コロナウイルスの変異種は、これまで数か月ごとに入れ替わっている。

武漢産→欧州産→英国産(アルファ)→インド産(デルタ)・・・。

その間、南ア産(ベータ)やブラジル産(ガンマ)、フィリピン産、NY産、カリフォルニア産なども出てきた。

インド産(デルタ)の次は、ベトナム産になるかと思ったら、今のところ大きな潮流にはなっていないようだ。

国内のワクチン接種は、医療従事者向けが概ね完了し(2回目とかこれからの人もいるようですが)、現在は65歳以上の高齢者が中心。

早い自治体では64歳から60歳への接種券も配り始めている(予約はこれからのようです)。

企業や大学では、来週から接種が始まると言われているらしいが、従業員への接種券が送られなければ接種はできないんじゃないのかあ?。

まあいい。

自衛隊の大型接種会場は、予約がガラガラで、高齢者の接種が滞り始めている。

想定外だな・・・。

地元のかかりつけ医で受診したいという希望があるのかも知れない。

接種会場が遠くて、行くのが大変ということもある。

副反応が出た時に、大型接種会場での接種との連携も心配だ。

浮沈子は、来月下旬に接種券が来たら(大田区では、今のところ、そのように広報している)、多少時期が遅れても、かかりつけ医での接種を予約しようと思っている。

それまでは、行動自粛で罹患しないように気をつけなければならない。

そんな中、毎朝の体温測定をしていたら、今朝はやや微熱状態(といっても、35.9度)で焦る。

平熱は、ほぼ35度だからな。

今日も、フィットネスをサボって、ルビーの学習を続けよう。

クラスとかインスタンス、メソッドなどと格闘する。

ルビーは、いろいろな書き方が出来て、それぞれ使い方によって区別されているんだろうが、初めて触れる時にはやや混乱する。

動的型付けだが、文字列と数字は記法が区別されているしな。

空気読めよ!(そんなあ!)。

サンプルプログラムでは、doやthenが省略されたりするくせに、マネして書いたりする時にendを書き落すと動かなかったりする(トーゼンです!)。

まあ、どうでもいいんですが。

エディタは、例によってウインドウズ付属のメモ帳だが、そろそろアトム辺りにしないと、学習上の支障が出てくる気もする。

いろいろな記事を読むと、vimとかも人気のようだけどな。

まあいい。

もう一杯、コーヒーを淹れたら、朝、頭がすっきりしているうちに、新しいクラスでも作るとしようか・・・。

<以下追加>ーーーーーーーーーー

(クラスの概念)
https://www.javadrive.jp/ruby/class/

今日は、クラスのお勉強。

新型コロナウイルスの変異種をネタに、多少モディファイしてシコシコと書く。

「class Hen
NIBAI = 2
def initialize(hen_name="α",hen_kuni="英国",hen_code=1)
@name = hen_name
@kuni = hen_kuni
@code = hen_code*NIBAI
end
# def insatu()
# print(@code,@name,@kuni,"\n")
# end
attr_accessor :code
attr_accessor :name
end

hen1 = Hen.new("β","南ア",2)
hen2 = Hen.new("γ","ブラジル",3)
hen3 = Hen.new("δ","インド",4)
hen4 = Hen.new()

#hen1.touroku("β","南ア",2)
#hen2.touroku("γ","ブラジル",3)
#hen3.touroku("δ","インド",4)
#hen4.touroku()

#hen4.insatu()
#hen1.insatu()
#hen2.insatu()
#hen3.insatu()

hen5 = Hen.new()
hen1.name = "β"
print(hen1.name)
print(hen2.name)
print(hen4.code,hen4.name)
print(Hen::NIBAI)」

定数のところまで、書き換え書き換え使ったので、もうグチャグチャだが、initializeメソッドを使うとtourokuメソッド(自作)を作らなくてもいいというのは分かった。

どーせ、オブジェクト作るに決まってるわけだから、初めから省略して記述できた方がいいに決まっている。

クラス変数(@@が付くやつ)は、カウントアップとかの事例が出ていて、どう使って行くかはこれからの勉強次第だ。

1日弄って、何となく分かった気になっている(ボーっとしてるだけじゃね?)。

自分で書いたコードは、パソコン上のルビーコンソールで動かしてエラーコードを読みながら対策し、サンプルコードを実行させたりする時には、以下のページでブラウザー上で実行させて少しだけ弄ったりする。

(トライルビーのページ)
https://try.ruby-lang.org/

そもそも、このチュートリアルが分かり辛いのがいけないんだがな(浮沈子に合っていないだけかも)。

簡易な実行環境として使えるので、少しだけ弄ってみたい時に重宝する。

エラーコード吐きまくるほど書き換える時は、ルビーコンソールからの方がいい(ブラウザーの環境でもエラーコード見れました)。

ダブル実行環境があると、思いっきり弄れるから習得が早いような気がする(たぶん、気のせいでしょう・・・)。

(Ruby入門:Rubyのトップページ)
https://www.javadrive.jp/ruby/

このチュートリアルは、何となく浮沈子に向いている気がする。

うるさすぎず、必要なことはちゃんと書いてある(たぶん:ルビーのバージョンは古いようです1.8以前)。

ある程度纏めて学習し、他の学習ページで確認するというのがいいかも知れない。

クラスについては、概念的な話と実際のコードでの解説が繋がらなくて困っていたが、ようやく納得がいった感じだ(だから、気のせいだって・・・)。

クラス変数とインスタンス変数を使い分けて、自由自在にデータをグリグリしてみたいもんだな・・・。

🐼変異種:東京都の新規確認感染者数が下げ止まりの様相:東京ロックダウン解除は見送りか!?2021年06月11日 19:17

変異種:東京都の新規確認感染者数が下げ止まりの様相:東京ロックダウン解除は見送りか!?
変異種:東京都の新規確認感染者数が下げ止まりの様相:東京ロックダウン解除は見送りか!?


(東京都 新型コロナ 435人感染確認 前週下回るのは29日連続)
https://www3.nhk.or.jp/news/html/20210611/k10013080381000.html

「前の週の同じ曜日を下回るのは29日連続です。」

ま、そりゃそうなんだろうが、今週の推移をみると、誰がどう見たって下げ止まりな感じは否めない。

じわりと、インド産変異種デルタ(δ)が効いてきているのかも知れない(まだ、時期尚早のような気も)。

来月には、過半数に達すると言われているからな。

(変異ウイルス“デルタ株” 感染力は1.78倍 都内でクラスターも:今朝も引用した記事)
https://www3.nhk.or.jp/news/html/20210610/k10013077751000.html

「これまでのデータからの試算ではあるものの、この変異ウイルスが日本国内で新型コロナウイルス全体に占める割合は、来月中旬には全体の半数を超えるという予測になったということです。」(今朝も引用した部分:手抜きかあ?)

この調子だと、あと10日では300人切り(週平均)はムリポではないか。

どころか、来週辺り、リバウンドしそうな雰囲気さえある。

浮沈子は、最近、プログラミングの学習にハマって知恵熱まで出し(CPUの限界で熱暴走かあ?)、それをいいことにフィットネスをサボりまくって晴耕雨読ならぬ晴読雨読状態だからいいけど、巷では人流が増えているようだ。

(“東京などすでに人出増加 感染再拡大の可能性”専門家)
https://www.nhk.or.jp/politics/articles/statement/61975.html

「東京などではすでに人出が増加していて、この傾向が続けば感染の再拡大の可能性があり、感染拡大を抑える対策を継続すべき」

「人出が増加し感染者の減少のスピードが鈍化している地域もあり今後、感染が再拡大する可能性も考えられる」

「首都圏の東京都、埼玉県、千葉県、神奈川県については関西と比べると感染者数が多い水準で減少のスピードも遅く、特に東京都では夜間、日中ともに人出が4週連続で増加し、緊急事態宣言が延長されてからの増加も目立っていて、このままの傾向が続くと感染が再拡大する可能性があるとして警戒を呼びかけています。」

当初、5月17日までと言われていた緊急事態宣言が5月末まで延長され、さらに6月20日まで再延長されて今日に至っているが、このまま8月一杯くらい、思い切って再々延長しといたほうがいいんじゃね?。

オリパラは、ロックダウンしていても開催すると言っているし、現在でもある程度観客も入れているスポーツ施設もあるわけだから、それを前提に絵面を整えて中継した映像をパブリックビューイングで、あまり密にならない程度に大勢で楽しめれば大成功だろう。

営業中止に応じなければ、訴訟覚悟でバンバン公表して反則金取ってな。

規制される方はたまらないだろうけど、オリンピックをネタに盛り上げたい連中がいる限り、人流は収まらない。

したがって、感染は拡大し、重症者は増え、医療はひっ迫する。

東京都の場合は、多くても重症者用確保病床数(373床)の5割程度(今日は51床:2割未満)に留まるだろうけど、周辺は簡単にパンクする恐れもあるからな。

春先に早過ぎるタイミングで解除して、慌ててまん延防止等重点措置を発動したけど、全然効き目無くて暴走したことを忘れてはなるまい。

アクセルとブレーキを同時に踏むという有り得ない感染防止対策を取っているわけで、ウィズコロナの時代に生きることの難しさを噛み締める。

人の命が掛かっているという自覚なんて、全くない。

アルファでもデルタでも、マスクしてたって、三密避けたって、罹るときゃ罹る。

高齢者のワクチン接種が一段落すれば、感染者がある程度増えても重症者は増えなくなると踏んでいるんだろうけど、そう上手くいくのか。

デルタの重症化率についての知見は今のところない。

元々、アルファが若い世代(50歳未満)の重症化を引き起こしているという話はあったからな。

現状のままリバウンドして、デルタが蔓延した時のインパクトは半端ないだろう。

もう、高齢者とか言っていないで、ありったけのワクチンを全年齢に渡って可及的速やかにぶち込むしかない。

世界最速の接種が必要だ。

浮沈子的には、空輸されてきたワクチンを、直ちに空港でうつのが手っ取り早い気がするんだがな。

広いし・・・。

まあ、どうでもいいんですが。

自治体のワクチン接種は、放っておけば来年まで終わらない。

高齢者だって、10月くらいを見込んでいたわけだから、それから重い腰を上げて一般接種に移るつもりだったんだろう。

浮沈子が棲息する東京都大田区では、今月末から一般への接種券郵送を始めるという(まだ調整中:60歳から64歳は黙っていても届くらしい:浮沈子はこれです:接種券の郵送は、6月22日以降と決まったようです:大田区のホームページより)。

今日も浮沈子の近所に広報車が来て、ワクチン接種が始まったから予約して欲しいと喚いていた。

もちろん、現在の対象は高齢者のみ(医療関係者は別途接種)。

一般の接種開始は、7月9日からとなっている(予約開始は7月7日から)。

(大田区新型コロナウイルス
ワクチン接種実施計画
(1.4版)
大田区健康政策部感染症対策課
新型コロナウイルスワクチン接種調整担当
令和3年6月3日
高齢者接種・高齢者に次ぐ優先接種対象者編)
https://www.city.ota.tokyo.jp/cyuumokujoho/infection/covid19_wakuchin/wakuchin.files/zissikeikaku.pdf

予約したら、直ぐうてるのか、副反応は大丈夫か、2度目の接種の方が強い副反応が出る可能性が高いと言われているが大丈夫か、免疫が付くまで(抗体産生されるまで)の間、身体に負担を掛けないようにしなければならないので、ダイビングや筋トレは控えた方がいいのではないか(DANヨーロッパでは、そういう話も)。

(COVID-19ワクチン接種後のダイビング:ガイドライン)
https://www.daneurope.org/en/-/diving-after-your-covid-19-vaccination-guidelines

「1.COVID-19のパンデミックをできるだけ早く封じ込めるか終わらせる必要性を考慮し、現時点では広範囲にわたるワクチン接種がこれを達成できる唯一の方法であると思われるため、すべての人にCOVID-19を接種することを強くお勧めします。ワクチンが利用可能になり次第、国のCOVID-19ワクチン展開計画に従ってワクチンを接種します。
2.ダイバーは、COVID-19ワクチンの各投与後、圧縮ガスまたは息止めダイビング活動に従事する前に、最低7日間の待機期間を検討する必要があります。
3.ダイバーの場合、この間隔を14日に延長することをお勧めします
a.ワクチン接種後に48時間以上持続する副作用があった人
b.以下のような個人の健康リスク要因を伴うが、これらに限定されない:
(1)過度の体重
(2)慢性代謝性疾患(糖尿病を含む)
(3)喫煙
(4)血栓塞栓症のリスクを高める可能性のある薬の使用(経口避妊薬を含む)
(5)または上記の任意の組み合わせ
c.特定の技術的スキルを必要とする、または減圧なしのレクリエーションダイビング(テクニカルダイビング、​​ディープ減圧ダイビング)の限界を超えているダイビングを実行したい人
4.COVID-19ワクチン接種の副作用がワクチン接種後48時間以上続く場合は、ダイバーは一般開業医に相談することをお勧めします。
5.COVID-19ワクチン接種後7日間に低リスクのダイビングを行った後、ダイビング疾患に関連する可能性のある症状が現れる場合は、ダイビング医学の専門家に相談することをお勧めします。私たちは、すべてのダイバーと地元のダイビング連盟および科学団体がそのような事件をDANヨーロッパ医療部門(medical@daneurope.org)に報告することをお勧めします。
6.COVID-19ワクチン接種は、SARS-CoV2ウイルスが他の人に感染する可能性を完全に防ぐわけではないため、ワクチン接種の有無にかかわらず、すべてのダイバーが保護措置(距離、マスク、衛生)を引き続き遵守する必要があります。」

「現時点では、副作用の重症度に対するダイビング条件の影響や、ダイビングの安全性に関するダイバーのパフォーマンスへの影響に関する証拠はありません。」

「最新バージョンについては、このページにアクセスし続けることをお勧めします。」

浮沈子は、複数該当があるので、接種後は2週間のダイビング自粛だな。

そもそも、ファイザー/ビオンテック(3週間間隔)が引き続き供給されるのか、モデルナ(4週間間隔)に切り替わるのか。

まあ、どっちでもいいんですが。

一般接種が始まれば、ワクチンをうつのかうたないのかという話も再燃するだろう。

浮沈子の周囲でも、ワクチンうたないという方はいる。

個人の選択だから、尊重されなければならないし、それによって差別されることがないようにしなければならない。

接種するしないは、完全に自由だ。

(若い男性の心筋炎が予想外に多発、ファイザーやモデルナ製ワクチン)
https://jp.reuters.com/article/health-coronavirus-vaccines-myocarditis-idJPKCN2DM20B

「16─24歳の若者のうち2回目の接種後に心筋炎を発症したのは283人で、予想の10─102人を大幅に超過。」

罹患した際のリスク要因がある浮沈子の場合、うたないという選択肢はない。

やれやれ・・・。

いろいろお誘いもあったけれど、今後、7月、8月にかけてのダイビングは、すべて不参加にしている。

2回目をうち終わって、2週間は大人しくしていないとな。

うち始める直前に罹患したりしたら、目も当てられないからな。

接種以前も自粛する。

東京ロックダウンが解除されても、不要不急の外出は避け、大人しくおうちでルビーでも弄っているのがいい。

多少(多少かあ?)コロナ太りしても、それは仕方がないと諦めて、ワクチン接種の自粛が明けたら、その分をせっせと取り戻すしかない。

うーん、我田引水(得意です!)・・・。

<以下追加>ーーーーーーーーーー

(Linux生みの親リーナス・トーバルズが反ワクチン派の主張に激怒、「予防接種を受けろ。反ワクチンの嘘を信じるのは止めろ」)
https://gigazine.net/news/20210611-linus-torvalds-rages-anti-vaccine/

「どこから間違った情報を得たとしても、Linuxカーネルメーリングリスト上ではあなたのばかげた戯言を私が見逃すことはない」

「どうしても気の狂った陰謀論を主張したいならば、少なくともLinuxカーネルメーリングリストでは黙ってろクソ野郎(SHUT THE HELL UP)」

いやあ、過激だなあ・・・。

変異種のことにも触れていて、よく勉強していることがうかがわれる。

リナックスカーネルのメーリングリストに投稿というのも場違いな感じだが、尻尾踏んじゃったみたいだな・・・。

<さらに追加>ーーーーーーーーーー

(続けてきた運動をやめてしまうと肉体はどれくらい早く衰えるのか?)
https://gigazine.net/news/20210612-how-quickly-unhealth-become-unfit/

標題に飛びついた割には、あまり参考にはならない。

「筋力に関して言えば、一般人は約12週間トレーニングしないと持ち上げられる重量が大幅に減少すると示されていますが、トレーニング前の強さをある程度は保持し続けられるという「マッスルメモリー(筋肉記憶)」と呼ばれる機能が肉体には備わっているため、基本的に筋トレは有意義とされています。」

「筋肉は激しいストレスを受けない状態が続くと筋繊維の本数自体が減少するだけでなく、運動に用いられる筋繊維の本数まで減ってしまうとのこと。長期間運動をしなかった場合は運動に用いられる筋繊維の本数がまず減るそうで、2週間トレーニングを行わなかった場合は運動時に使用される筋繊維の本数が13%低下するものの、筋肉量自体は減らないそうです。」

「健康になるためにあらゆる努力を行っても、運動をやめてから48時間以内に心血管系の能力と筋力が低下し始める。しかし、実感が出るまでには心血管系では2~3週間、筋力では6~10週間の猶予がある」

これを読んで、「6~10週間」筋トレさぼっても大丈夫だと安心してしまう浮沈子は、やっぱ我田引水?。