タグ: python

  • PyCon mini Hiroshima 2019 のサイト制作

    2019年10月12日(土曜)に PyCon mini Hiroshima 2019 を開催しました。
    イベント自体については別の場で報告を書こうと思っていますが、チームから「ウェブサイト構築の話を共有してほしい」という意見があったので、忘れないうちに、まずここに書いておきます。
    hiroshima.pycon.jp は2015から2016にかけては GitHub Pages で私が自分で作りました。
    2018 からは参加費をいただくイベントとして開催することに決めて、専門家に制作をお願いして、WordPress で構築されました。
    (現在は静的サイトに変換して残しています)
    2019 では、もっと自分たちでコントロールしながら制作したいと考えて、Next.js を使いました。
    さいわいチームにはコーディングもデザインもやっていただける Nyoho さんがおられて、私は作業をチェックして本番環境にデプロイする、という立場になりました。
    今年の PyCon mini Hiroshima チームは GitHub のプライベートリポジトリを作りました。
    ウェブサイトのソースコードを Git で管理し、ウェブサイト制作のタスクも、それ以外のタスクも、すべてこのリポジトリの issues として管理しました。
    日程だけを告知する私の仮サイト(BootStrap Studioで作成)を、Next.js のサイトに置き換えていく作業は、6月ごろ始まりました。
    リダイレクトに必要な nginx の設定をリポジトリに含める提案があり、それを私が pytest と requests でテスト駆動しながら導入する、というのを(すごい広島 with Python のネタにしながら)やったのが6月下旬。
    7月上旬には、プルリクエストごとにプレビュー用の Web アプリのビルドが行われるようになり、本番環境を更新する前に、ブラウザでレビューが行える体制が整いました。
    このころから、私自身は node.js で React のコードを触るのをやめて、逆に本番環境へのマージの権限は私だけが持つことにして、レビューアーに徹することにしました。
    7月末に Nyoho さんが SVG アニメーションで動くヒーロー画像を制作したあたりから、私は、いろいろな環境に配慮したアクセシブルなサイトであることをレビューするようになりました。
    残念ながら SVG アニメーションは最後まで IE11 や Microsoft Edge では動かせなかったのですが、かわりに動かないタイトル文字を出してもらうようにしました。
    このやりとりの中で、Next.js を使いながらアクセシビリティを確保できそうだ、という見通しが得られました。
    やがて、スクリーンリーダーの利用者が適切に操作・閲覧できることを、私自身が「NVDA でアクセシビリティの検証をするディレクター」の立場で行うようになりました。
    ページが複数になったときには、タイトルをページごとに変えてもらうようにしました。
    アニメーションの機種依存振り分けの議論の途中で、 CSS で display:none するとスクリーンリーダーから読み取れなくなることを紹介すると、そうだったのかと驚かれました。
    「日時」や「会場」などの情報を h2 や h3 などの見出しレベルにどう割り当てたらよいのか、あるいは見出し要素に情報そのものを入れてしまっていいのか、といったことも議論しました。
    例えば「日時」という見出しがあって、その真下に「10月12日」と書いてあるのと、見出しそのものが「10月12日」になっているのは、どちらがうれしいだろうか。
    スクリーンリーダーの「見出しジャンプ」という機能を紹介すると、「じゃあ見出しに情報が入っていたほうが効率的だね」という議論になりました。
    一方で「日時」というテキストをスクリーンリーダー利用者にだけ読めるように提示する、というテクニックはどうだろう。
    いわゆる sr-only クラスのような実装はあるけれど、想定外の閲覧環境で(例えば -10000px の位置指定が)どうなるかわからないし、みんなが同じコンテンツを読むほうがよいのではないか、と私はアドバイスしました。
    テキストの表記についても、「10:00~」はちょっと不安。「10:00開始」はよさそう。「10時00分開始」はさらに安全。
    けれど、このあたりの読み上げはユーザーエージェントに依存しているし、読み手は 10:00 を時刻だと解釈できる可能性は高い、などなど。
    一方で IE や Edge でレンダリングが崩れる、といった指摘、機種依存文字の指摘、などもありました。
    プレビュー Web アプリのおかげで、効率的に検証することができました。
    ですが、Nyoho さんもご多忙だったので、実際に解決したい課題がすべてクリアできたのは、イベントの前日の夕方でした。
    この話には Python の要素がほとんどないのですが、今回の一連の作業を通じて、PyCon mini Hiroshima チームの中で「アクセシビリティ、こんな風にやっていくんだなあ」という感覚を共有できたこと、私自身も「アクセシビリティやっていき勢」としての活動ができたことを、ちょっぴりうれしく感じています。
    今回のイベントにスクリーンリーダーユーザーが参加してくださったわけではなく、リアルなフィードバックをいただくのもまだこれからの課題です。
    このチームの経験を、次回の PyCon mini Hiroshima で、かどうかはわかりませんが、どこかで活かしたいと思っています。

  • NVDAのこれから

    このエントリーは Webじゃないアクセシビリティ Advent Calendar 2018 の12日目の記事になります。
    NVDA日本語チーム の西本です。ふだんは広島県広島市にいます。オープンソースのスクリーンリーダー NVDA の日本語対応に関わりながら、NVDA 日本語版のリリースを続けています。ウェブアクセシビリティ基盤委員会 WAIC WG2 にも参加しています。
    今年は自分の会社 シュアルタ を設立しました。
    NVDA に関するコンサルティングや受託開発を、株式会社シュアルタでお受けするのでよろしくお願いします。
    後述するように NVDA と Windows アクセシビリティを取り巻く環境は2019年にも大きく変化します。
    視覚障害者の雇用などで NVDA を活用したい企業や団体などの法人に向けて、コンサルティング契約により NVDA の技術サポートを提供します。
    現在は申込受付の準備中です。
    詳細は info@shuaruta.com にお問い合わせください。

    Windows と Edge のこれから

    Webアクセシビリティ Advent Calendar 2018 の4日目として NVDAのブラウズモード という記事を書いて、「Microsoft が Chromium 技術で作ったデスクトップアプリ」の紹介をしたら、直後に Microsoft Edge が Chromium に移行するという発表がありました。
    momdoさんの日本語訳
    そこまで Chromium 大好きになってたのか。。
    Windows 10 がリリースされた直後に NVDA は Microsoft Edge をちゃんとサポートできていない、という宣言をしたのが懐かしいですね。
    最大の理由は Internet Explorer 11 がサポートしてきたアクセシビリティAPIを Edge が廃止して UI Automation という技術に移行してしまったから、なのですが、その後、長い間をかけて Microsoft と NV Access は Edge が NVDA でちゃんと動き、性能的にも問題がないようになった、というのが2017年の終わりごろでした。
    Chromium になった Edge は、もはや Chrome や VS Code や Skype のようにきちんと NVDA で操作できるようになるのだろうな、と思ったら、今度は Microsoft が Chromium の UI Automation 移行を進める、という話になっています。ということは Edge と Chrome にちゃんと対応できたばかりの NVDA は、また新たな作業が必要になるかも。。
    Windows スクリーンリーダーのワクワク・ドキドキ・ハラハラの日々はなかなか終わりそうにありません。

    NVDAのこれから

    Python 2 のサポートが2019年末に終了する、ということがわかっていたにも関わらず NVDA はいまだに Python 2.7 に依存しています。
    あれやこれやのアップデートに対応する作業に NVDA が追われることがなければ、もっと前向きな作業ができたのではないか、と言われそうですが、私は「もともとスクリーンリーダーというのはそういう運命のもの」だと思っています。
    つまり OS やアプリやコンテンツが「理想的に作られていない」ことで起きる不具合を「取り繕う」のが、スクリーンリーダーの(本質とまでは言わないけれど)「重要な価値」になってしまっています。
    なので「スクリーンリーダーの未来は?」と聞かれると、「スクリーンリーダーがなくなる」は言い過ぎとしても「スクリーンリーダーが単純になるのが理想の未来」と私は答えます。
    話を戻すと、NVDA は来年 2019.1 から 2019.4 までの4回のリリースを行うあいだに、互換性を切り捨てて大きく変わり、Python 3.7 あるいは Python 3.8 を積んでパワーアップした NVDA に生まれ変わります。
    ですが、そのパワーアップは、ユーザーには「何の得にもならない」と思われる可能性が高いです。
    Windows XP のサポートが終わったときにも、Firefox で WebVisum が動かなくなったときにも、ガラケーで Web サイトが閲覧できなくなったときにも、むかしの Visual Basic で書かれたアプリが動かなくなったときにも、同じような話がありました。
    今度は NVDA にその試練が降りかかる番ですね。。
    たぶん NVDA 2018.4 やその日本語版を、アップグレードしないで何年か使い続けたい、という要望が出るだろうなあと覚悟をしています。
    まあ、そういう使い方をする PC を割り切って温存するのは「アリ」かも知れません。。
    ユーザーが直接得をしない「新しい技術への移行」は、そうは言っても、標準化、ソフトウェア開発、セキュリティ、オープンソース、など多くの企業やコミュニティの活動が関わって作られた「大きな流れ」であり、逆らうことは「孤立」を意味します。
    そして「孤立」は「コンピューターとインターネットを学びたい、楽しみたい、活用したい」というスクリーンリーダー利用者には「残念な」選択だと思います。
    実はまだ NVDA コミュニティは NVDA を Python 3 に移行させるための技術的課題を完全にはクリアできていません。
    私の手元で動いている Python 3.7.1 版 NVDA は、今日やっとフォーカスハイライトが動いたところですが、まだ重要な機能がボロボロと欠けている状態です。
    大丈夫なのか、ほんとにやれるのかよ、と心配しています。
    来年は NVDA 日本語版よりも、まず本家 NVDA コミュニティのチャレンジを支えたい、と思っています。

    NVDA 日本語アルファ版の新しい仕様

    ここからはメーリングリストに投稿した内容です。
    現在 NVDA 2018.4 のリリース候補版が出ていて、NVDA 日本語ベータ版 nvda_2018.4jp-beta-181210j はその変更が反映された、事実上の日本語リリース候補版になっています。
    来週中に 2018.4jp の正式版もリリースできると思います。
    本家は NVDA 2019.1 に向けた作業を進めており、日本語アルファ版では 2019.1 に向けた変更をテストしています。
    最新の日本語アルファ版で、NVDA のアドオンについて大きな変更があるので、お知らせしておきます。
    以下の説明を読んで、不都合と思う場合は、前もってリリース版やベータ版に移行することをお勧めします。
    2019.1 以降の NVDA は、原則として、アドオン開発者によって互換性が確認されたアドオンだけをインストールできます。
    アドオン開発者は、互換性を確認していることを知らせるために、アドオンを作り直して公開する必要があります。
    先日リリースした focusHighlight 5.4 ではこの問題を修正しています。
    NVDA 2019.1 系の日本語アルファ版をインストールするときに、従来のアドオンがインストールされていると、
    「アドオンの互換性について了解しました」
    というボタンが表示される場合があります。
    ですが、そのボタンを押してインストールを実行するだけだと、互換性のないアドオンはすべて無効化されてしまいます。
    インストールを実行する前に「アドオンの互換性の確認」というボタンからダイアログを開き、それぞれのアドオンについて「有効にする」のチェックボックスをチェックすれば、従来のアドオンを使い続けることができます。
    この作業は、すべてのアドオンについて必要です。
    (NVDA をインストールし直すたびに必要かどうかは再調査中です)
    アドオンをたくさんインストールしている場合や、頻繁に NVDA 日本語アルファ版を更新している人には、かなり面倒ではないかと思います。
    場合によってはベータ版や安定版に切り替えたほうがよい、というのはそういう理由です。
    この数日、本家では、この仕組みのリリースで大きな混乱がありましたが、メーリングリストなどの議論を読んでいるかぎりでは、アドオンの互換性チェックを見直すつもりはなさそうです。
    NVDA が依存している Python を2019年末までに 2 から 3 に切り替えて、そのほかの NVDA の内部の改良を進めるために、アドオン開発者に対応をしてもらう必要があり、その準備としてこの機能が必要だと考えられているためです。
    NVDA 日本語版についても、こういう仕組みになったことを早く知っていただこうと考えています。
    インストール時のアドオンの操作についてのメッセージは、日本語アルファ版では日本語に翻訳しました。
    通常よりも早いタイミングで翻訳作業をしたので、不完全な部分があるかも知れません。
    従来動いていたアドオンが「手動で有効化」すれば動くかどうかは、アドオンごとに状況が異なりますが、2019.1 で動いているとしても、アドオンそのものが更新されなければ、2019.4 や 2020.1 で動かない可能性が高いです。
    新しい日本語アルファ版を試してもらい、どのアドオンで不都合なことが起きるかを調べながら、NVDA 日本語チームの取り組むべきことを検討したいと思います。

    アドオン開発者のための補足

    アドオン開発者のための公式の説明は developerGuide に書かれています。
    https://github.com/nvaccess/nvda/blob/master/developerGuide.t2t
    具体的には manifest ファイルに

    minimumNVDAVersion = 2017.4
    lastTestedNVDAVersion = 2018.3
    

    のように記載します。
    前者を「最小要件の NVDA バージョン」
    後者を「動作確認済みの NVDA バージョン」
    と日本語では表記しています。
    未来のバージョン番号を 2019.2 のように書いてもエラーにはなりません。
    (が、最新のアルファ版のバージョンにしておくべきという本家のMLでの議論あり)
    2019.1 と書くと本家版 2019.1 とも互換性があり、NVDA 日本語版 2019.1jp とも互換性がある、と解釈される見込みです。
    (日本語版でしか動かない、みたいなチェックは想定していません)
    本家のコミュニティで公開されているアドオンのテンプレート
    https://github.com/nvdaaddons/AddonTemplate
    こちらには
    updateChannel
    という項目もありますが、これは本家の addonUpdater で使われる項目で、不要な場合は None にしておきます。
    focusHighlight の buildVars.py も紹介しておきます。
    https://github.com/nvdajp/focusHighlight/blob/master/buildVars.py

    NVDAとアドオン開発者のための補足の補足

    ユーザーには何の役にも立たないように見えるであろう「NVDA の Python 3 移行」ですが、NVDA の現在と未来の開発者が幸せになれる、というメリットが、めぐりめぐって NVDA のユーザーを幸せにする、という展望があります。
    例えば、いままで NVDA が日本語環境でうまく動いていない不具合の多くは「Windows で日本語の文字コードが使われている場合だけで起きる問題」の見落としでした。
    Python 3 への移行で、そのような不具合が起こりにくくなる、と私は期待しています。

    おまけ:今年出演したポッドキャスト(再掲)

    サイトワールド2018特集 第6回 NVDA日本語チーム(日本視覚障害者ICTネットワーク JBICT ポッドキャスト)
    AccSell ポッドキャスト第140回: 「こういうもの俺自分で作らなくて良い時代になったんだ」
    わしポ 9: Kinsai PyCon mini Hiroshima (nishimotz)

  • PyCon mini Hiroshima 2018 終了

    PyCon mini Hiroshima 2018 が無事に終了しました。
    有料イベントになったにも関わらず、60人以上の人にご参加いただくことができました。
    私は実行委員長として、また企業・団体パトロンの株式会社シュアルタとして、そして「舞え!ひろしま Kaggler」講演者として、あわただしい一日でした。

    まだまだ記録とか精算とか報告作成とかやっている途中です。
    Togetter まとめ
    いつものように最後にスタッフみんなでご挨拶した写真。


    まだ広島で Python 流行ってないの?と言わせてるみたいなスローガンでしたが、今回は「広島で流行らせよう!」というテーマをすこしずつ実践できていけそうな、そんな一日でした。
    今後ともよろしくお願いします。