nishimotzの日記

  • NVDA日本語チーム・ラジオの紹介

    これはアクセシビリティ Advent Calendar 2021 参加記事です。

    NVDAとは

    NonVisual Desktop Access (NVDA) は無料(オープンソース GPLv2)の Windows 用スクリーンリーダー(音声読み上げソフト)です。
    オーストラリアの非営利法人 NV Access を中心とするコミュニティが開発を行っています。

    NVDA日本語チームは、本家版NVDAの日本語対応とNVDA日本語版のリリースを行っています。

    昨日、今年3番目のリリースである NVDA 2021.3 が NV Access からリリースされました。今日、その日本語版である NVDA 2021.3jp もリリースされました(しました)

    NVDA日本語チーム・ラジオとは

    NVDA 日本語チームは以前は東京エリアでイベントを開催したり大きなイベントに参加してきました。

    コロナ禍でイベントが困難になり、新しい活動方法を模索した結果、2020年11月から、毎月第2木曜日の夜9時から10時に、YouTube Live でオンラインイベントを配信しています。

    無事に毎月欠かさず実施することができ、先月、2021年11月に第13回をお送りしました。

    主な内容は

    • NVDAの最新情報を紹介する
    • いただいた質問にお答えする
    • NVDAに関するさまざまなトーク

    です。

    ミートアップ特別編の報告

    たまたま第14回にあたる今日は、障害者週間の最後の日でもあり、年末でもあるので、別の方法でやってみようか、ということになり、ミートアップ特別編を開催しました。

    参加者14人(スタッフ含む)で以下のような議論をしました。

    自己紹介

    • 以前から NVDA 日本語チームの活動に参加されている人
    • メールや GitHub Issues でお名前を知っているけど、お話するのは初めてだった人
    • スタッフと何らかのつながりがあって参加してくださった人
    • NVDA のアドオン開発などをしている団体の人
    • などなど

    NVDA と他のスクリーンリーダーをどう使い分けている?

    • 他のスクリーンリーダー(JAWSなど)でうまくいかないことがあったらNVDAを使う
    • NVDAはオブジェクトナビゲーションが使いやすい
    • JAWSは点字ディスプレイで画面に忠実な表示ができるなど利点がある
    • 一方でふだんNVDAだけを使っている、という人も

    NVDAを使い始めたきっかけは?

    • 地域のパソコンボランティアで紹介される。視力が残っていて、スクリーンリーダーを買えない人に「こういうのがある」とNVDAを紹介している団体がある
    • お金を払わなくてもいい、お金を払わなくても使えるのがありがたくて使い始めた、使っている
    • プログラミングがしたい、エンジニアとして作業をするのに(他のスクリーンリーダーよりも)NVDA が適している

    NVDA日本語チームにやってほしいこと

    • 講習を受けられる場所を教えて欲しい。
    • スクリーンリーダーが読み上げる場所が移動したときに、画面がスクロールしないことがある問題。【回答】ちょっとずつ改善している。以前は開発者が全盲の人ばかりだったし、API も整備されていなかった。

    YouTube Live への参加について

    • スクリーンリーダーユーザーは、配信を聞きながら、メールやチャットのコメントを書くのは難しい。

    まとめ

    • 今日 NVDA 2021.3jp をリリースしました
    • 来年でNVDA日本語チームは10周年
    • これからも活動を充実させたり、改善していきたいので、ご参加、ご支援をお願いします。

    アクセシビリティ検証ツールとしてのNVDA

    今回、ミートアップを開催してみたら、視覚障害の当事者のユーザーの方が多く集まってくださる場になりました。ですが、NVDA はアクセシビリティ検証ツールとして、Webやソフトウェア開発に関わる人たちにも使われています。

    今年5月 GAAD Japan 2021 で、私と辻さんで行ったトークの録画が公開されています。

    「スクリーンリーダーは怖くない! NVDA & VoiceOver 10の基本テクニック」

    ご視聴いただき、NVDA を使ってみよう、という気になっていただけると幸いです。

    最後に自分の仕事を振り返ると

    いま関わっている仕事のひとつが「ためまっぷ」というサービスの開発の支援です。アクセシビリティの観点からもコードレビューをしたり、NVDA で検証して改善のプルリクエストを投げたりしています。先は長いですが。。

    「アクセシビリティ検証ツールとしてのNVDA」ユーザーとしても、ひきつづき活動していきます。よろしくお願いします。

  • Python Boot Camp テキストで始める Python

    12月4日に山口県柳井市で開催された Python Boot Camp in 山口 に TA として参加してきました。

    私は新幹線に乗って広島県外に行くのが2年ぶりだったようです。日帰りでしたが、山口の皆様とご一緒できて楽しかったです。

    Python Boot Camp は一般社団法人 PyCon JP Association が講師を派遣して、全国で開催している入門者向けの講習会です。私が TA をするのは2017年の広島、2018年の岡山に続いて、3回目でした。

    Python Boot Camp テキスト は、このイベントの教材として公開され、毎回使用されています。

    Python Boot Camp テキストの魅力

    私は「Python Boot Camp テキストは初心者にお勧めできる教材」だと思っています。理由は以下の通りです。

    公式Pythonの素直な使い方がわかる

    PyCon JP Association は Python を開発している国際的な非営利組織 PSF (Python Software Foundation) の活動を支援し、緊密に連携する立場の組織です。

    Python の実行環境や教材が乱立してきた現在、意外にも「公式 Python をちゃんと紹介する入門記事」は見つかりにくくなっています。ライセンスやコミュニティも含めたエコシステムとしての Python のことがちゃんと伝わるんだろうか。。

    クラウド環境でブラウザだけで使える Python とか、データ分析ツールをインストールすると使えるようになる(条件によっては無償ではない)Python とか、そういう環境を前提にした教材がとても増えています。

    ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython」は数少ない(嬉しい)例外ですが。。

    PyCon JP が「公式 Python をこう使うのが初心者にとって素直な使い方です」と示してくれるのが「Python Boot Camp テキスト」のいいところだと思います。

    メンテナンスされている

    ソフトウェア開発に使ったことがないPCには、最初に行うべき設定や環境整備がありがちです。教材によってはそういう作業の説明が抜けていることもあります。

    Python Boot Camp テキストは対面での講習会で繰り返し使われて、いろいろな参加者の環境に対応したノウハウが詰まっています。

    また、Python の新しいバージョンのリリースなどに合わせた改訂も行われています。

    今回、山口で進められた講習会を見守りつつ、細かく配慮されたテキストであることをあらためて認識しました。軽微な不備もありましたが、すぐに課題は把握され、次回に向けた改訂が行われる見込みです。

    公式ドキュメントと整合する説明

    import を「おまじない」と説明したり、len も join も「関数」と紹介したり、説明がふわっとしている Python 教材がだんだん増えてきたな、と感じる今日この頃です。

    Python Boot Camp テキストは、 Python そのもののドキュメントのメンテナーや、信頼できる技術書の著者やレビューアーの人たちによってチェックされ、正確で適切な言葉が使われています。

    ステップアップするときに混乱しなくて安心です。

    インストール方法が物足りなければ

    Python Boot Camp テキストでは Python のインストール方法は初心者向きの方法に絞った説明になっています。

    これが物足りない場合は、python.jp の Python環境構築ガイド が私のおすすめです。

    ちなみに私は Linux 環境にソースコードからビルドしてインストールするときは make install ではなく make altinstall を使います。説明は公式ドキュメントに書かれています。

    この数年 Python の人気が高まっています。学校の授業・講義でもオンライン教材でも Python がたくさん取り上げられています。この記事が、Python を学び始める人にとってお役に立てば幸いです。

    お知らせ

    最後にイベントの告知です。

  • すごい広島 with OSH 2021.10

    この記事は、2021年10月20日にオンラインで開催したイベント「すごい広島 with OSH 2021.10」の記録と考察です。

    イベントの背景と目的

    前回開催した「オープンセミナー2020@広島」から1年半が経過した今年夏、次回の開催形態やタイミングを決められない反面、なにか実験をしたい、と考えました。そして「アジャイルなイベント開催の実験」として9月に告知をして今回行ったのが「すごい広島 with OSH 2020.10」というオンラインイベントでした。

    アンカンファレンス

    イベントは Zoom ミーティングで行いました。スタッフは Zoom 表示名に「(スタッフ)」と記載してもらいました。

    まずオープニングで趣旨説明、そして過去に広島で開催されたオープンセミナーの概要を私から紹介しました。残りの大半の時間で「アンカンファレンス」を行いました。

    前半と後半、それぞれ30分の時間枠について、テーマと枠のオーナーをその場で募集して、それぞれ3人、合計6個の「部屋割り」を決めました。私も枠オーナーを担当しましたが、立候補者が複数いらっしゃって、下記のようになりました。

    前半

    • ハイブリッドでイベント開催どうする
    • テレワークツール
    • 東京で働く?広島で働く?

    後半

    • オンラインミーティングツール
    • テレワークしてる?なにか変わった?
    • これからのエンジニアのキャリア

    事前にブレインストーミングツール miro のホワイトボードをひとつ(白紙の状態で)作り、招待URLを bit.ly で短縮して、その場で告知しました。

    そして、Zoom のブレイクアウトルームを作り、オーナーには割り当てた部屋に行ってもらい、その他の参加者には自由に入退室してもらいました。

    アンカンファレンスの間は、私は Zoom のサブアカウントで、いわゆるメインルームに画面共有を行い、ブレイクアウトルームごとのテーマ一覧を掲示しました。

    ブレイクアウトルームの全体にメッセージを送ったり、60秒後に終了したり、といった機能を使って、枠の終了時間の告知を行いました(が、モタモタしてちょっと遅れました)。

    クロージングでは、作られたホワイトボードを見ながら、オーナーの人が成果を簡単に説明しました。最後にZoom画面で集合写真を撮って、イベントを終了しました。

    方法を振り返って

    以前わたしは NVDA のオフラインイベントでアンカンファレンスをやったことがあり、ファシリテーションはできると思っていましたが、フルリモートでは初めての経験でした。

    参加者の方がうまく議論に参加できなかった、といったトラブルは聞くことがなく、Twitter の記録を見た範囲でも、みなさん楽しんで盛り上がってくださったようでした。

    Zoom のブレイクアウトルーム機能も改良されてこういうことがやりやすくなり、また参加者の皆さんの「テレワークスキル」も高くなり、今だからこそ、こういうことがスムーズにできたと思います。

    嬉しい誤算だったのは miro の活躍でした。本当は「miro の使い方を研究する」みたいなテーマもあるかと思ったくらいでしたが、それぞれのルームでどんどん入力が始まりました。

    ボードをズームアウトすると隣のルームの miro の活動も全部見える、といった状況も、使い方の学び合いにもなり、良い雰囲気にも繋がったと思います。

    会議であれば Google ドキュメントでテキストを共同編集して議事録を作る、といった進め方が私には当たり前になりましたが、過去に「ブレインストーミング」を Google ドキュメントやスプレッドシートでやろうとして、うまくいかなかった経験があります。

    miro のようなビジュアルなツールには、アクセシビリティの懸念もあり、また、PCでの操作にしか最適化されていない、といった印象もあります。ですが、短時間でアドホックな話し合いを行うツールとしては、今後も選択肢にしていきたいと思いました。

    議論を振り返って

    ここからは各枠のオーナーさんの報告や、残してもらった miro を読み返して、私が議論にコメントします。

    ハイブリッドでイベント開催どうする

    私がオーナーでした。フルリモートよりも難しいと思われるハイブリッドイベントのセットアップ。最近参加した PyCon JP 2021 の体験を踏まえて、エコー対策などの重要性、それからリアクションや盛り上がりを可視化・共有する必要性などを話しました。

    テレワークツール

    Slack や Microsoft Teams などのメリット/デメリット、通知をうまく把握する方法。

    東京で働く?広島で働く?

    東京で働く方がチャレンジする機会が多い。広島で働くのは家族の事情が多い。リモートワークの限界。残念でもありますが、まだこれから、なのかも。

    オンラインミーティングツール

    テーマ提案者の都合で私がオーナーとしてお手伝い。miro の考察はこの記事で前述した内容。スマホでボイスチャットできるけど、やっぱり PC でちゃんと参加できるツールが必要。Teams と Slack の比較の話はここでも。

    テレワークしてる?なにか変わった?

    「してる派」の意見、通勤したくない、お客さんの理解があった、冷蔵庫が充実、子供との付き合い。一方で、さびしい、話せる場や気晴らしの必要性。

    「してない派」の意見、気持ちをスイッチしたり集中したりするために自宅外で仕事をしたい、など。

    投資したもの:ディスプレイ、キーボード、スタンディングデスク。

    これからのエンジニアのキャリア

    転職活動を機に、技術トレンドとの向きあい方を考えた体験など。トレンドを追わないのも追いすぎるのもリスク、バランスではないか、という報告が興味深かった。

    これから

    12月中旬の平日の夜に「オンラインミニイベント」第2回を開催する目標です。今回の参加者からテーマとして提案された話題は、これからの企画に反映するつもりです。

    フル開催としてのOSH再開については、スポンサーさんとのお話をどう始めていくか、課題のひとつだと思っています。

  • Python Charity Talks in Japan 2021.09

    9月11日に「すごい広島 with Python」メンバー4人でオンラインイベントに登壇しました。

    Python Charity Talks in Japan 2021.09

    これから始める電子工作とMicroPython

    YouTube 録画

    イベントの目的

    Python Charity Talks は日本の Python コミュニティが PSF (Python Software Foundation) に寄付をするために、去年から何回か開催されています。今回は日本各地の Python コミュニティが各セッションを担当し、活動を紹介し合って、それぞれの活動の活性化につなげる、という趣旨のイベントとなりました。

    広島セッションの企画

    広島の Python コミュニティとして現在 PyCon mini Hiroshima と「すごい広島 with Python」をセットで運営しています。

    PyCon mini Hiroshima は昨年10月にオンラインで開催して、次回開催の予定をまだ立てていません。毎月月末の水曜日に開催する「すごい広島 with Python オンライン」に活動を絞ってきました。

    ですが、新しいアウトプットの場や方法を模索する中で、今回のイベントへの参加の打診をいただき、広島セッションの持ち時間を PyCon mini Hiroshima スペシャル版のように考えました。過去に評判がよかったけれど PyCon JP などでまだアウトプットをしていない MicroPython や電子工作をテーマに選びました。

    私が 2016 年に広島で MicroPython の紹介をして以来、毎月の「すごい広島 with Python」にも電子工作の話をしてくれる人が増えていました。また、イベント全体の方針として、技術とコミュニティの様子の両方が伝わることが望まれました。私が過去のトークの再演をする計画から、複数の話者がリレー登壇する方針に変わりました。

    シングルトラックのイベントで電子工作というテーマを選んだことで、聞き手が狭まることを懸念したので、「これから始める」というキーワードをタイトルに入れて、とにかく「やったことがない人」に「やってみる」きっかけを提供しよう、という方針にしました。

    広島チームの準備段階

    6月24日に PyConHiroshima Slack に準備用のチャンネルを作って、7月中はときどき、8月から毎週、作業日を設けて、準備をしました。

    日頃からやっていることを整理して紹介してもらえるのだと思ったら、みんな新しいネタの実装を始めてしまい、セッション準備はハッカソンのような状況になりました。

    私が「自分のトークはこういう内容をこうしゃべろうと思う」と先に伝えていました。すると、トークの聞き手として参加してくれる予定だった Nyoho さんが Raspberry Pi Pico を購入して、電子工作の初心者の立場で実践してくれました。「ここまでやってくれるとは」という成果が出たので、予定にはなかった「3人目のLT」の時間を作りました。

    30分で充分だと思ったセッションは時間が足りなくなりました。私の出番はトークとトークのつなぎの約2分が数回。余計なことをしゃべると時間が足りないので、原稿を書きました。トークの内容をどうつないで全体を「未経験者に聞いてもらえる」セッションにするか、最後まで考えていました。直前1週間に何度も夜遅くまでリハーサルを行い、各トークを改善してもらいながら、つなぎの内容を試行錯誤しました。

    当日

    広島セッションは、私が途中で画面共有ボタンを押し間違えて中断しかけましたが、他のメンバーに冷静に対応してもらい、無事に終わりました。

    まとめとして私がしゃべろうとしたことは、時間がなくなったので、全部スキップしました(公開したスライドからも削除しています)。言いたかったことはNyohoさんのトークに入っています。私は私で、次の機会に自分の言葉にしたいと思います。

    他の地域のみなさんのセッションにも、Raspberry Pi や IoT や農業など、被る話はたくさんあり、私にはそれらの専門的な研究や実践のお話も興味深かったです。終了後の関係者の交流会でも、電子工作やマイコンの話で盛り上がりました。

    全体として、地域コミュニティの広がりと、Python ユーザーのスキルや応用分野の幅広さの、両方が伝わり、よかったのではないかと思います。

    準備は大変でしたが、楽しい時間になりました。

    以下は広島セッションのスライドです。

    コミュニティの活動とアウトプットの今後

    登壇準備でもない、イベント準備でもない、ハッカソンのようで、それだけでもない、もしかしたら放送番組制作、あるいは大学研究室の発表会だったかもしれない、そんな不思議な約2か月が終わり、なにか技術コミュニティの活動とアウトプットの新しい可能性を感じています。例えば、今回の広島セッションの内容で同人誌を書くとか。。

    すごい広島 with Python は今後も「毎月月末の水曜日の19時」に Zoom で開催します。

    ブログを更新するのが久しぶりなので、その他の私の予定も紹介しておきます:

  • ふりかえり 2020年12月

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

    2020年8月

    すごい広島 with Python [41] で Alexa スキル開発の話をしました。

    PyCon JP 2020 (オンライン開催)で「広島における地域Pythonコミュニティの立ち上げ方と続け方」という登壇をしました。遅ればせながら私もオンライン飲み会を体験して、これはこれで面白いもんだな、とちょっと思えるようになりました。

    ひさしぶりの「PCN ひろしま」会場での開催でした。

    2020年9月

    はんなりPython(オンライン開催)で tkinter の話をしました。

    オープンソースカンファレンス Online/Hiroshima に参加しました。PyCon mini Hiroshima を露骨に告知するようなミーティング枠をいただきましたが、いろいろ質問やコメントもいただけたりして、楽しかったです。

    PCNひろしま、9月も何とか開催。

    terapyon podcast に(2回目の)出演。

    すごい広島 with Python を開催。

    2020年10月

    10月10日に PyCon mini Hiroshima 2020 オンラインを開催しました。私が言い出して実現させていただいた「ラジオ番組っぽいオンラインイベント」でしたが、多くの人に楽しんでいただけたようです。まだ録画を公開できていませんね。。この年末年始に作業できればいいのですが。

    基調講演は寺田学さんに「PyCon JP が生まれて10年、コミュニティのつながりとPython 〜PyCon JP誕生からコミュニティの重要性・多様化〜」というお話をしていただきました。

    オンラインでしかイベントができない、という状況もまた、コミュニティについて深く考えるよい機会になりました。けっきょく「毎月のように、カジュアルな活動を、をコツコツ積み重ねること」が大事だと気づきました。

    10月もPCNひろしま、開催。

    すごい広島 with Python を開催。

    2020年11月

    「NVDA日本語チーム・ラジオ」を開始しました。これは「NVDA日本語チーム」のコアメンバーが Zoom + YouTube Live でラジオ番組のように「スクリーンリーダーNVDA」の情報をお伝えするオンラインイベントです。これを毎月定期的にやっていくことになりました。お便りを読んで、質問に答えたり、ご意見を伺ったりしていきます。YouTube チャンネルで録画(録音)を公開しています。

    すごい広島 with Python も開催。

    PCNひろしま、開催されたのですが、私は私用で欠席でした。

    2020年12月

    NVDA日本語チーム・ラジオ 第2回も開催

    アクセシビリティ・サポーテッド(AS)テスト もくもく会。これは私が参加しているウェブアクセシビリティ基盤委員会(WAIC)のオンラインイベントでした。いわゆる「AS情報」を、2020年4月に出しましたが、これは私が2015年からワーキンググループに参加して以来、初めてのアウトプットでした。今後、なるべく頻繁にリリースできることを目指して、活動を続けています。

    PCNひろしま、今月は広島における新型コロナウイルス感染拡大を受けて、オンラインで開催されました。経験者枠(参加者が機材をご自分で用意する枠)だけだったので、参加者ごとにブレイクアウトルームに分かれて、個別にサポートする、といった進め方になりました。ウェブで公開されている教材・コンテンツを活用させていただいたことに感謝しつつ、「けっこうやれる」という感触が得られました。

    VIC(広島市視覚障害者情報支援センター)20周年記念事業「フォーラム2020 ICTで視覚障害者の未来を拓く」に、スタッフの立場で参加しました。新型コロナ感染拡大で広島市の施設が閉鎖されようとしているタイミングでした。Zoom ウェビナーでは全国から多くの方に参加していただきました。現在も記録をまとめる作業などに携わっています。

    これから、そして2021年

    明日、今年最後の「すごい広島 with Python」です。今回は何か喋れるかな。。

    「オープンセミナー2021広島」の実行委員長を拝命しています。2021年5月またはそれ以降に延期するとは決めましたが、まだキックオフもしていません。さすがにそろそろしないと。。興味があればお気軽にご連絡ください。

    こんな状況で1年を終えようとしていますが、私は2011年からずっとテレワークで生き延びてきたので、ある意味「いままでと同じように仕事をさせていただいた一年」でした。

    オープンソース開発や技術カンファレンスの運営で経験したメソッドやツールは、オンラインでの技術チームのマネジメントに役立ちました。時間の余裕がなくて仕事が滞りがちですが、新しい仕事のお話もときどきいただいています。

    犬と猫、どっちも飼っていると。。

    前回のブログでドッグトレーナーさんのことを書きましたが、4月下旬から9月上旬まで「カジタニドッグスクール」さんに来ていただいて、主に「過剰に吠える(いわゆる無駄吠え)」という問題についてご指導いただきました。

    教えていただいたトレーニング(遊び方、しつけ方)は、いまも(なるべく毎日という気持ちで)コツコツと続けています。

    どのようなことをやって、何がわかるようになって、どう効果があったのか、いずれ書きたいと思っています。

    そして「人々が家族として愛玩動物と向き合うこと」に関わるアウトプットを、来年はもっと頑張りたいと思っています。

  • ふりかえり 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 グループでイベント告知をしたいと考えています。よろしければチェックしてみてください。

  • オープンセミナー2020@広島

    オープンセミナー2020@広島が昨日(2020年2月8日)開催されました。


    Togetter まとめ
    私も3年くらい前から実行委員の一人として運営に関わっていて、今回は副委員長を務めました。
    おかげさまで100人を超える(懇親会の参加者だけでも67人)多くの人にご参加いただき、盛況に終わりました。
    次回以降のスタッフ希望のご連絡は @24motz 宛でも結構ですので、お待ちしています。

    PyCon mini Hiroshima 2020

    私の会社(シュアルタ)は前回に続いてスポンサーとなりました。
    去年に続いてスポンサーセッションの時間を5分いただいたのですが、イベントのテーマ「エンジニアライフHacks」に沿った話をするには時間が短すぎました。
    そこで 過去にブログに書いた内容を「PyCon mini Hiroshima のウェブサイトとアクセシビリティ」として紹介しました。

    スライドの中でご紹介した重要な告知は
    「2020年10月10日(土曜)に PyCon mini Hiroshima 2020 をやります」
    です。詳細はこれからすこしずつ発表していきます。よろしくお願いします。

    「正しいことを」の話

    スクリーンリーダー NVDA のコミュニティ活動を踏まえてウェブ制作の配慮の話をしました。
    私の活動のモチベーションを「正しいことを躊躇なく行うのは、気持ちいい」と表現しています。
    「正しいことを躊躇なく」は、Python コミュニティの著名な人たちからヒントを得たキーワードです。
    「正しいことを行うことに喜びを感じている人たち」は、アクセシビリティのコミュニティで著名な人たちについての私の観察です。
    「エンジニアは正しくないことを行いたくたい」は、自分の感じていることでもあり、よく語られていることでもあります。
    こういったことを考えていたら、前述のようなトークになりました。短い時間で説明するのは難しかったですね。

    Hacks?

    各セッションは聞きながら響いたキーワードや感じたことをツイートしています。
    2020年2月8日 @24motz のTwiLog
    どなたもきちんと考え抜いて丁寧に「エンジニアの生き方・学び方」あるいは「ソフトウェア開発の最先端」を語っておられました。
    「働くこと」と「楽しむこと」の両立についても多く語られました。
    これは、前回の「学び方Hacks」のときからテーマ決定に参加している私の反省になるのですが、設定したテーマが「Hacks」という、ちょっと斜に構えたキーワードになっているのは、アンバランスだなあ、と思いました。
    学び方にも生き方にも「Hacks はない、まじめにやろう」という、当たり前のようなことを、去年と今年と2回にかけて、登壇者の皆さんから感じ続けています。

    座長&実行委員長

    昨夜の懇親会で挨拶しましたが、PyCon mini Hiroshima 2020 の座長も、オープンセミナー2021@広島の実行委員長も、どちらも「やります」ということになりました。


    この一年、いろいろご協力、ご支援をいただければ幸いです。よろしくお願いします。

    株式会社シュアルタ

    私が2011年に広島に戻って以来、基本的にフリーランスのような働き方でエンジニアとしてやってこれたのは、オープンセミナーや PyCon のようなコミュニティのイベントで、いろいろなことを学ばせてもらったおかげだと思っています。
    株式会社シュアルタは2018年2月9日(肉球の日)設立で、今日は会社の設立記念日でもあります。
    無事に第2期が終わり、今月から第3期として営業をしております。
    ウェブアプリ、モバイルアプリなどの受託開発、ソフトウェア開発のコンサルティングをしながら、スクリーンリーダー NVDA 日本語版の活動を行い、ペット事業の研究も続けています。
    シュアルタも引き続きよろしくお願いします。

  • NVDA 2019.3 の新機能

    このエントリーは Webアクセシビリティ Advent Calendar 2019 の3日目の記事になります。
    NVDA日本語チーム の西本です。ふだんは広島県広島市にいます。オープンソースのスクリーンリーダー NVDA の日本語対応に関わりながら、NVDA 日本語版のリリースを続けています。
    ウェブアクセシビリティ基盤委員会 WAIC WG2 にも参加しています。
    広島では Python のコミュニティ活動やイベント開催に関わっています。
    フリーランスの技術者として NVDA に関するコンサルティングや開発のお仕事をいただくこともあります。
    私の会社(シュアルタ) にご相談ください。

    NVDA相談会の開催報告

    本題に入る前に NVDA 日本語チームのブログ記事をご紹介します。
    2019年11月1日にサイトワールド2019で「NVDA相談会」を開催しました。
    NVDA 相談会 in サイトワールド2019 開催報告

    NVDA 2019.3 の新機能

    NVDA 2019.3 はまだリリースされていませんが NV Access のブログ で変更点が紹介されています。
    私も 翻訳 をしていて、単に Python のバージョンが変わるだけではなく「新機能も盛りだくさん」になってきたなあと感じています。
    ここでは Web アクセシビリティに関わる皆様に関係があることを中心にご紹介してみます。

    フォーカスハイライト

    2016年のアドベントカレンダー記事 など何回か紹介した「フォーカスハイライト」という NVDA アドオンですが、ついに NVDA 2019.3 で NVDA 本体の機能になります。
    この機能は「画面が見えにくい人」の支援技術であると同時に、NVDA の「ナビゲーターオブジェクト」や「ブラウズモード」がどう動くのか、どういう状態なのかを把握できるので、アクセシビリティ検証に役立つと思います。
    私の実装は大幅に書き直しされましたが、基本的に「私がやりたかったこと」を「私がやってきた方法」で実装してもらえました。
    さらに、NVDA 本体に入ることのメリットとして、NVDA に視覚的な拡張を行うアドオン(ビジョン拡張プロバイダー)の仕様が決められて、その枠組みで新しいフォーカスハイライトが実装されました。
    現状では、NVDA 2019.3 のフォーカスハイライトと、私のアドオンは、それぞれ以下のような利点があります。

    • 本体機能:ブラウズモードのカーソルをハイライトできる。Webブラウザで左右の矢印キーで1文字ずつ移動すると、どの文字を読んでいるかがわかる。
    • アドオン:ハイライトの色や太さのカスタマイズができる。NVDA+Alt+P でハイライトの表示/非表示を切り替えできる。過去のバージョンの NVDA でも利用できる。

    おそらく今後は NVDA 本体のフォーカスハイライトの改良に貢献したほうがよいと考えています。ご要望があればお知らせください。

    スクリーンカーテン

    さきほど紹介した「ビジョン拡張」のもうひとつの機能として「スクリーンカーテン」が追加されました。
    VoiceOver にもあるのでご存じかも知れませんが、簡単にいえば「画面を真っ黒にする」機能です。
    アクセシビリティ検証作業のために目をつぶって操作をしていた晴眼者の皆様にも、待望の機能かも知れませんね。
    (スクリーンカーテンを終了する方法をちゃんと練習してから試してください。)
    NVDA 2019.3 設定「ビジョン」カテゴリ

    WAI-ARIA など Web 標準への対応の強化

    NVDA の Enhanced Aria アドオン に相当する機能強化が NVDA 本体で行われました。
    例えば Issue 9485 として aria role group への対応を確認しました。
    報告されていた例をすこし手直しした下記の例をブラウザのロケーションバーに入力して
    data:text/html, <p><button>1</button></p><p role="group" aria-label="A"><button>2</button></p><p><button>3</button></p>

    1, 2, 3 という3つのボタンが上下に並んでいる
    最初は Tab でボタンに移動、続いて下矢印キーで操作すると

    • ボタン 1
    • A グループ ボタン 2
    • グループの外 ボタン 3

    のようになります。
    この「グループ」の報告は「書式とドキュメント情報」で有効・無効を切り替えられます。
    また「入力ジェスチャー」でカスタマイズすれば、1文字ナビゲーションで「グループ」単位の移動ができます。
    (デフォルトではキー操作が割り当てられていません)
    他には例えば Issue 9616 として role=combobox 対応の不具合が修正されています。
    この他に figure 要素や article 要素への対応も強化されています。

    コンソール対応の改善

    Web 関連ではありませんが、2019.3 ではコマンドプロンプトや WSL など、いわゆる「コンソール」への対応が改善されます。
    この作業の一部は、Google Summer of Code の支援で行われました。
    従来の NVDA ではコマンドプロンプトが日本語の文字を正しく処理できない場合がありましたが、新しい NVDA では改善していると思います。

    2019.3 リリースへの道のり

    NVDA の通常のリリース作業は、本家ベータ版のリリース、翻訳チームの作業期間の宣言(string freeze と呼ばれます)とその作業締切(通常は2週間後)、リリース候補版、通常はその1週間後に正式リリースとなります。
    今日すぐに本家ベータ版がリリースされたとしても、最短で3週間後に正式リリースとなります。
    あれ、NVDA 2019.3 は本当に2019年12月31日までにリリースされるの?
    みたいなハラハラドキドキも私たちと共有したいという皆様、まずは NVDA 日本語チームのメーリングリストへのご参加から、私たちの活動にご協力いただけると嬉しいです。
    詳しくは www.nvda.jp をご参照ください。