ぱすたけ日記

日記っぽいのを書きます。

【追記あり】「京都市新型コロナワクチン接種ポータルサイト」のよくあるお問合せをHTML化しました

追記 2021/05/31 22:45

京都市新型コロナワクチン接種ポータルサイト内の「よくあるお問合せ」が19時頃に更新されていて、PDFの項目が増えると共に元のExcelファイルも公開されていました!!素晴らしい!!!!!

追記 2021/05/21 09:15

今朝、京都市新型コロナワクチン接種ポータルサイト内の「よくあるお問合せ」のPDFファイルの中身が差し替わっていて、全てを画像化したPDFから文字列が埋め込まれたPDFに変更されていました。

ちゃんとファイルサイズなども小さくなっていてめでたいですね。

もとより京都市の公式PDFが改善されたら閉じるつもりだったので、以下で紹介している成果物も閉める予定です。

要約

出来事について

京都市新型コロナワクチン接種ポータルサイトというウェブサイトがあります。京都市での新型コロナワクチン接種について分かるウェブサイトということになっているそうです。

このウェブサイトがvaccines-kyoto-city.jpでそもそもlg.jpじゃなくて.jpなのからしてまぁあれなのですが、最近は政府の諸々でもgo.jp使わないパターンとかもあるので、これについては諦めるとします。

本題はこのウェブサイトの中にある「よくあるお問合せについて」という部分です。ここのリンク先を押すとPDFに飛びます。「あ〜〜PDFか〜〜」と思うと思うんですが、さらにそのPDFはなんと全部表が画像なので、ページ内検索やコピペも何も出来ないのです。しかも項目が120個以上あります。

個人的にはそもそもPDFにするなよという感じですが、そこは100万歩譲るとしまして、こういう重要な情報が存在しうるPDFを出力する際に文字を埋め込まないというのは、ページ内検索をこよなく愛する僕としては許しがたい出来事ですし、また何よりも行政が配布している重要な文書にあるにも関わらずアクセシビリティに対する考慮も欠けているという最悪の事態です。

自らが住んでいる都市がこのような最悪の振る舞いをしているのを無視するわけにも行かないので、心優しい市民として「京都いつでもコール」の問い合わせ窓口から連絡しました。

京都市新型コロナワクチン接種ポータルサイト( https://vaccines-kyoto-city.jp/)からリンクされている「よくあるお問合せ」をまとめたもののリンク先のPDFについてです。
こちらのファイルはMicrosoftのPrint to PDFで作成されているようで、エクセルから変換したものだと推測していますが、現状のPDFでは表の中身が全て画像化されており、例えば「接種券」について知りたい場合に、目視で「接種券」について発見する必要があります。
PDFは適切に作成すれば、文字列が埋め込めるはずで、文字列が埋め込まれている場合、PDFビューワーのページ内検索などの機能でキーワードから発見出来ますし、また電話番号などのコピーも可能になります。
現在、このPDFには120項目を超えるQ&Aが載っていますが、自身の求めている情報にアクセスするために120項目を目で見る必要があるのは大変すぎると思います。京都市民は全員このPDFを目で120項目確認して適切な項目を発見できるような視力と読解力をお持ちとお考えなのでしょうか。
また、現状ではアクセシビリティ的な観点からも視覚に問題を抱えている場合、一切このPDFから情報を得ることが出来ないことを意味していると思います。
こちらは元のエクセルファイルが存在するならば、エクセルの名前を付けて保存やエクスポートなどからPDFを選択することで文字列が埋め込まれているPDFを作成できますので、是非差し替えを検討されればと思います。

是非とも担当の方にお伝えいただき検討をよろしくおねがいします。

と、お手紙を送ったのですが、京都市も今はコロナ禍で大変な中、せっせかワクチン接種の準備をしていて、エクセルを操作しPDFを生成し、アップロードする暇ももしかしたら無いのかもしれないと思ったので、PDFを全ページOCRで認識させて、それをウェブページにして勝手に公開することにしました。

PDFをAutomator.appで全部画像にして、それをGyazoにアップロードすると、Gyazoが裏でCloud Visionに投げてくれてOCRしてくれるので、その結果をえいやっと集めてきて、テキストファイルにし、それでもOCRでもそのまま読めるものではないので、PDFと見比べながら2時間弱ほどかけて整形して、 create-react-appでレンダリング作って (create-react-appで作ったものをNext.jsでHTMLをexportする形に変えました。詳しくは追記を参照してください)、Github PagesにGithub Actionsで置くというのを作りました。

誤字脱字があったらPull RequestやIssue、Twitterのメンションなどでお知らせください。

京都市の関係者の方へ

京都市新型コロナワクチン接種ポータルサイト」のPDFが文字埋め込みになれば、このウェブページは閉じる予定です。その他ご連絡などありましたら、 pasta0915@gmail.comまでご連絡ください。よろしくおねがいします。

追記・アップデートなど

「京都市新型コロナワクチン接種ポータルサイト」のよくあるお問合せをHTML化しました - ぱすたけ日記

素晴らしいけど、やっぱり句読点が半角カンマになってるの読みづらい。そこは置換しても良かったのでは。

2021/05/14 12:27

OCR結果が , になっているの若干気になっていたけど、 id:kamm さんからもブコメで指摘があったので全部置き換えました。

id:t_f_m さんによって電話番号がリンクになりました。ありがとうございます!!!!

その他にもOCRの修正などなどPull Request頂いています。ありがとうございます!

「京都市新型コロナワクチン接種ポータルサイト」のよくあるお問合せをHTML化しました - ぱすたけ日記

html化について分からなかったが、テキストエディタで地道につくったのだろうか?エクセルや下手なエディタで作ると余計な情報が着きすぎて表示に時間がかかるようになったりするけど。

2021/05/14 19:38

id:hazeyoshida 詳細はGithubにコードを置いているので見てもらえばと思うんですが、こういう形で質問と回答のデータを作って、それを変換して表示しています →仕組みをNext.jsで書き直したので、HTMLの生成はNext.jsに任せるようになりました。

権利について

ブコメなどでも話題に上がってますが、著作権などについてはサイトポリシーでは二次利用の禁止が書かれていますが、気にしない、むしろ早く京都市から連絡が来て不要になって閉じたいというスタンスです。著作権法十三条より問題はないのではないかという見込みもしていますが、専門家ではないので、専門家の方居たらこっそり教えて下さい。

更新追随について

「京都市新型コロナワクチン接種ポータルサイト」のよくあるお問合せをHTML化しました - ぱすたけ日記

元の情報が更新されたときに反映されるのだろうか。

2021/05/14 21:39

id:yamada_k 元の情報の更新がされたときに気付けるように定期的に元のウェブページ https://vaccines-kyoto-city.jp/ 内のよくある問い合せ欄のリンクが更新されたかどうかをチェックするして、変更があった場合はSlackで僕に通知する仕組みを動かしています。

vaccines-kyoto-city-faq/check-updates.yml at master · pastak/vaccines-kyoto-city-faq · GitHub

これで更新自体は気付けるようになっています。また、更新されたときについてですが、よくある問い合せがHTMLになっていたり、PDFに文字列が埋め込まれている形式に改善されていた場合は今回作成したウェブページはよっぽどのことがない限りはクローズする予定です。更新があった時にPDFが今の形式のまま追加された場合は頑張って更新する予定ですが、力尽きていそうだったら是非Pull Requestなどで更新を手伝っていただければと思います。

ちなみに今日 https://vaccines-kyoto-city.jp/CSSがコンフリクト解消失敗しているという話もありました。

これを見て「へ〜」と思っていると、CSS内にFAQっぽいクラス(未使用)を見つけたので、もしかするとHTML側に来るのではという気配もしていますが、どうなるのでしょうか。楽しみですね。

HTMLの生成をNext.jsに変えました

クライアントサイドでパースして生成する必要ないよなと思っていたので、一念発起してさっさとNext.jsに置き換えました。

Next.jsのドキュメントにcreate-react-appからの移行のページもあったのでサクッと出来た。なにげに初めてちゃんとNext.js触ったので良い機会になりました。

構造化データも付与してあります。

「ユニコーン企業のひみつ」を読んだ感想

「ユニコーン企業のひみつ」をGW中に読んだあとに書いたツイートを貼りつつ補足を書いてみます。

読んでから数日経って振り返った感想としては

  • 書いてある内容は現実の良い話事例とそれを抽象化したプラクティスという感じで良かった
    • 全体を通して、すでに実感していたりエピソードとして知っていることも多いが、それらについて言葉を使った効能の説明があったり、そのことに関して自分には無かった視点からの説明のアプローチがあったりして、気付きがあるという感じだった。
  • 一方で"エンタープライズ企業"の社員がこれを読むのは「スタートアップに転職したときのための心準備」という感じだし、さらにスタートアップの構成員が読んでも、じゃあこれに感化されて「企業組織」を作れるかというとそれも怪しいなと思った。そういう意味ではこの本で熱を受けたらその熱をなんらかの方法で上司に伝播させトップダウンで文化を作ったり変えていくことを決める必要がありそうだなと思った。
    • 「ミッション」ベースで進めていくのはとてもボトムアップ的なアプローチであるけど、これをゲットするにはまずはトップダウンで決断をする必要があるので、Spotifyもこれを初期の頃にやっていて、その時のトップが今も居るので維持されてアップデートされているのだなと思った。
      • 例えば、もっと大きくなって外から偉い人がやってきても理解され続けるのかというのは気になる
    • なので、スタートアップをこれからやる人とかはこういうのを読んで憧れておくのは良さそう。そのうえでどう自分に取り込めるか。
  • 権限や信頼は勝ち取っていって、それを我々に与えることで生まれる価値を示し続けるのをやっていくしかないといけないなぁと思った

  • 僕がアルバイトだった頃から4半期会で会社の財務指標や各サービスの指数が社長から説明付きで共有されていて便利だな〜と思っていた
    • こういう情報公開が大小色々あると横から口を出してコラボレーションも出来るし、ボトムアップでチームとしてどういうアプローチで問題を解決するかを話し合える感じになっているなと。
  • 改めて自分たちが得ている文化みたいなのってこういう風に説明できるんだなと思った。こういうのを使って、その状況の価値というのを伝え続けていく必要があるなと思うなどした。

  • ちょうど知り合いから「スタートアップで『テック企業文化』を作るにはどうしたらいいと思うか」という相談をされていて、ちょうどTeam Geekとかを引用しながら、スタートアップとエンジニアカルチャーみたいなことを考えていたのだけど、そんな中でこの本が出たので、その練っていた文章を全部捨てて、「まずは『ユニコーン企業のひみつ』を読みましょう」とした。
  • 非エンジニアも含めて文化を作って、ときにはスクワッドなどを通して色々な人とチームを組んで会社のミッションに取り組んでいくというストーリーが存在していることに注意しないと、「文化の中心」がエンジニアに寄りすぎてしまうなと思った。この相談を受けたときも「非ITエンジニアとして」みたいな主語が存在していたので、まずはこれを否定する作業をしていたのだった。

  • 「XXXにお金を出します」というのは何をどうやって速度を高めるかという話であるのだなという視点は今まであんまりなかったなという気付きがあった。例えばこの話は「オライリーの本が全部読みたいときに読めて、発売日には届いてて便利だなあ〜」というくらいの受け止めだったけど、たしかにこうしてある程度読むだろうからということでオライリーの定期購読にお金を出すことで、僕らがその本にアクセスする速度が上がってそれがアウトプットとか成果の速度の向上に繋がるのはそりゃそうだなと思った。

  • ある後輩がスタートアップに誘われてCTO的な立ち位置に居たんだけど、ある時その後輩とそのスタートアップのCEOとそれぞれと話す機会があり話を聞いてみると、その後輩は「示されている締め切りには間に合うのだから、間に合えばその間はどういう進め方でもいいだろう」と思っていたが、CEOは締め切りが迫っているのに焦っている気配がなくて心配なので、「もっと真面目に取り組んで欲しい」みたいなことを言ってしまうという衝突があり辛いという話だった。そのCEOに「締め切りに間に合うと言っているのならそれを信頼するのがまずが必要なのでは」と伝えたりしていたけど、まさにこの話だな〜と思った。
  • CEOやマネージャーはチームを信頼して権限を与えて、口を出さない。チームは一方で社が示しているミッションやゴールを達成するように頑張って信頼に応え続ける。この往来をお互いにやっていかないとそこがズレてしまって軋轢になってしまうんだなという風に当時のことを思い出したりした。
  • この本を読むとこの2つ「信頼する」と「権限を与える」がとにかくキーワードとして出てくる。この本を読む前から僕の所属している会社ではそういう文化があったけど、一方でこのエピソードのようにその文化が無く衝突してしまうこともあると思うと、この2つの柱を獲得できていたのは良かったなと思うものの、これをどうやって得るかという問題はありそうで、この本でも天賦されるようなものとして登場するので、これを得る得ないの断絶があるのは辛い。これからは断絶していそうなときにこの本からその発想を得られるのは最高なのでは?

というわけで感想と本を読んで思い出したりしたエピソードを書き殴ってみました。

2021年GW 7日目日記

4時に起きてチャンピオンズリーグ準決勝 マンチェスター・シティvsパリ・サンジェルマンを観た。

エンバペが怪我で出れず、2点を取られ、さらにディマリアが退場した辺りで完全に決まってしまいましたね。なかなかネイマールというかパリは去年の決勝といいチャンピオンズリーグでなんか勝ちきれない感じの印象がしますね…

6時に試合が終わったので再度寝る。9時から『香川照之の昆虫すごいぜ!「春だよ!課外授業はテントウムシ」』の放送を観たかったので9時に起きる。

30分で放送が終わったら予想通りあまりにも眠いので再度寝る。13時過ぎくらいに起きた。

14時から大宮-新潟をDAZNで観る。大宮が勝ち越すシーンもありつつも最後は仕留めきって勝つ新潟。今年の新潟は本当に強い。J1で川崎が無敗で話題だけど、実はJ2で新潟も無敗なのでそろそろ負けて欲しいがなかなか…大宮もスルーパスの狙いが決まって良かったけど勝てないねぇ…

今日の本命は18時からの琉球-京都なのだけど、開始まで2時間弱ほど時間が発生したので、GWの間1回もエディタ見なかったので、なんか書くかと思って、pastak/scrapbox-converterをnpm v7のworkspacesを使うようにしようと取り組むも、npmのバグに遭遇したので終了。

で、あーだこーだやってると、琉球戦が始まったので観た。試合展開は京都も琉球もどっちも狙いが出つつも、お互いにそれを潰してスコアレスのドロー。琉球の守備がかなり堅かったな〜。

連勝は途切れたけど、ここで差が開くよりは良かったと思ってまた次の試合から頑張って欲しい!!

GWは今日で終わりだけど、明日も4時からチャンピオンズリーグ準決勝あるので早めに寝る予定。

GWは振り返ってみると大体ずっとサッカーを観ていた印象。名古屋と川崎の2試合が他の試合と日程がズレていた関係で観ている日が多くなった印象。この辺はDAZN様様という感じがする。もう少しコード書いたり本読んだりするかなと思っていたけど、まぁその辺はほぼ結局しなかったので、こんなもんかという気もする。来年こそはどっかに遊びに行ったり飲みに行ったりするめちゃくちゃなゴールデンウィークを過ごしたいですね!!

2021年GW 6日目日記

朝起きたら11時前くらいだった。

GWなので曜日感覚が全くないけど、どうやら火曜日らしくDAZNJリーグジャッジリプレイの配信が始まっていたので見る。セレッソがハンドでPKを与えたシーンで新外国人DFの2人ともが後ろ手を組んでたというのが印象的だった。

日曜日にTVでびっくりドンキーを見た結果、近所のびっくりドンキーまで自転車で行って昼ごはんを食べた。エッグバーグディッシュと悩んでのポテサラパケットディッシュ。

f:id:Pasta-K:20210505144256j:plain

商品自体は以前からあったが時流に乗って、びっくりドンキーオリジナルというか正味のところとして小樽ビールが作っているノンアルビールを飲む。

f:id:Pasta-K:20210505144258j:plain

個人的にはかなり麦汁の甘味が強くて半分くらいで満足した。もう少し苦味とかがある方が助かるかな〜…

自転車で外を走るにはちょうど良い気候だったので、京都醸造まで自転車で行って『辛(SHIN)』を買った。

その後は家に帰って、川崎-名古屋を見た。また川崎の圧勝かと思ったけど、後半名古屋が巻き返しただけにオウンゴールはもったいなかったな。今シーズンは直接対決はこの連戦で終わりで後は名古屋以外のどこが川崎を止められるのかというところにフォーカスが移る今のJ1というか川崎はスゴい。

ユニコーン企業のひみつ』を読んだ。

ページ数短くてシュッと読めた。詳細な感想は別途分けるかも。Tweetはしたので貼って置きます。

相席食堂とごぶごぶを見て、4時KOのチャンピオンズリーグ見たいので一旦寝た。

2021年GW 5日目日記

昼ごはん、母がムジャラのカレーを食べたいというのでテイクアウトをしに行く。

午後から友人たちとゲームをしようという話になっていたので、ゲームをする。

スマブラSP、先日久しぶりに起動しようとしたらなんかロードが終わらなかったので、再ダウンロードし直したら3時間くらい掛かって過酷だったけど、スマブラ自体は久しぶりに遊んだらやっぱり面白い。Discordで話しながらやっていたけど、時間制乱闘だとテンポよく遊べて良いですね。ヨッシーのヒップドロップで自滅するやつとか、ガノンドロフの魔人拳を当てて大喜びなどをしていた。

Draw & Guessをやろうとするも、Steamのインストールと起動に苦戦し*1、起動するもその後ゲームサーバーに繋がらなかったので、断念した。その代わりにやったGartic Phoneというお絵かき伝言ゲームは非常に面白かった。アイスブレイクとかにも良さそう。

そのあとはワードウルフを遊んだ。サーバーが素朴にherokuのdjangoっぽいエラーを返してくるなどもあったけど、こういうコミュニケーションゲームを知っている人たちとやるのは面白いですね。

ちなみにゲームをしながら飲んだビールはこちら。

その後は少し寝て、昨日の分と今日の分の日記を書いている。

明日は川崎-名古屋を観て、あとは本を読んだりしたいという気持ちです。

今日の1冊

「しまなみ誰そ彼」の鎌谷先生の最新作。前作にあった人との交流の中で自身の気持ちを掴んでいくという軸は今作もありつつ、『死との向き合い方』を通じて女子高生と神さま、不死身の男それぞれの死生観、人間と神さまの接し方の違いが浮きぼりにされる。旅紀行の形式も良いし、メイン人物が3人なのも良い*2、話も絵も相変わらず上手い。今作も最後どうなるのかが今から楽しみ。

*1:https://www.reddit.com/r/MacOSBeta/comments/kgkwvz/steam_doesnt_work_after_updating_to_macos_big_sur/

*2:個人的に前作のような登場人物が多いのは面白いけど、覚えるのが大変なので…

2021年GW 4日目日記

特に予定も何もなかったので呆然と過ごしてた。

13:30からそこまで言って委員会を見て、15時から大阪ダービーを観た。

リモートチアラーで中村憲剛黒木ひかりトークを聴きながら観る。中村憲剛の解説というか場面の説明はFootball Studyでもそうだけど凄い丁寧で分かりやすくて凄いと思う。「ひらがなかいせつ」と呼ばれていて面白かった。

試合自体もダービーマッチらしく激しくて見応えがあるものだった。2回のハンドでVARというシーンもあったけど、あのシーンはそれぞれどうなんだろうな〜。個人的には取られても仕方ないけど厳しい気もするなぁと思った。特に1つ目。

セレッソが守備を固める選手交代をした直後に点を取って追いついたガンバ。試合数も少ない影響もあって順位が低迷しているガンバ大阪だけど、まだまだ持ち直せそうだなと思った。セレッソは出場中は絶好調でキレッキレだった大久保が負傷交代したのは少し心配。

そのあとは『週刊さんまとマツコ』見て、『つぶれない店』のびっくりドンキー特集を観た。また友達と深夜に突然びっくりドンキー行きたいな〜。

その後、F1のポルトガルGP決勝を観た。

実況解説の言ってるワードをSlackで投げると友人たちが答えてくれる便利な体制が構築されたので、タイヤやFastest timeの扱いやチームが取っている戦略*1などを教えてもらいながら観たので非常に楽しめた。ちょっとずつ選手の名前とかも覚えてきつつある。サッカーは1試合でフィールド上に同時に22人居て、ベンチにも居ると思うと、シーズン通じて20人しか居ないので覚えるのは気楽。

F1終わってDAZNのトップを観たら、マンチェスターユナイテッドvsリバプールのキックオフがまもなくだったので見始めるも、ユナイテッドサポーターがスーパーリーグに賛同したオーナー一族への抗議をしている影響で始まってなかったのだけど、実況の野村さんと解説の戸田さんが喋りで繋ぎ始めて、それが面白かったので聞いていた。

キックオフ予定時間が日本時間の24:30だったけど、そこから1時間経ってもまだ選手たちはホテルを出てないという話もありつつ、その15分後ほどで試合は延期が決まった。お2人は話が盛り上がっていて、配信映像の表示が変わっていることに気づいてなくて面白かった。

しかも今、イギリスサッカー界は相次ぐ人種差別や誹謗中傷とそれらへの対策をしないTwitterへの抗議でTwitterの更新をボイコットしているので、公式情報がTwitterなどで発信されないというのも相まって大変そうだった。ちなみに現地はこういう感じだったらしい。

この試合マンチェスターユナイテッドが負けるとマンチェスターシティの優勝が決まる1戦だった。延期の扱いにはなっているものの、ユナイテッド側の問題ということでユナイテッドの0-3での負けということになるとシティの優勝が一気に決まるけど、これは根本の問題が問題なので、まぁそういう扱いにはならないだろうなと思っているけど、果たしてどうなるか。

今日の1冊

1巻の時はどうなるかな〜と半信半疑だったけど、2巻で完全に良い感じになったので、2巻まで一気に読んでみてください。登場人物たちが会話を通じて、それぞれの方法で自分自身や恋愛感情、その好きの相手との向き合い方などを探していく姿が良いですね。

*1:実況が「おさえる」というワードを使っていてその意味を聞いた