タグ: hiroshima

  • ふりかえり 2020年夏

    2020年3月ごろから現在までの活動と、今後の予定をまとめます。暑中お見舞い、残暑お見舞いに書くような近況報告だと思ってお読みいただければ幸いです。

    2020年3月

    ためま株式会社(ためまっぷプロジェクト)に参加。現在も技術チームのお手伝いをしています。並行して自分の会社の活動も続けています。

    「すごい広島 with Python」で Flask と DynamoDB という話をしました。主に Flask でフォームを使う方法の紹介でした。

    NVDA日本語チームとして「いまこそ NVDA で始める Windows」というイベントをオンライン開催しました。

    2020年4月

    ポッドキャスト terapyon channel #11 にゲスト出演して PyCon mini Hiroshima や NVDA 日本語チームの活動についてお話しました。

    「すごい広島 with Python」で3月にしゃべり切れなかった DynamoDB (AWS)の話をしました。

    2020年4月

    ドッグトレーナーさんに自宅に来ていただいて、犬のしつけを教えてもらう、ということを始めました。1か月に3回か4回くらいのペースでいままで続けてきました。現在も回数は減らしていますが、勉強を続けています。許可をいただいて、毎回、ボイスレコーダーで録音して、あとで書き起こして復習をしています。

    世界は新型コロナウィルス感染拡大の第一波で、国際政治学者のイアン・ブレマーさんが ETV の番組などで「犬は重要だ、犬を飼うべきだ」と主張して(ちょっとだけ)話題になりました。

    このころから、私はコワーキングスペースに通うこともほとんどなくなり、フルリモート、テレワークの生活になりました。

    犬の散歩は、飼い主が体を動かす貴重な機会でもあります。

    特に、人と人が接触を避けるようになっている現状において、犬は、人が何かを教えたり教わったりする身近な対象として、真剣に向き合うべきパートナーだということにも気づかされます。

    2020年5月

    ドッグトレーナーを描いたコミック「DOG SIGNAL」 を読み始めました。(8月に第4巻も出ました)

    2020年6月

    「すごい広島 with Python」で「アンナほえたワンを集計してみた」という話をしました。実はドッグトレーニングの効果がちょっと出てきて、吠える回数が減りはじめた、というタイミングでしたが。。

    アンナほえたワンを集計してみた 資料

    そんなある日、子猫がやってきた。

    「こんにちはPython」読書会を始めたころは、保護したばかりの赤ちゃん猫が鳴き続ける、それに反応してアンナが吠える、大騒ぎでした。

    子猫の「ハコ」と仲良くしてもらうために、愛犬アンナのトレーニング、今もいろいろ頑張っています。

    2020年7月

    広島のパソコンボランティア団体による講習会「NVDA で Zoom を使う」の講師を担当しました。

    Zoom 講習会 資料

    NVDA日本語チームとして「いまこそ NVDA で始める Windows 第2回」をオンライン開催しました。

    「こんにちはPython」読書会を7月末にも開催しました。その予習として tkinter について調べたので、この話は「すごい広島 with Python」のネタにしました。

    tkinter 資料

    PyCon mini Hiroshima 2020 を10月10日にオンライン開催することになり、告知を始めました。

    画像 PyCon mini Hiroshima 2020 つながろう Python 2020年10月10日(土曜)

    2020年8月 これから

    PyCon JP 2020 が8月28日・29日にオンライン開催されます。広島で Python イベントを続けてきたメンバー4人で「広島における地域 Python コミュニティの立ち上げ方と続け方」と題して登壇します。

    PyCon mini Hiroshima 2020 のトーク募集締め切りは8月31日の予定です。

    このほかにも、秋、年末、来年に向けて、オンラインイベントの運営やサポートに関わることになりそうです。

    テレワークやオンラインイベントなどで「自宅から出なくても忙しい日々」は続きます。

  • Hello Python 第2回

    ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython (すがや みつる 著)を読んで、プログラミングを勉強してゲームを作ろう、というオンライン勉強会、第2回の記録です。ゲストは第1回と同じ高校生(男子)、見学者1名でした。

    前回は7章まで読んでいましたね?

    >8章 tkinter で GUI プログラミング。読みましたが、紹介されたプログラムが長かったので、読んだだけで、入力して試したわけではないです。

    読んでいて疑問はある? tkinter (「ティーケーインター」と私は読んでいます)は Python に最初から入っていて、追加のインストールをしなくてよいのは利点だけど、わかりにくい点もある。

    >169ページのアクティビティ図、マウスの動きの確認、マウスのポインターの位置を調べる、これは何のために?

    ラケットを動かすところでマウスポインターのx座標を使っている。

    プログラムを著者のサイトからダウンロードして実行してみたら、何をやっているか、わかりやすくなる。

    >ダウンロードしたファイルをダブルクリックしたら、すぐに動いた。

    IDLE を開いて、File / Open から、ダウンロードしたプログラムを開いて、F5 で実行すれば、自分で入力した雰囲気に近くなる。

    ちなみに「まんが版こんにちは Python エラー情報」というページもある。

    >質問。次に読むとよさそうな Python の入門書を知りたい。

    Amazon を検索して画面共有しながら。。

    私が読んでない本や、旧版しか読んでない本もあるので、参考になれば、ということで。。

    最後の「Pythonチュートリアル」は Pythonエンジニア認定基礎試験の出題範囲とのこと。

    >2冊くらい選んで読んでみます。ところで、Python Boot Camp テキストを読むとよい、と言われましたが、まだ読んでいません。

    じゃあ、それも関係あるので、ここから私の準備してきた話題を。。

    「こんにちはPython」で紹介されている tkinter は公式ドキュメントにも説明がある。

    だけど、この説明は「Tcl/Tkドキュメント」と合わせて読まないと、詳しいことがわからない。

    もともと Python とは別のシステムとして作られていたものを「Python からも」使えるようにしたものが tkinter だから。

    公式ドキュメントの中ほどに、「簡単な Hello World プログラム」という例がある。コピーペーストして、自分のマシンで実行してみよう。ほら。。

    import tkinter as tk
    
    class Application(tk.Frame):
        (中略)
    
    root = tk.Tk()
    app = Application(master=root)
    app.mainloop()

    まず「こんにちはPython」とこの例は tkinter を「インポート」する方法が違う。

    • from tkinter import * を使うと、そのあと Tk() や Canvas() などがそのまま書ける
    • import tkinter as tk のように書くと、tk.Tk() や tk.Canvas() のように、先頭に tk. をつけて「モジュールの中身」を使えるようになる

    次に、この例では class Application というのが使われている。文字通り「クラス」を使っている。公式ドキュメントの例だから、ということで、クラスを使う理由や目的に深入りはしない。

    このプログラムは、上から順番に実行されるのではなく、最後の3行が最初に実行されて、Application(master=root) のところで、字下げされた前半部分が実行されている。

    私が書いてみたのは「まわり将棋」のプログラム。ソースコードはこちらの mawari.py

    • 全体の構造は「簡単な Hello World プログラム」に合わせている。
    • master という用語を root に置き換えている
    • tkinter の Canvas で「9x9」の盤と、「歩」という文字を表示している
    • Canvas の上の「歩」という文字は “player” という「タグ」をつけていて、表示した後で、場所やテキストを変更している
    • Label でメッセージを表示
    • Button で「金将を投げる」という操作をさせている
    • ボタンが押されたら button_pressed という関数(正式にはメソッド)を実行する
    • scores = [0, 0, 0, 0] は「要素が4個のリスト」を作っている。リストを作ると要素の数だけ処理を繰り返したり、加工したり、合計したり、ということが簡単にできる。リストというのは Python Boot Camp テキストで紹介されている「コレクション」の一種。
    • calc_score() は random.choice メソッドを使って、ある確率である値が得られるようにしている
    • set_player_pos(), set_player_text(), set_message() の各メソッドは、プログラムを読みやすくするために、簡単な処理に、あえて名前を付けようと思って作った
    • 必要な変数をクラスの中に固めている。だからこのプログラムには global が出てこない

    実行してみるとこんな感じ。

    まわり将棋の画面キャプチャー

    駒が進むときに、1歩ずつ動いてほしいけど、一度にまとめて動いちゃうね。

    これを改善するためには「時間が経過したらなにかを実行する」という処理が必要。スカッシュゲームですでに使われているテクニックだけど、こちらに組み込むのは、次のステップの課題にしよう。。

    何か詳しく聞きたいことは?

    >たぶん大丈夫

    画面に何かを表示して動かすプログラムの「型」を紹介したかった。必要なものは最初から全部出しておいて、動かす操作だけをやっている。

    この後はなにをやってみたい?難しすぎることを目指すと大変だけど。。

    >簡単に作れるゲーム、それから、何か役に立つものを。。

    じゃあ、また次回までに相談しましょう。

    (終わり)

  • こんにちは「こんにちはPython」

    ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython (すがや みつる 著)を、プログラミングの勉強を始めたいという高校生(男子)に勧めたところ、さっそく読んでいるとのことだったので、オンラインで感想を聞いて、いくつかアドバイスをしました。

    どこまで読みましたか?

    >第7章(テキストベースのゲーム)の終わりまで。

    なにかわからなかったこと、聞きたいことありますか?

    >”You Win” とか “hantei” とか “while” とか、いろんな記述が出てきたけど、何がどう違うのか?

    “You Win” みたいなのは、命令そのものではなく、例えば print という命令に与える値。

    hantei みたいなのは、変数につけられた名前。プログラムを作る人が自由につけることができる。でも、変数に自由に使えない名前もある。

    while みたいなのが、変数に自由に使えない名前。予約語といって、これはPythonの文法で決められている。この本の51ページには予約語の一覧も、Python で予約語の一覧を出す方法も書かれている。(入門書でこれに触れている本は貴重!)

    ところで予約語に似ているけどちょっと違うのが、たとえば乱数で使う random というキーワード。使うときには random.randint() のように出てくる。

    これは Python の予約語ではなくて、このプログラムの一番最初で import random という命令を使って、これから使うよという手続きをした場合だけ使える。

    Python に入っている(追加のインストールは必要ない)けれど、Python の文法ではない(予約語ではない)というもの(標準ライブラリ)は、random の他にもたくさんある。

    ところで、次に作ってみたいものを何か思いついた?

    >画像を出したり動かしたり。。

    それは第8章(Tkinterを使ったGUIゲーム)を読んでからのほうがいいですね。テキスト表示でできそうなことで何かやってみたいことは?

    >(作りたいものを答えてもらった)

    なるほど。たしかに作れそう。でも、そのためには、もうちょっと Python の機能を知ったほうがよさそうです。例えばトランプゲームを作りたいときに、この本の知識だけだと、カードの枚数=52種類の変数が必要になっちゃうし、その扱いも大変です。

    Python Boot Camp テキスト 4. Python のデータ型(コレクション編) の内容を理解するといいと思います。無料で読めるのでぜひ。

    この Python Boot Camp テキストでは、最初のほうで FizzBuzz の実習も出てきます。「こんにちは Python」も最初の題材は FizzBuzz でしたね。。それから、Python のインストールの方法もこの本と同じですね。

    Python Boot Camp は私も運営に関わったことがあり、このテキストは、日本の Python コミュニティの技術者たちが内容をチェックしながら公開しています。私は「こんにちは Python」に Python コミュニティへのリスペクトを感じました。

    他に質問はありますか?

    >作ったゲームを配信したり配布したりできますか?

    いろんなやり方があります。場合によっては他のプログラミング言語で作り直さないといけない場合があります。でもプログラミング入門ではなくなるので、次の段階で。

    >本格的にゲーム開発をしたかったら、この本を読んだら次に何を読めばいいですか?

    作りたいものが決まって、それがこんな風に作れる、とわかってきたら、その方法に近い本を探して学ぶ、という手があります。 Python で開発されて有償・無償で配布されているゲームもあるし、Python で本格的なゲーム開発という解説書もあります。

    そういえば去年 PyCon mini Hiroshima 2019 の基調講演で、「プログラミング言語の勉強にゲーム開発は適している」という ransui さんのトークがありました。録画が YouTube にあります。ちょっと難しいかも、だけど、歴史や技術の奥深い話に興味があれば見てみてください。

    もうひとつは、さっきの「コレクション」のように、プログラミング言語としての Python のいろいろな機能をもっと深く知る勉強も考えられます。そちらも、やりたいことを広げてくれる。

    でも、「作りたいもの」を決めて、必要なことに絞って勉強するほうがモチベーションが維持しやすそうですね。

    では今回はこのくらいで。実は nishimotz もこの ransui さんのお話を思い出して、ゲームを作ろうとしています。

    年齢を超えて Python でゲーム開発の勉強をする会を、これから定期的に Zoom でやれたらと思っています。

    次回、仲間が増えているかも知れないよ。よろしくね。。

    補足:次回以降は connpass の shuaruta グループでイベント告知をしたいと考えています。よろしければチェックしてみてください。