派遣事務員の迷走

派遣事務員コロ子。会社の犬。顔出しNG。常に迷走している。

Pythonでゲームを写経

こんにちは。
派犬事務員のコロ子です。

Pythonでゲーム

そろそろ何かそれっぽい物を作ってみたい。
基礎編、難しいところはすっ飛ばしてゲームコードを写経してみた。

洞窟の中をロケットが進むゲーム。
洞窟は色の付いた画面に、黒い長方形をループしながら位置と形を変えて追加していく。新しい長方形を追加したら最初の長方形を消す。
そうすることによって画面が動いているように見える。
全然分かんないけど、早くゲームで遊びたいから、取り急ぎ写経。

よし!できた!

ゲームスタート!

え!!!マジ!絶対ムリ!!


f:id:SNegishi:20200128220931g:plain


コードをよーく見てみると、間違ってる。
偶然できたバグが無理ゲー過ぎてビックリ!

実際にはこんな感じでどんどん洞窟が狭くなる。まっすぐ飛ぶのが結構難しい。

f:id:SNegishi:20200128224014g:plain
写経成功


今回覚えた事

Pythonの配列?(リストとかタプルとか)はインデックス番号を-1とすると、最後の要素が取れる。

test = [1,2,3,4,5]
print(test[1])
print(test[-1])

 ↓

2
5

便利!
なんかいっぱいコード書いたけど、はっきり理解できたのはこれくらい。
バグの原因はループのインデントが間違っていた。
ループを抜けるにはインデントを戻さないといけないけど、本だとインデントの位置が分かりにくくて、まだちょっと慣れない。

【Python】 for文に変数が複数!!

こんにちは。
派犬事務員のコロ子です。

先日、ノンプロ研のVBA中級講座とPython初級講座合同の卒業LT大会に行ってきた。「こんな事できるようになたよ!」と講座で学んだ事を発表する会。
どうやらPython初級講座を受けるとWebサイトのスクレイピングとかできるようになるらしい。
「初級講座なのにそんな事できるようになっちゃうの!?コロ子もやりたーい!!」
とLTを聞きながらテンション上がって、次回講座の仮予約を申し込んでみた。
VBA, GAS, Pythonで最少催行人数に最も早く達したコースのみ開講なので、みんな急いてPythonに申し込みするのだ!
    ↓
docs.google.com


でも一つ注意は、Python初級講座に全くの初心者はいないらしいから講座開設までに少しでも先に進めなければ・・・。
お正月休みから全く進んでない・・・。

今日の驚き

そんな訳で細々とPythonをやっていたら「for文に変数が複数」をいうコードに遭遇。

①for文に変数が2つ

for i, j in [(1, 2), (3, 4), (5, 6)]:
    print(i, j)

えっ!!!こんなのアリ!?
変数2個、どうやってループするんだろう?

実行結果

1 2
3 4
5 6

変数「i」と「j」に要素が一度に代入される。
f:id:SNegishi:20200113001155p:plain

凄い!驚き!VBAしか知らなかったから、最初なかなか受け入れられなかった。

ちなみにfor文に変数が一つ、これはなんとなく馴染みがあるので受け入れ可能。

for i in [(1, 2), (3, 4), (5, 6)]:
    print(i)

(実行結果)

(1, 2)
(3, 4)
(5, 6)

VBAでいうところのFor each文に似ている。
ちょっと違うけどVBAならこんな感じ。

Dim i As Variant
Dim Arr() As Variant

Arr = Array(1, 2, 3)

For Each i In Arr
    Debug.Print i
Next i

(実行結果)

1
2
3

配列から1つづつ要素を取り出してるところが似ている。

VBAは1つづつしか要素を取り出せないけど、Pythonは一度に複数の要素を取り出せるので便利!

ママ犬も迷走

こんにちは。
派犬事務員のコロ子です。

f:id:SNegishi:20200105203502p:plain
西の神社で勾玉をもらい、東の神社で袋をもらう


今日、ママ犬がコロ子の犬小屋に来た。
年末に「年が明けたら、アンタの小屋に行くから」と予告され「えーー!!来なくていいよ、何しにくるの??」と恐る恐る待つところにママ犬が来た。
(昔からママ犬は超怖い)

ママ犬「あんた、仕事してるの?」
コロ子「してます・・・」
ママ犬「何?バイト?パート?」
コロ子「派犬・・・」
ママ犬「それはいくつまで働けるの?」
コロ子「無期雇用契約しなかったから、いくつまでとかは特にない・・・」
ママ犬「そう。私もう年だし、そんなに長く生きられないと思うのよ」
いやー、それはない!自分勝手で気ままな、こういうタイプが一番長生きする。ババ犬もジジ犬も長生きだったし、結構な健康オタクだ。
ジジ犬なんて「オレはもう年だからそろそろ死ぬ」とかいいつつ、それから20年以上生きた。

ママ犬「それで死ぬ前に持っているお金全部使おうと思っているの」
終活ってやつ?お金余ってるの?
イヤイヤ、それはない。パパ犬がパチンコで全部使ってる。
昔からそれでさんざん喧嘩してた。
ママ犬「あんた、この先生きて行くのに、何か勉強して資格とか取った方がいいんじゃない?もし勉強するなら援助しようと思っているの」
えっ!マジで!!この年から親に援助してもらって取る資格って何?
コロ子「えっ!?アメリカに留学してMBAを取るとかそういうヤツ?」
ママ犬「そんなにはないわよ!!!」
ほら!やっぱりないじゃん。そもそもお金の問題以前に無理だし。
コロ子「じゃ、普通に大学とか大学院とか?でももう受験勉強とか嫌だし、卒業しても新卒枠で就職できるとも思えないんだけど」
ママ犬「そんなにもないわよ!」
コロ子「じゃぁ何?いくら?」
別に普通に現金くれてもいいんだけどーーー。
でも、ママ犬にお金貰ったらいろいろ面倒臭そう。
子供の頃はお小遣いの内訳を全部言わされていたし。
何億とかなら話は別だけど、それほどの額でもないのにこの先も絶対的な従属関係を取られるのはウンザリだ。
ママ犬「とにかく、何か勉強するなら考えてもいいと思っただけよ。じゃぁ。」
と1円も置かずに帰って行った。

ノンプロ研で勉強しているので大丈夫です。

Python始めました

明けましておめでとうございます。
派犬事務員のコロ子です。
本年もよろしくお願いいたします。

f:id:SNegishi:20200101174633p:plain
朝から飲んでます

今年の目標

去年のノンプロ研BT大会で「来年は他の言語に挑戦する」とか言ってしまったので、取り急ぎPythonに挑戦。
どこにも行かなくてヒマだからPythonじゃなくて、Pythonの為にどこにも行かないんだから!(強がってみる)

以前もちょこっとPythonに手を出して途中で挫折したので、今回は「ゲームを作りながら楽しく学べるPythonプログラミング」というので再挑戦。ゲームの方が楽しそう、という安易な考えでチョイス。

今日もハマった

pygameモジュールをインポートしてRectクラスとやらを使うところで今日はハマった。

import pygame

r= Rect(10,20,30,40)

エラーになるーーー。
この書き方ではダメらしい。

import pygame

r= pygame.Rect(10,20,30,40)

とするか、

from pygame.locals import Rect

r= Rect(10,20,30,40)

にすればOKだった。

import モジュール名
import pygameとするとpygameに定義されている全てのクラスや関数が使えるらしい。余計なものまでインポートされても、全部あるから用は足りる。でも使用する場合は必ず
pygame.Rect(10,20,30,40)のように、頭にモジュール名を付けなければいけない。

from モジュール名 import 関数/クラス/定数
from pygame.locals import Rect
だと、Rectクラスだけインポートされて
Rect(10,20,30,40)と書けばOK。

お正月早々、一日これにハマった。

ノンプロ研大BT大会が凄すぎる

こんにちは。
派犬事務員のコロ子です。

ノンプロ研メンバーで順番にブログを投稿するアドベントカレンダーに参加!
この記事は「ノンプロ研 Advent Calendar 2019」の21日目!

f:id:SNegishi:20191221133510p:plain
つまみ食い中

先日、コロ子が所属するノンプロ研(ノンプログラマーの為のスキルアップ研究会)の忘年会に行ってきた。忘年会というと、普通は居酒屋とかにみんなで集まってワイワイするのを思い浮かべるかもしれないけど、ノンプロ研のはちょっと違う。
ノンプロ研の忘年会は全員発表必須のLT(Lightning Talks)を、飲みながらするBT(Beer Talks)大会なのだ。
ということは、参加するにはBTをすることが必須になる。
最近ノンプロ研は100人くらいに人数が増えた。
去年のBT大会はほとんど知っている人だったけど、今年は「初めまして」の人もいっぱいいるはずだ。
これは悩む。

参加したい
  ↓
BTしたくない
  ↓
でも、参加したい
  ↓
BT緊張するからヤダ
  ↓
でも、やっぱり参加したい


と一通り葛藤した結果、参加する事にした。
コロ子のダメなところは、結局参加するのにうだうだ悩み、決意するまでに時間がかかるところだ。時間効率の面から言って最悪に近い。

ノンプロ研の素晴らしいところ①

最近は職場の忘年会には参加していない。忘年会だけでなく、飲み会の類には参加していない。
なぜかというと待たされるから。
ちょっと待たされるくらい大したことないじゃん、コロ子はせっかちだな~、と思うかもしれないけど、本当に毎回待たされる。
開始の時間に行っても派遣の人だけで、社員は一人も来ていない。さんざん待たされた挙句、若手の幹事の社員が来たところで始まるが、ほとんどの社員が来ていないので、大皿料理でも、焼き肉でも、鍋でも、まだ来ていない人の分を取り分けておかなければいけない。
最初は「忙しくて大変だな」とか「仕事終わらなくて気の毒だな」とか思っていたけど、これが必ず毎回となると、いちいち面倒くさいし、仕事の計画性を疑がわざるを得ない。(偉い人との飲み会には遅刻しないで参加しているからやればできる。ナメられてるだけかも)
もちろん、予想外のアクシデント、緊急事態などで遅れたり、来れなかったりする事もあると思う。
でも、必ず毎回。
たかが飲み会だとしても、約束の時間も守れないようじゃビジネスパーソン失格じゃない?と思っちゃうくらい時間にルーズ。まぁ、最近の世の中こんなものかも知れないけど。

しかし、
ノンプロ研の忘年会はちゃんと時間通りに始まる。
みんなちゃんと時間通りに来る。
みんな忙しいビジネスパーソンなのに!

これって凄い事だと思う。
去年のBT大会でもこれに驚いたし感動した。

ノンプロ研の素晴らしいところ②

BT大会当日、会場に着くとBTの発表順を決める「ノンプロ君ステッカー」を1枚選ぶ。くじ引きの要領でステッカーの裏に番号が書いてある。
なんとコロ子1番を引いてしまった。
「えっ!!?この1って何?コロ子1番なの???」
「やだよー!1番にやりたくないよーーーー!!!」
「もう一回くじ引きやり直していい??」
誰だって1番はイヤだと思うけど、普通の大人は受け入れるところ、子犬のコロ子はめちゃめちゃゴネる。
あまりにも「やだよー!!」とゴネまくっていたら、主催の高橋さんが
「私のと交換してあげますよ。でも、本当は交換とかもナシですよ。」
と言ってステッカーを交換してくれた。
でもそこには「2」と書いてあった。
「えっ!!2番? 大差ないよ~!!」
「1番よりいいでしょ。それに先に終わらせれば、後はみんなのBT楽しめますよ」
と言われ1番より2番の方が断然マシなので、ありがたく交換して頂いた。

BT大会が始まり、高橋さんが1番に登壇したところ
「あれ?1番コロ子じゃないの?」
ゴネまくっていたからコロ子が1番を引いたのはみんな知っている。
すると、高橋さん「いえいえ、諸事情があって変更したんですよ。
私の話す内容はノンプロ研についてなので、最初に話した方が良いと思って、1番の人にお願いして替えてもらったんですよ。」

高橋さん、超やさしい!
コロ子がゴネたから変えてあげた、とか言わずに「BT大会の流れを重視した」みたいな理由をさらりと言えるのが凄い。こういう人が上司だったら安心して仕事できるし、部下は100%のパフォーマンスが出せるだろう。こんな小さな出来事から高橋さんの器のデカさにコロ子感動。常に小さな気遣いができる高橋さんかだらこそ、ノンプロ研メンバーは安心して100%のパフォーマンスを出せる。
コロ子、今後はもっと大人の犬になろうと決意。

ノンプロ研の素晴らしいところ③

みんなプレゼン上手すぎるし、面白過ぎる。
持ち時間は一人5分で、発表のスタイル、内容は自由。パワーポイントやGoogleスライドで思い思いに発表する。中には資料なしで5分喋り切る全く新しいスタイルのプレゼンもあった。次から次へとどんどんいろんなプレゼンが出てきて、中だるみもなければ、途中で飽きる事も全くない。
もちろんコロ子みたいに下手でも問題はない。
コロ子のどうしょうもない駄ネタでも、聞く方がちゃんと拾ってくれる。プレゼンを盛り上げる「聞く方の技術」も半端ない。

伝説のBT!?

トリを務めたUSG氏、凄かった!
最後だけあっていい感じに酔いで出来上がっていた。
突然ゲイバーの話を始めて、いきなりの脱線、大丈夫か?と思いきや、こんなコード書けるようになったんだぜ!とちゃんとプログラミングのプレゼン。最後にはお気に入りのカッコイイプロシージャー名を披露して、大大大大盛り上がりだった。
初めから最後まで涙出るくらい笑いっぱなしの超飛ばしたプレゼンだった。
これぞBT!!こんな凄いの見た事ない!!
順番はくじ引きだったのに、このプレゼンが最後に来るなんて奇跡!

楽し過ぎてあっと言う間だった。

BT大会を終えて

5分のプレゼンの資料作りに迷走し、BT大会数日前から情緒不安定、当日は仕事も手に付かず、ガチガチに緊張してのプレゼンだった。もちろんアドリブは利かないので話すこと全てをPowerPointのノート機能に書き込み、ひたすら画面を見ながらノートを棒読み。それでも何度もつっかかり、ひどい有様だった。
そんなBT大会が終わり、肩の荷が下り脱力。
疲れ切ったコロ子とは裏腹にノンプロ研では、ファミプロ、もくもく会、BT大会東京2日目、(2日前には大阪のBT大会もあった)などイベント盛り沢山で活気に溢れている。ノンプロ研のメンバーはタフ過ぎる!

BT大会の他に、この「ノンプロ研 Advent Calendar 2019」もプレッシャーだったので、これが終わったら、「もぬけの殻」状態になりそう・・・。

来年はこれらをプレッシャーと感じないくらい、いろいろこなせるようになりたい。

f:id:SNegishi:20191221160739p:plain
冷蔵庫じゃなくてパソコンに貼ったよ

パーフェクトExcel VBA 購入

こんにちは。
派犬事務員のコロ子です。

11月25日発売のパーフェクトExcel VBA(高橋宣成さん著)をついに購入。
11月25日は平日だったり、仕事が急に忙しくなったりと仕事帰りに本屋さんに行くことができずに、世間の「買った~!」からちょっと乗り遅れて購入した。

f:id:SNegishi:20191201132411p:plain
3,280円+税 大きな買い物に満足

地元で一番大きいと思われる本屋さんに行くと、Excelのコーナーに1冊だけ置いてあった。ラス1なのか、もともと1冊なのか分からないけど、「最後の1冊買っちゃって悪いなぁ、でもあって良かった!」とコロ子が頂いた。

すっかり気をよくして、ちょっと別の場所あるに本屋さんも見てみようかという気になる。でも、「あったところでどうするんだろう、もう一冊は買えないよなぁ」とぼんやり考える。
世間には1冊は家用、もう1冊は会社用、さらにKindleで持ち歩き用と複数冊購入する強者もいるらしい。
いや~、コロ子にはそんなお金ないから無理、無理。
いや、ちょっと待てよ、もう1冊買って高橋さんにサイン貰って転売って方法もある。
いやいや、いくら貧乏でもさすがにそれはないよ~、自分の分だけで満足しよう。

勝手に書評してみる

全575ページ、800g、ボリュームからして、これを全部マスターできればパーフェクトになれることは間違いなさそうだ。
コロ子もVBAの本は何冊か持っているけど、どちらかというと「技」的な方法が載っているもので、「こういう事やりたいんだけど何かいい方法ないかなー」、というときにパラパラめくる感じで使っている。
そうなるとネットで検索した方が速いので、結局ネット検索で見つけた物をコピペして使っている。意味が分からなくても動けばいい。多分、ほとんどのノンプロVBAerはこんな感じなのではないだろうか。
そんなVBAerにこの「パーフェクトExcel VBA」はうってつけだ。
まず、最初から飛ばさずに順番に読むように促されている。
VBAという物を理解するためには、構造と体系を理解しなくてはいけない。
最初から読み進めることにより、いつも意識しないでなんとなく書いているコードの体系が分かるようになる。
またPropertyプロシージャや、各種モジュールの役割、ライブラリなど、知ってるようで知らない事が詳しく説明されている。
もちろん、今まで見たことも聞いた事もない、全く初めての物に出会うことも多々ある。
ネット検索は知らなければできないので、この1冊に一通り目を通せば、「本」+「ネット」の鬼に金棒になるのではないかと思う。


よしよし、偉そうな事が書けたぞ。
いかにも「パーフェクトExcel VBA」読破したような口ぶり。

すみません、まだ全部読めていません・・・(汗)。
発売前に全部読み終わって自慢しまくるつもりだったのに。
間に合わなかったので購入しました・・・。

でも、持っていて絶対に損はない1冊だと思う。
内容はかなりヘビーで濃いめ、サクサク読めないから覚悟して挑んで欲しい。

ちなみに
こんな分厚い本読めるかー!という人は
高橋さんが講師を務める
ノンプロ研中級講座【VBAコース】で習ってしまおう。
現在第1回目だけど、きっと第2回目もあるハズ。
来年以降のいつも隣にITのお仕事 | 毎日の業務が楽チンに!は要チェック!
(現在コロ子がTAをしているよ!)

VBA ExcelからWordを立ち上げてWordが前面に来る方法

こんにちは。
派犬事務員のコロ子です。

タカハシノリアキさん著
「パーフェクトExcelVBA」が11月25日に発売
される。

なんと、ノンプロ研メンバーは発売前の草稿の状態から読めるという超お得な特権がある。
にもかかわらず「本が発売されたら読めばいいや~、PDFより紙の方が読み安いし」となかなか読み始めなかった。
ノンプロ研中級講座【VBAコース】のTAをすることになって、10月頃から慌てて読み始めた。(遅すぎ)

内容はかなり濃いめで、これからVBAを始める人よりある程度かじっている人向け。コロ子のようにずっと独学で自分勝手に解釈しながら勘違いしまくってる人にはすごく為になる。
しかしヘビー過ぎるところもあってなかなか進まない。
先日、VBA講座を受講している方から「これはパーフェクトExcelVBAの〇〇ページに書いてある事ですか?」とまだ読んでないところを質問され、おかげでスピードアップした。
あともうちょっとだ。
発売前に全部読んで、世間にマウントを取るのだ!

・・理想のマウント会話・・
「え?パーフェクトExcelVBA?それならもう読んだよ。すごくいいよね~」
(ちっちゃいヤツ(犬)だなぁ。)


そんな訳でパーフェクトExcelVBAを読んでいて、
「やり方わからないからまぁいいや」とずーっとほったらかしにしていた所が解決したので、メモっておこう。

アプリケーションを前面にする

この記事のタイトルを
VBA ExcelからWordを立ち上げてWordが前面に来る方法」
としたけど、要は「アプリケーションを前面にする」ということで、この「アプリケーションを前面にする」というワードが思いつかなくて、調べようにも検索がヒットせずに敗北した。

下記コードでExcelからWord「テスト.docx」を立ち上げる

Sub OpenWord()

Dim wd As Object
Dim wdoc As Object
 
Set wd = CreateObject("Word.Application")
wd.Visible = True
 
'テスト.docxを開く
Set wdoc = wd.Documents.Open("D:\ブログ\テスト.docx")

   ↓
f:id:SNegishi:20191110181421p:plain

パソコン下のタスクバーにWordのアイコンが表示される。
でもExcelが前面のまま。


AppActivateで前面にできる

【構文】AppActivate title、[ wait ]

title 必須。 アクティブ化するアプリケーション ウィンドウのタイトル バーに表示されるタイトルを指定する 文字列型 (String) の式です。 Shell 関数から返されるタスク ID を title の代わりに使用してアプリケーションをアクティブ化することもできます。
(Office デベロッパーセンターより)


Shellで立ち上げたのではないのでIDはない。
「タイトル バーに表示されるタイトル」
っていったいどこだろう・・・?


いろいろ試した結果

f:id:SNegishi:20191110190403p:plain

ワードの上に表示されている名前だった。

ちなみにコロ子はWord2016を使っているけど、会社のパソコンは2010で表示が違う。

f:id:SNegishi:20191110190432p:plain

バージョンによって表示が違うので注意。

Word2016:ファイル名 - Word
Word2010:拡張子付きファイル名 - Microsoft Word

この先、バージョンによって表示が変わる可能性があるので、念のためエラー処理を入れておこう。

Sub OpenWord()

Dim wd As Object
Dim wdoc As Object
 
Set wd = CreateObject("Word.Application")
wd.Visible = True
 
'テスト.docxを開く
Set wdoc = wd.Documents.Open("D:\ブログ\テスト.docx")

'Wordを前面に
On Error Resume Next
Call AppActivate("テスト - Word")

ちなみに、
wd.Visible = Trueをwd.Visible = Falseにしてみたら
Wordファイルは立ち上がっているのに「どこにも表示されていない」という困った状況になる。閉じ方が面倒なので注意。