JIKOKENNJIYOKU-NIKKI【21st Century】

明日から本気出すわ。

ダイエットとしての筋トレ継続中

昨年11月くらいからかなー

ダイエットを兼ねて筋トレを始めまして。

筋トレと並行してジョギングでもすれば、効率よくダイエットできるんでしょうけども、ね。寒いしね、冬は。

 

という自分への言い訳をかまして、筋トレをしこしこ続けてきたわけ。

 

63-64kgあったら体重が、今じゃ58-59kgで安定っすわ。

さっきジョギングしてきてから体重計のったら57.1kgだったわ。

 

筋トレ参考にしてる本があって、それがこれ。

プリズナートレーニング 圧倒的な強さを手に入れる究極の自重筋トレ

プリズナートレーニング 圧倒的な強さを手に入れる究極の自重筋トレ

 

 

それまでは腹筋やスクワットとか体幹と下半身ばかりで、上半身はまったくやってなかったのね。

 

でも、この本を参考にしながら毎日少しずつ筋トレを続けてみたところ、ある日突然見たこともない筋肉がついてるわけですよ。あらまあ。

 

そうなってくるとおもしろくなっちゃいまして、筋トレの難易度もステップアップさせていきまして、先日、ついに懸垂やるためにAmazonでポチっちゃいました。

 

 

 

ヤバイの、これ。

チョー楽しい。

肩周りにガッツリ負荷がかかってるのを実感できて、「オレ、筋トレやってる感」が半端ないっす。

 

調子にのって今日長めにジョギングしたら、めっちゃ疲れて、歳なんだから無理しちゃダメだなーと。

 

で、今日は走り終えたあとにザバスのこれ飲んでみました。

 

f:id:at251:20190519165535j:image

 

こないだ買い物に行ったときに見かけて、購入したんだわ。ココア味とかもあったけど、まずは飲みやすそうなヨーグルト味をチョイスしてみました。

 

(ザバス)ミルクプロテイン|株式会社 明治

 

感想としては、めっちゃ飲みやすい。

値段も150円前後なので手頃でした。

また買って飲んでみようか、プロテインをまとめ買いしようか迷い中。

 

……つか、本来ダイエット目的だからプロテインまでは要らんか。

 

 

また将棋道場にいってきた

6局くらいやって全敗しました。

飛車捌けない。序盤で飛車をいじめられて狭くなって負ける。これの繰り返しでしたー

 

一段目に龍をつくって相手の香車とったら、二筋の相手側角頭めがけて香車をって手筋を習った。

 

あとは序盤の飛車捌くまでの差し方の一例をレクチャーしてもらいました。

 

ぜんぜわ強くならねーなー

将棋道場に行ってきたでござる。

将棋仲間に道場に連れて行ってもらいました。

 

最初の二局は彼と指しまして、一勝一敗。これまで十数局指して全敗でしたが、なんと初勝利できました。

 

その後は手合いつけてもらって小学生やおじさんと指しまして、、、全敗しました(笑)

 

おじさんとの対局では、完全に私の勝勢から、頭がぼーっとしたまま指していってしまった終盤に自玉が頓死しまして、大逆転を喫しました。。

 

小学生にはボコボコにされちゃいまして、攻めすぎて駒損しすぎ! もっと守りに手を入れるべき! って感想戦でご指導いただきました。。

ほんと、そのとおりだわ。

 

で、なんとその道場で中学時代の同級生に偶然再会しまして。

彼は三段の段位者でして、一局教わりましたが、完全に負かされました。

でも楽しかった!!

また機会つくっていきたい。

リカちゃん人形は意図的に苦い味をつけている

子どもが誤って飲み込んでも、自然と吐き出してしまうようにしているんですって。

 

理屈じゃなくて仕掛けとして素晴らしいですね。

フルグラ 糖質オフがうますぎて俺の人生が捗る件

朝食にシリアルとか大嫌いでした。

 

なんであんなお菓子みたいなものを朝食にしなきゃならんのだ、と。

食べた気しないし。

 

ところで、うちの家族は私に無関心です。

なので、何が好みか、何が嫌いかということを把握されていません。

そんなわけで、先日朝食にカルビーのフルグラ糖質オフが準備されていたんですよ。

 

フルグラ® 糖質オフ | 商品一覧 | フルグラ® | カルビー株式会社

 

第一印象は最悪でしたね。

「朝からシリアルかよ! やってられねー!」って。

 

でもまあ、準備してくれていたものを貶めたり、勝手にハンガーストライキしたところで結果は見えているじゃないですか。朝だけに。いや、朝関係ないけれども。

 

そんな文句をしまいこんで食べてみたんですよね。

そしたら、うん。悪くない。

噛みごたえあるし、食べた感が満たされる。ほどよい甘さでうまい。

 

そんなフルグラ糖質オフ朝食生活が3日続いたところで、完全にフルグラ糖質オフ信者になりました。はい。

 

もうね、前の晩から朝食が楽しみすぎて眠れないくらいです。

そのくらい興奮して眠れないので、寝起きの機嫌の悪さはマックスです。

でもね、フルグラ糖質オフを食べるとそんなことどーでもよくなるんですよ。

 

もうフルグラ糖質オフなしでは生きていけない。

そんなところまで来てしまいました。

 

そんな私、先日スーパーでフルグラが安く売っているのを発見!

興奮して家族に「おい、めっちゃ安くなってるぞ! めっちゃ安くなってるぞ!」とフルグラを持っていったところ、

 

 

「それ、糖質オフじゃないやつだわ」

 

 

フルグラ糖質オフ、最高です!!

 

プログラミング初心者のおっさんが事務作業をほぼ自動化できた話。

 

昨日、プログラミング初心者のおっさんが事務作業を半自動化できた話を書きました。

 

at251.hatenablog.com

 

で、今日、ほぼ自動化することに成功しました(笑)

 

ほぼ自動化の妨げとなっていたのは、なんだったのか。

 

① 転記元の書類が「派遣リスト(.xlsx)」

② 転記先の書類が「報告書(.xlsx)」

となってまして。

 

具体的に言いますと、①から②にデータを転記するときに、

①の4列目と6列目が②に不要なデータだったんですね~。

 

でも、その不要なデータたちがくっついてきちゃうから、手作業で列を削除しなくちゃだったわけですよ。

かっこわりー。

 

で、頭の中でああでもない、こうでもないって考えていたんですわ。

昨日の日記ではpandas関数のdropを用いれば、、、みたいなことを書いていたんですが、

そもそも、openpyxlでコードが書かれていたので、pandasじゃねーな、と。

 

note.nkmk.me

 

ちょっと調べてみたら、自分がやりたいことは、openpyxlの方が実現できそうなこともわかったので、このまま続行することに。

 

じゃあ、どーすっかなー、とかんがえてみました。

元々のコードが以下になります。


import openpyxl, pprint


file_list = "test_original_list.xlsx" # 転記元の派遣一覧
file_report = "reportlist.xlsx" # 報告書のテンプレート
file_out_report = "out-report.xlsx" # 生成する報告書ファイル

# 転記元の派遣一覧を読み込む
wb = openpyxl.load_workbook(file_list,data_only=True)
ws = wb["schedule"] # scheduleのシートを選択

 

# 報告書のテンプレートを読みこむ
wb_rp = openpyxl.load_workbook(file_report)
ws_rp = wb_rp.active

list_data = ws["C4:M200"] # 任意の範囲を取得

 

# 派遣情報を書き込む
for y, row in enumerate(list_data):
for x, cell in enumerate(row):
if(cell is None) or (cell.value is None):continue
v = cell.value
ws_rp.cell(row=3+y+1, column=0+x+1, value=v)

 

# 新しく保存する
wb_rp.save(file_out_report)
print("ok")

 

以上。

これを実行すると、out-reportという報告書ファイルが作成されるんですが、

さきほど言った通り、列を手作業で削除しなくてはならない。

 

そうだ、転記元の派遣一覧を読み込むときに、不要な列(4列目と6列目)を削除しちゃえばいいんじゃね?

それには繰り返し処理のwhileが使えるんじゃね?

 

で、以下のようにコードを追記してみました(赤字部分)。

※ 転記先の様式「reportlist.xlsx」もあわせて編集したけどそこの作業については省略。


import openpyxl, pprint


file_list = "test_original_list.xlsx" # 転記元の派遣一覧
file_report = "reportlist.xlsx" # 報告書のテンプレート
file_out_report = "out-report.xlsx" # 生成する報告書ファイル

 

# 転記元の派遣一覧を読み込む
wb = openpyxl.load_workbook(file_list,data_only=True)
ws = wb["schedule"] # scheduleのシートを選択

 

# 繰り返し処理で不要な列(元々の4列目(月)と6列目(時間)を削除)
i=4
while i <= 6:
ws.delete_cols(i)
i += 2
list_data = ws["C4:M200"] # 任意の範囲を取得

 

# 報告書のテンプレートを読みこむ
wb_rp = openpyxl.load_workbook(file_report)
ws_rp = wb_rp.active

 

# 派遣情報を書き込む
for y, row in enumerate(list_data):
for x, cell in enumerate(row):
if(cell is None) or (cell.value is None):continue
v = cell.value
ws_rp.cell(row=3+y+1, column=0+x+1, value=v)

 

# 新しく保存する
wb_rp.save(file_out_report)
print("ok")

 

すると、4列目はうまく削除できたのに、6列目は残ってしまい元の7列目が削除されてしまいました。

原因は、繰り返し処理のときの2回目にあるな、と。

【1回目】

i=4        # iを初期化して4を代入
while i <= 6:    # iが6以下であれば、以下の作業を繰り返す
ws.delete_cols(i)    # i列を削除します!
i += 2         # iに2を足してwhile 条件式( i <= 6 )に戻るぜ!

 

【2回目】

i=6        # iは4に2を足して6になたよ~
while i <= 6:    # iが6以下だから、以下の作業を繰り返すよ~
ws.delete_cols(i)    # i列、つまり6列目を削除するよ~!

          # ↑【1回目】で、4列目が削除されたあとなので

          # 元の7列目(現6列目)が削除されてしまった。
i += 2         # iに2を足してwhile 条件式に戻るぜ!

 

→戻ったら i=8だから繰り返し処理を終わるぜ!

 

なので、修正しました。削除したい元の6列目は2回目の処理では5列目になっているはず。

なので、i = 4で繰り返し処理を開始して、i = 5で処理を終えれば良いのでは?

 

繰り返し処理とlist_dateの取得範囲を微調整(2列削除したので範囲も2列分減らした)(赤字部分

import openpyxl, pprint


file_list = "test_original_list.xlsx" # 転記元の派遣一覧
file_report = "reportlist.xlsx" # 報告書のテンプレート
file_out_report = "out-report.xlsx" # 生成する報告書ファイル

 

# 転記元の派遣一覧を読み込む
wb = openpyxl.load_workbook(file_list,data_only=True)
ws = wb["schedule"] # scheduleのシートを選択

 

# 繰り返し処理で不要な列(元々の4列目(月)と6列目(時間)を削除)
i=4
while i <= 5:
ws.delete_cols(i)
i += 1
list_data = ws["C4:K200"] # 任意の範囲を取得

 

# 報告書のテンプレートを読みこむ
wb_rp = openpyxl.load_workbook(file_report)
ws_rp = wb_rp.active

 

# 派遣情報を書き込む
for y, row in enumerate(list_data):
for x, cell in enumerate(row):
if(cell is None) or (cell.value is None):continue
v = cell.value
ws_rp.cell(row=3+y+1, column=0+x+1, value=v)

 

# 新しく保存する
wb_rp.save(file_out_report)
print("ok")

 

そうしたら、ちゃんと動きました!

スッキリしたわ~

プログラミング初心者のおっさんが事務作業を(半)自動化できた話。

プログラミング初心者のおっさんが事務作業を半自動化できた話をします。

 

白衣の土方である理学療法士として業務をしている私ですが、

意外と事務作業が多いんですわ。

運動指導だけやってるわけじゃないのね。

 

事務作業の中で、3か月に1回ルーチンでやってる報告書作成作業(エクセルファイル)があるのね。

これがホントめんどくさい。つか、時間の無駄遣い感がすごかったの。

 

とある事業の調整役を私が担当しているんです。

その事業で人を派遣する調整をして、その仕事の一環で派遣リストをつくってるのね。

派遣リストには、派遣する日時、依頼元、派遣される担当者、場所、住所、実施内容、実施対象とかが記載されてるんす。

それをGoogleスプレッドシートで派遣される人たちにも共有してるんですわ。

 

んで、その報告を3か月に1回、100件は行かないけど、数十件分、上記の項目を報告書に転記して提出するんだよね。

これがチョー面倒。

Googleスプレッドシートみて、報告書に転記して、それとは別に内容に誤りがないか、派遣申し込み書って書類の内容と照らし合わせたりなんかして。

 

まったく生産性がなく、ただただ時間がかかる作業となっており、

正直「これって俺じゃなくてもできるよな、つか時間を無駄にしてる感じすげーな」って感じてました。

 

そんな折、こんな本を見つけまして。

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 

なるほど。Pythonってプログラミング言語を使えば、作業を自動化できるんだな、と(←単純)。

 

よし、やろう! となりまして、Pythonで作業を半自動化して今に至ります。

 

おわり。

 

 

 

といわず、ちょっと経過を書かせていただきますと、

まず、プログラミングで作業を自動化するのに必要なことを考えました。

そして、次の作業がおそらく必要だなということになりました。

 

① 報告書のエクセルファイルに転記するPythonのコードを探してくる

② ①のコードを自分の作業用に書き換える

③ ②を実現するためには、派遣リストをGoogleスプレッドシートから.xlsxに変換する必要がありそう

④ ②を実現するため、派遣リストと報告書の記載項目を合わせる必要もありそう

⑤ 報告書に派遣リストの不要な項目も転記されそうだから、それら項目を削除する

 

みたいな。

 

①は注文製品リストから請求書、納品書を作成するコードを見つけたので、

そのコードを改変してみようと。

 

②については、私はプログラミング初心者、ましてやPythonのコードなんて書いたこともないので、ググりながらコードの意味を理解して、変数名を置き換えたり、不要なコードを削除したりしてみました。そしたら、できた(笑)

 

③は、すぐにできた。

 

④は、既存の派遣リスト項目の並び順序とか内容を報告書に倣って整理しました。報告書には記載する必要がないけど、派遣リストには記録しておきたい項目なんかもあったので、それらは残しておきました。

 

⑤が問題で、④で派遣リストには記載があるけど、報告書には不要な項目が2つあったのね。たとえば、派遣リストにはA~Gの7項目の記載があるけど、報告書にはA,C,D,F,Gの5項目しか要らないって感じ。

どちらの項目も内容と並び順序が完全一致していたら②で改変したコードでそのまま転記して作業完了! ってなるところだったんですが……

 

まあ、とりあえず③、④を踏まえて②で書き換えたコードはできまして、作業の半自動化はできました。あとは手動で報告書中のエクセルの2列を削除すればいいだけ。

でも、それは悔しいので、なんとか全自動化させたいね。

さっき調べたら、pandas関数のdrop使えば、全自動化に一歩近づけそうな感じがしました。

 

そんな感じです。

 

コードいじってて感じたこととしては、2つあります。

● プログラミングを覚えるなら、なんか目的ないと俺の場合ムリ。

● コード書けるようになるには、写経しまくらなきゃ俺の場合ムリ。

 

ヒマをみて、少しずつ勉強を続けてみます。

 

あとは、

PythonとRって統計解析にはどっちが有利なの? ってのを調べた話とか、

Pythonの勉強してるとか、何の本読んだとか、どこのサイトで勉強してるとか、

Excelの関数エラー見つけるのとPythonのコードのエラー見つけるのとかめっちゃテンションがあがることとか、って話は今度する。

覚えてたら、というか気分がのったら。

たぶん、のらないな(笑)