MathTeXをLuaLaTeXのjlreqで動かそう

MathTeXをLuaLaTeXで動かそう

こどもが算数ドリルがほしいということなので、MathTeX工房さんが作ってくださっているMathTeXを使ってみた。 小学生から高校生までの計算ドリルを自動で生成してくれる。100マス計算、25マス計算も作れる。これ、かなりいいツールだ。

ただ、僕の環境ではpLaTeX環境がない。そこで、LuaLaTeXに対応させてみた。

ポイントは次の3点。

  • ドキュメントクラスが違う
  • 文字コードがSJIS
  • 全角文字の幅指定が違う

以下、順次対応する。

Linuxとかwslなら、sedとnkf使えば簡単なんだけど、僕の手元にあるのは純粋はWindows。 パワーシェルでなんとかしよう。

ドキュメントクラス

オプションでドキュメントクラスは変えられるのだが、ここにjlreqがない。

そこで、オプションの「一行目」に「\documentclass{jlreq}」を入れる。

文字コード

生成される文字コードがSJISなので、これをUTF-8に変換しなければならない。

パワーシェルのスクリプトを使う。

$file_contents = $(Get-Content -Encoding SHIFT_JIS $filepath)
$file_contents | Set-Content -Encoding UTF8 $outfile

全角幅の指定方法

jlreqでは、一文字分が\zw、一行分が\zhなので、それぞれzw, zhから変換する。

変換は、パワーシェルで、-replaceすればよい。

成果物

以上をまとめると、以下のようなバッチファイル(パワーシェルのスクリプトファイル)になる。

ついでにLuaLaTeXでコンパイルしてpdfをビューアに表示させるまでやってみた。

latexファイルをLuaLaTeXに関連付けているなら、1つ目のStart-ProcessのFilePathに直接outfileを指定しても動くはず。

$outfile = $filepath -replace ".tex", "U.tex" -replace ".\\", ""
$pdffile = $outfile -replace ".tex", ".pdf"
$file_contents = $(Get-Content -Encoding SHIFT_JIS $filepath) -replace "zh", "\zh" -replace "zw", "\zw"
$file_contents | Set-Content -Encoding UTF8 $outfile
Start-Process -FilePath "<LuaLaTeXのパス>lualatex.exe" -ArgumentList $outfile
Start-Process -FilePath $pdffile

以上を、「コマンド名.ps1」というファイル名にしておいて、MathTeXで生成したtexファイルを呼び出せば、pdfが生成されて、ビューアに表示される。

Org-babelでMermaid.js

文書中に図を挿入したい!

WordからMarkdownなりOrg-modeなりに移行すると、「今、図をここに書きたい」ということがある。

こういうとき、「やっぱりWordじゃないとな」とか思ってしまう。

ただ、方法を知り、慣れると、実は楽に図を書くことができる方法がある。

それが、Mermaid.jsGraphvizといった作図ツールだ。 これらは、マウスではなくテキストで指示して作図する。慣れればそれなりの図を簡単に書ける。

例えば、こんな書き方でちょっとした図を作ることができる。

flowchart LR
問題意識 -.-> 資料 -.-> 主張

/images/mermaidsample.png

こうしたちょっとした図というかチャートを書きたいときには、一瞬でしかもキーボードから手を離さずに書けるのでとても楽だ。

ちなみに僕はWordに図を挿入するときには、PowerPointで図を作成して貼り込んでいるのだが、それよりも簡単だ。

org-modeでの設定

設定方法は、公式サイトを参照して設定すると簡単だ。

なお、サイトには、mermaid.cliを使えと書いてあるが、おそらく間違いだ。mermaidのコマンドラインインターフェイスにはmermaid.cliとmermaid-cliがある。 前者はもう古いようだ。

後者を使う。

Windows用のmmdc.cmd、壊れてない?

何が問題なのかよくわからんけど、emacsから呼び出すとエラーが出てしまう。

仕方がないので、mmdc.cmdのindex.bundle.jsを呼び出す部分をフルパスでハードコードしてしまう。

いいのかわからないけど、これで取りあえず動く。

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "c:\Users\<username>\node_modules\@mermaid-js\mermaid-cli\index.bundle.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "c:\Users\<username>\node_modules\@mermaid-js\mermaid-cli\index.bundle.js" %*
)

ターミナルから直接mmdc.cmdを呼び出すと問題なく動くので、emacsの設定になにか変なものが残っていてそれが悪影響を与えている気がする。

Orgモードでプレゼンテーションをつくる

Orgモードでプレゼンテーションを作る

Orgモードはあいかわらず便利で、いろいろと活用している。 プレゼンテーションも作れてしまうというので、今回挑戦してみた。

非公開のイベントでの報告なので、サンプルを出せないのが心苦しいところだが、時間があればサンプルを追加してみよう。

PowerPointではなく、Orgモードでプレゼンテーションを作るメリットはいくつかある。

  1. プログラムの計算結果をそのまま掲載できる
  2. LaTeXで書いたものをタイプセットして出力できる
  3. エディタで書類を作成できる
  4. テンプレートがまともならデザインに気を使わなくてよい

正直、テンプレートはそこまで良いとは思わないのだが、前3者は重要だ。 特に、エディタで編集できるというのは大きなメリットだ。

Orgモードでプレゼンテーションをつくるには、従来はBeamerを使うのが一般的だったようだが、最近はReveal.jsの使用がよいようだ。

BeamerはLaTeX用のものであり、最終的にはPDF書類が出来上がるので、それをフルスクリーン表示してプレゼンテーションする。(と理解している)

それに対して、Reveal.jsは、ブラウザにプレゼンテーションを表示して、PowerPointのプレゼンと同じようにプレゼンを行える。PowerPointのプレゼンテーションモードをJavascriptで書いてしまったようなものだ。発表者用画面も使えるし、ポインタでマークしたりペンで書いたりもできる。

テンプレートに関してはあまり気にしていない。僕のうプレゼンは営業用ではなく、レクチャーと学会報告用にプレゼンを作ることが多いので、デザインに凝る必要はない。 だから、プレゼンソフトはなんでもいい。 資料を作成しやすいかどうかだけが重要だ。

論文などの文書作成では、Org-modeにより脱Wordを実践している。計算はPythonにより脱Excelできている。おまけにPythonもbabelの存在のおかげで、Orgモードの文書中に書き込める。(これはJupyterと同じようなものだ)

というわけで、プレゼン作成もOrgモードで完結できれば便利なことこのうえない。

しかも、今回は一つの文書で調べ物メモと出版原稿、スライドをまとめて作成する。 やってみて、そこまでやる必要もないなあとは思ったのだが、まあ、やってしまったものはしょうがない。

修正予定

  • リンクをいろいろ追加
  • サンプルファイルを追加
  • スクリーンショットを追加

Reveal.js+Org-modeを使うメリット

PowerPointを使いたくない!ということだけで見れば、代替手段はいろいろとある。

そのなかでReveal.jsとOrg-modeをあえて使う意味があるのか?という問いへの答えはYES!だ。

スライドを横と縦に配置:Reveal.jsを使うメリット

Reveal.jsの最大の特徴は、スライドを横と縦に並べてプレゼンできる点だ。

普通のプレゼンは一方通行だが、実際にはセクション的なものがある。セクションのタイトルページがあって、各セクションのコンテンツがある。

PowerPointはそれをセクションという形でまとめるが、Reveal.jsはそれを横と縦の関係で整理する。 普段のプレゼンは右に流れていくが、より詳細な説明をするときは、下のスライドを表示する。

公式サイトの画像がわかりやすい。

これって、話をしている相手にもイメージを掴んでもらいやすい。

そして、作成時は普通の文書のように、スライドをツリー状に構造化して把握できる。

プレゼン、つくりやすくないだろうか?

PowerPointのばあいは、セクションを入れ子にはできないと思う。 少し長いプレゼンになると、ここが大きなメリットになる。

Reveal.jsを使う

Reveal.jsを使うための設定は、ネットにたくさんあるので今回は割愛する。

emacsのorg-modeでは、org-re-revealというパッケージがある。僕はこれを使っている。

なぜわざわざorg-mode?という疑問もあるだろうけれど、長期的に見るとorg-modeを習得することは作業効率の改善に大幅に役立つ。

org-modeでの3段階目までの見出しが新規ページに相当して、見出しが各ページのタイトルになることだけ理解していれば、とりあえずプレゼンを作ろうと思えばつくれる。

リカちゃんを修理したよ

リカちゃんは娘のパートナー

娘がずっと遊んでいるリカちゃんの首が折れてしまった。

ネットで調べるといろいろと修理事例が載っているのだが、どうもモデルが違うみたいで、構造が違う。

うちのは、頭とボディをつなぐプラスチックのパーツがついている。頭の側は鉛筆の先のようになっていて、ボディ側は先に輪がついている。ボディには、首の中に2つの突起が出ている。輪をボディに差し込むと固定される。突起を起点に首が前後に動くので上を向いたりうなずいたりできる。

頭の方は頭のパーツにねじ込む。このため、首がぐるぐる回る。

今回はこのボディの突起が壊れてしまった。 けっこう狭いところだし、ポリプロピレン?だとおもうけど、接着剤がつかない。おまけに首を動かすとかひっぱる(^^;)とかするときに力がかかる。 中途半端に治してもすぐにまた取れてしまう。

どうしたものかなあといろいろと試行錯誤してみたものの、なかなかうまくいかない。

首にさすパーツの下がボディに固定できたらいい。パーツの先に先が広がるフック状のものをつけて、ボディにさせばいいのでは?というのが最初の案。

輪っかにフック的なものをつけて試してみる。 ボディにさした後に広がるようなものがうまい具合になくて、ヘアピンなどでやってみたが、しっかりはまらない。

ピンが緩いとグラグラするし、きついとしばらく遊んでいると外れてしまう。

クリスマスにリカちゃんとさようなら

リカちゃんの修理はうまくいかない。

リカちゃんの病院もコロナの関係で空いていないようだ。

ついでに正直なところ、修理に出す料金と手間を考えると新しいリカちゃんを買ったほうが簡単な気がする。その方向で娘を説得しようと、サンタさんを引き合いに出してみた。

「サンタさんが新しいリカちゃんを届けてくれるなら、今のリカちゃんともう遊ばなくてもいい。でも、このリカちゃんは大事だから、首を外れないようにして飾っておく」

という条件で、ようやく娘の了承を得た。

まあ、たしかにリカちゃんがごみ箱にほかされてるシーンはちょっと想像してもつらいものがある。 火葬しようにもすごい黒煙が出て、リカちゃんのお葬式どころか公害になりそうだ。

リカちゃんを永久保存したい

そして迎えた、クリスマス。

新しいリカちゃんは無事に届いた。

壊れたリカちゃんは首を保存用にボディ固定するべく、娘から受け取った。

首が外れないように、強めの接着剤で固定するというのがこのときの案。

ひらめく!

息子にはサンタさんからプラモデルが届いた。

それを手伝うともなしにいじっていると、突然ひらめいた。

もしかして、このランナーがちょうどいいのでは?

というわけで、ボディにドリルで穴を開けて、ランナーを差し込んでみた。 ドリルは目分量で3ミリぐらいのものを使った。 かなりきつめだ。

遊んでいて抜けることはなさそうだ。

いい感じ、というか、首から黒い棒が出ているのはかなり不気味だ。

白にしてみた。

うん、いい感じ。

はみ出たところを削って、首をはめたら、動きも元通り。念のために接着剤もつけたけど、たぶん効いてない。汚くなっただけかも。

emacsのorg-modeで講義の計画と記録を取る(その1)

書きたいこと

講義の計画・講義ノートの作成・ハンドアウトなどの管理を一貫したシステムで行う方法を紹介する。

本記事の説明を実施すれば、一つのテキストファイルで講義が管理できる。

3回程度に分けて執筆する予定だ。

  • その1:システムの構築
  • その2:システムを便利に使う
  • その3:スライド作成への拡張

動機:講義の計画と記録をどうするのか

講義を管理する

みなさんは、講義をどうやって管理しているだろうか。

そもそも、講義を管理するというのはどういうことだろうか。

僕ら大学教員は「教育学」とか「教育法」的な講義を受けていないので、すべてが自己流になってしまう。 大学教員を志す者には教育方法というか、準備を含めた講義の方法を教育したほうが親切だ。 巷ではプレFDという大学教員希望者へのガイダンス的講義が取り組まれているようだが、こういうのは広がってほしい。 (というか、今からでも受けたい)

まあ、それはいいや。

講義は15回+テストの分を管理しなくてはならない。 一般的には、講義は普通4ヶ月程度に渡って続く。 この間、常に全体を見ながら、内容を調整するし、学生の動向を記録する。

学生の出欠等は最近は大学が個別に用意するシステムを使うことが多いだろう。けれども、大学のシステムでは、問い合わせ事項や特記事項をメモできないものが多い。

ついでに、講義の準備資料とそういったメモがばらばらになると、講義の準備中、「あのメモはどこだっけ?」とやりはじめると脱線してしまいかねない。

講義内容などを一覧したい

歳のせいか、講義の記録をとらないと、過去に何をやったのかわからなくなる。 当初計画した回に何をやりたかったのか、覚えてない。 同じ学期に二つ以上の講義を進行させると余計だ。

そんなわけで講義の計画とか記録を取るのだけれど、なかなかいい方法が見つからずに困っていた。 が、ようやく良さそうな方法を見つけて、しばらく運用しているので、シェアする。

講義計画といえば、シラバスが思い浮かぶ。シラバスは講義の概観を見るうえでは便利だ。シラバスは、昔はExcelの四角にちまちまといれていたし、今はWebのフォームに書き込んでいる。 全15回+テストの計画をちゃんと作らないとここで使えない。 シラバスは講義が始まるよりかなり前に作成しなければならない。

講義の準備なんて直前にならないと普通はやらない。ざっとした計画だけ立てて、実際に講義をしながら続きを作っていくなんてこともよくある。シラバスに書く講義計画は、実質、シラバスのための講義計画と言っても過言ではない。

ただ、せっかく作ったシラバスの講義計画なのだから、うまく活用できたらいい。だが、うちのはこれがまったく再利用できない。シラバスのフォームを前にして、講義計画を練り、直接計画を書き込んでしまったのならもう終わりだ。DBへのAPIアクセスでもくれればいいのだけれど、「セキュリティが!」という回答が来て終わりそうだ。

PDFで表示されるシラバスの各回に書き込んだ内容をコピペして手元に写すなんて涙ぐましい行為が求められる。

せめて、別途エクセルにでも書き込んでから、シラバスにコピペしていくべきだ。シラバスを入力するときにそこまで知恵が回れば。

というわけで、シラバスは再利用が期待できないので、講義計画とかは自分で管理することになる。 ただ、シラバスが再利用しやすくても、講義のときに気づいたこととかもメモっておきたいので、手元に記録用のファイルは必要だ。

となると、何をどうすればよいのだろうか。

ここではたと手が止まり、一覧性ならExcel、図表とかも入れやすいものならWord、講義でもそのまま使うことを想定するなら、PowerPointが思いつく。

それぞれは便利なツールだ。ちなみに僕は講義そのものはPowerPointで作成している。

計画的なものなら、Excelが便利そうだ。だが、そこにメモを入れるとなるととたんに面倒になる。

講義のプランにも使いたい

次項で詳しく説明するように、「講義管理メモ」には、もっといろいろな情報を盛り込みたい。

ガチョウを癒そう

金の卵を産むガチョウを癒そう

金の卵を産むガチョウの話はイソップ童話の一つだ。

あらすじは、有名な話だから、知っていると思う。

とにかく、ざっとはこんな話だ。金の卵を産むガチョウを手に入れた人が、もっと金を手に入れようとした。きっと腹の中には金が詰まっているに違いないとガチョウのお腹を裂いたところ、体の中はふつうのガチョウだった。しまったと思ったが、もうガチョウは死んでしまっていて、この人はそれ以後、金の卵を手に入れることができなくなった。

今回はこの話で、ガチョウの体調が悪くなっているときにどうするのかを考える話だ。

ガチョウが病気になっている

体調が悪くなっていると言っても、病気になっているのは、実際にはガチョウそのものではない。気候システムだ。

気候システムは僕たちに暮らしの基盤を与えてくれる。気候システムが与えてくれるものごとを金の卵だと考えてみよう。ガチョウが飼い主に金の卵を生んでくれたのと同じだ。

僕たちに金の与えてくれる提供する気候システムがおかしくなり始めている。

気候変動の兆候は、いろいろなところに見えるが、基本的には以下のIPCCの報告を見てもらいたい。

気候変動に関する政府間パネル(IPCC)第6次評価報告書 (出所:「環境省_気候変動に関する政府間パネル(IPCC)第6次評価報告書(AR6)サイクル」、http://www.env.go.jp/earth/ipcc/6th/index.html

ガチョウをどうするのか

病気になっているガチョウをどうするのか、人によって対応が違うので、タイプ分けしておく。

イソップ童話では、もっと儲けようとしてガチョウのお腹を裂いて殺してしまう。 気候変動ではどうなんだろうか。気候システムは自然環境の循環メカニズムから生まれている。その自然の循環メカニズムを壊すことが、ガチョウを殺すことに相当する。

さて、今、ガチョウが死にそうになっているとしよう。みなさんはどうするだろう。

  1. 多少無理させてでも、生きている間に最大限の利益を得ようとする
  2. 最低限の延命をして、生きている間に最大限の利益を得ようとする
  3. ガチョウを癒やそうとする
  4. 新しいガチョウを生みだそうとする
  5. 誰かが対応してくれると思い、なにもしない

生きている間に最大限の利益を得ようとする

1と2のタイプは、非常に似ている。 1のほうがあからさまだし、2は申し訳程度に延命措置をする。2の方が「努力してます」感があるだけに質が悪いかもしれない。

癒やす

難しいけど、大事なこと。

気候変動はもはや防ぎようがない。では、諦めるのか?

新しいガチョウ

賭けだ。 気候変動はそんなにオッズのいい賭けなのか。

気候変動対策にタイムリミットをつければつけるほど、ギャンブルに乗りたがる人は増える。

技術者は当然このギャンブルにのっていいし、乗るべきだ。でも、一般の人がそこに賭けて、何もしないのは違う。

放置

多くの人はこれだ。

「かわいそうだね」と同情するとか、みかけたら声をかけるとかはするが、それ以上のことはしない。 気候変動では、気候変動を防止しようと奮闘する人を口だけで応援し、自分では何もしない。あるいは、ちょっとだけ省エネしたり、レジ袋を持参したりして、やった気になる。

org-modeでReveal.jsを使ってプレゼンテーション

テキストエディタでプレゼンテーションを作る

文字主体のプレゼンテーションを作るときに、パワーポイントはわざわざ使うまでもない。 なにより、おおまかなプランをエディタで作ってしまったときには、それをいちいちパワーポイントにコピペするのはかなりめんどうだ。

パワポのめんどうさ

メモからページ単位で貼り付けないといけない

思考は階層が自然

パワーポイントで資料を作っていて、一番困るのが、セクションという大まかな区切りしかないことだ。 短時間のプレゼンならそれでもよい。

例えば、30分のプレゼンで3つの話題なら、セクションを3つ作ればいい。

90分の講義だとどうだろう?

僕は90分の講義を、イントロ、トピック3つ、振り返りの5つに分けている。

トピックが3つだと、それを一つのセクションだけではちょっとわかりにくい。 各トピックの中にサブ項目がいくつかあって、それぞれにスライドがある。 それをそれぞれ下の階層にできれば、把握が容易だ。

これ、単発のプレゼンならそんなに困らない。単発なら普通何を話すか覚えてるからね。 でも前任者が作ったスライドとか、去年の自分が作った講義のスライドとかだとどうだろう? もうどこに何があるか探すのが大変だ。

こんなときに、スライドというか資料が階層化してみえるようになっていれば、すぐに把握できる。

考えるときも、講義は15回ある。一つの講義には、イントロ、トピック3つ、振り返りがある。各トピックは、事例と定義、定義の解説、あてはめがそれぞれある。という感じで階層的に考えるのが普通だ。

プレゼン作成のワークフロー

プラン:エディタに箇条書き

プレゼンの方法を解説した本を見てみよう。

いきなりパワーポイントを起動せよ、と書かれている本はまずない。 (あればそれは釣りだ)

まずはなんらかのツールで構想を練る。

僕はこの段階で、付箋とペンを使うのが好みだ。付箋に見出しを書いて、大きな紙に貼っていく。必要に応じて並べ替える。

ただ、これをやるよりも、アウトラインを編集できるエディタを使うほうが楽なときもある。 特に、PCに向かって仕事をしているときに、紙とペンに持ち変えるのがめんどうだったりする。

またさっきまでやってた構成になにか付け加えたくなったときも、その紙を探すのがめんどうで、そのまま忘れることもある。

PCで完結できるなら、それに越したことはないのかもしれない。

パワポでこれをやるばあいは、新しいスライドに本文を書かずにタイトル行だけを埋めて、どんどんスライドを増やしていく。

構成:エディタでレベルを変えていく

ある程度コンテンツの見出しを追加したら、構成を作っていく

紙を使っているなら、納得行くまで付箋を並べ替える。足りないものがあれば、足していく。

これいらないな?と思えば、横に置いておく。(意外と後で欲しくなることがあるから)

この段階をパワポでやるなら、シートが20枚ぐらいまでがいい。シート一覧を表示しながら、ドラッグ・ドロップで順序を変えていく。 複数のシートを選択するときは、ShiftかCTRL押しながらだ。(ShiftとCTRLの使い方は覚えたほうがいい)

蛾に刺された話

久々のガーデニング

先日、草だらけになっていた庭の一角を掃除した。 最近はツユクサが多くて、これに庭が覆われている。

ツユクサは根にも種ができるらしくて、これが繁茂しだすと根絶は厳しいらしい。 そもそもツユクサは水分の多いところに多いと聞くので、畑や花壇スペースはレイズドベッドにしてしまう予定だ。

伸び放題になっているツユクサをざーと抜いていると、背中に何かが入った感覚があった。 枯れ葉のような感じだ。

夜、なんとなく背中の左側がかゆいなあと思って、朝みたら、赤い斑点が大量に背中にでていた。 斑点といっても一つ一つが蚊に刺されたあとぐらいの大きさで、それが無数にある。 かゆい。

家にある虫刺され薬を塗って我慢したけれど、二日目の夜はかゆみで眠れなかった。

翌朝、病院に行くと「チャドクガね」と言われて、飲み薬を一週間分と塗り薬をもらった。 かゆみ止めの飲み薬は劇的に効いて、その夜からはゆっくりと眠れるようになった。他には抗アレルギー剤と抗生物質。 こんなものに抗生物質?と思ったけど、あまりに腫れてて眠れないので、おとなしく服用した。

そして確かに、一週間程度で痒みも腫れもなくなった。 みかけはすごかくて、医者の冷静さにちょっと腹が立ったけど、やっぱり驚くほどのことはなかった。

ガーデニングと虫

庭にはこどもたちも出入りするので、できるだけ農薬を使いたくない。 なにより、バッタとかカマキリとかカナヘビなど、いろんな生き物がいるのがなんだかうれしい。

一方で、害虫はつく。(ちなみにバッタも害虫)

僕の好きな生き物を残して、それ以外を殺すような便利な薬はない以上、これはしょうがない。

ただ、今回のチャドクガのように、あまりに被害がひどいものはやはり駆除したい。 最近はヒアリとかセアカゴケグモなど、危険度が高そうな生き物も日本に上陸していて、少しずつ生息域を広げているように聞く。 それだけに、選択的な駆除には魅力を感じる。

虫といえば、蚊もそうだ。 蚊は薬剤で不胎化したオスの蚊を大量に放つことで数を劇的に減らすことができるという。ぜひやってもらいたいものだけれど、なかなか普及しない。

生態系への影響なのだそうだ。

うーん、僕は基本的に遺伝子組み換えなど、生態系に大きな影響を与える化学的操作とかはやらないほうがいいと思っている。 けれど、こういう都合がいいときだけ、生態系に化学が介入してもいいんじゃない?と思ってしまう。

なんともわがままで、一貫性のないことだ。

続きを読む

新しいPCのセットアップ

Thinkpad

今まで使っていたPCのパフォーマンスが物足りなくなったので新しいPCを買った。

Thinkpad X1 Carbonだ。

今まで使っていたPCはDellのPCで2年前に購入した。普通なら問題なく使えるのだが、最近の労働環境の変化で、ちょっと物足りなくなってきた。

DellのPCはCore i5でSSDの256GBなので、そこまで悪いPCではない。それどころか、最近はバージョンアップのたびにOSが重くなることもないので、2年どころか3-4年は現役で使用できるはずだった。 僕は、普段の使い方なら、ぼちぼちのパフォーマンスのもので満足できるので、ミドルスペックぐらいのPCを数年おきに購入する。

だが、今はそうも言っていられなくなった。

コロナだ。

僕は大学教員なので、講義をする。 講義は、PowerPointのスライドを表示しながらマイクでやるのが普通だ。 正直、大したパフォーマンスは必要ない。

それがコロナで一変した。

ZoomでPowerPointのスライドを表示しながら話すのが基本だが、録画したものを編集しなければならない。 あるいは、PowerPointで収録してビデオに書き出すこともある。 いずれも、とても重い。

特にビデオの編集と再エンコーディングは重くて、90分のビデオを作成するのにその数倍かかってしまったりすることもある。 (条件がよくわからないのだけれど。。。) 普段は90分のビデオをエンコーディング→保存に数十分程度で良い。 が、数十分待ったあと、確認してみたら修正点を見つけた!となると大変だ。

ビデオを保存しておくスペースもだんだん苦しくなってきた。 ビデオと文書とは必要とするスペースがぜんぜん違う。

こうなると、高速なデスクトップPCか、ハイスペックなゲーミングPCの出番のような気がする。 あるいは、Macか。

ただし、僕は移動が多いので、デスクトップでしか作業ができないというのもまたつらい。

そこからは論理的に説明できないのだが、いくつかPCを物色していて気づいたらLenovoをぽちっていた。

新しいPCの基本的なセットアップ

忘れないうちにメモ。

セットアップも簡単になってきた。ほとんどがScoop経由でインストールできるので、ツールのWebサイトを探して一つずつダウンロードしてくる手間がいらない。

まず、Windows TerminalをWindows ストアからインストール。

その後、Scoopを設定して、ChromeとかPowerShellとかをインストール。

Microsoft OfficeはOffice365からダウンロードしてインストール。

GoogleDriveとOneDriveの設定。この2つのクラウドに作業用データの大半をいれているので、この2つを稼働させるとデータの移行が簡単にできる。

以上でほとんどの環境が整う。

Githubから必要なデータのダウンロード

一部のファイルは、Githubにおいている。主にはバージョン管理したいデータだ。

emacsの設定ファイルとorgモード関連ファイル、もろもろの執筆データなどをGithubからダウンロードする。

そのために、sshconfigを設定。

Google日本語入力にAZIKを設定。

今度こそこれで作業環境が完了した。

ちなみに、GoogleDriveなどのクラウドとGithubのようなバージョン管理ツールのどちらにデータを置くかは悩ましい。 今はかなり試行錯誤をしている。

理想はバージョン管理の方ではないかと思うのだが、データをいちいちコミットしないといけないのがめんどうな気がして、一本化できずにいる。

意図しないスリープ

作業ログのつもりだったけれど、不思議な現象に悩まされたので、対処法を書いておく。

続きを読む

Kindle本をオーディオ化(Windows版)

Kindleをオーディオ化するスクリプトが公開されていたが、Macでしか動かなさそうだったので、その部分をWindows+Pythonで実現した。

Kindleを聴きたい

Audibleのヘビーユーザだ。英語版のサービスしかなかった頃から使っていて、100冊以上すでに本を持っている。

僕は車での通勤時間が長い(週に10時間以上)ので、オーディオブックはありがたい。 車で聴く場合、しっかり集中して聴くわけではないので、ある程度知っている物語のほうが理解しやすい。

ただ、日本語版は使ったことはあるけれど今は契約していない。 英語版と比べて、ラインアップが少ないし、本が高いのでなんだか手が伸びない。 日本語版のサービス開始当初は、定額で聴き放題だったのでお得感が強かった。そこから月会費制ではあるものの、月一冊だけおまけについてくるという仕組みに変わった。 そうすると、かなり高くなった印象がして、やめてしまった。

自分でオーディをソースを作るために、新聞のニュースを話させるスクリプトを書いてみたりしたり、いろいろと試してきた。 それでも、小説やビジネス書をまるごと音声化できるとうれしいなあという気はずっとしてきた。

そんなときに、ふと、Androidのニュースに出てきたのがdaimatzさんの試みだった。 どうやら、Kindleの画面を全ページスクリーンショットして、音声化するというものらしい。

ぜひやりたい!

説明を読んでみると、全ページスクリーンショットを撮って、縦書きの画像をGoogle Cloudを使って音声化する。 肝心の全ページスクリーンショットの部分がMac(OSX)限定なのがちょっとした障害だ。

でも、画像さえ準備できたら、なんとかなりそうだ。

画像を準備する部分は自力でなんとかしてみようか。

ちなみに、今の音声合成ってどんな感じなんだろう。自然なんだろうか? Youtubeの「ゆっくり」的な話し方だと、わかることはわかるけど、耳に残って夢に出てきそうだ。 ああいうレベルなら、がんばって画像準備の部分を実装してもすぐに使わなくなるのは目に見えている。 もっと自然なのがいい。

MicrosoftのText to Speechなら、自然な響きの音声でアプリに命を吹き込むことができるらしい。 ここでサンプルを試すことができた。かなり自然で、これならテキストを流し込んで快適に聴けるレベルだ。

問題は、縦書きテキストの画像からテキストを抽出することができるのか?

こちらは、この方法を紹介してくれたサイトの説明を見る限り、かなり精度がよさそうだ。

試行錯誤

自前で実装にトライ

ちょっとがんばるモチベーションが湧いてきたので、まずはdaimatzさんのプログラムを動かしてみることにする。

Google Cloudをインストールしようと試みるところで、いきなりつまづいた。 インストーラがエラーで止まってしまう。

インストーラが動かないというどうにもならない。とりあえず断念して、画像のテキスト化、テキストの音声化を行う別の道を探る。

まずは、音声サンプルを試したMicrosoftの方で実現できないかとテキストの音声化のサンプルをいじってみる。 短いテキストを流し込んで音声化するのは簡単だったが、長文はうまく読めるのかよくわからない。ドキュメントも理解できない。

なんだか、基本的な用語が分からなくて、書いてあることが全然頭に入ってこない。

OCRの方はさらにわからない。

スクリーンショット→テキスト化

困った状況になったけれど、諦めたくない。