週間の縦型カレンダーを生成するアプリ

カレンダーは毎年週間の縦型のもので,自作のものを使っている. 市販品ではメモ欄が一番左にあるが,自分の好みである一番右にしている. また,定型の予定は事前にプログラムで書き込んでいた. 最近,Pythonを勉強しているので,TeX版をPythonに書き直した. だいたい求めるものができた. さらに,streamlitというwebアプリ作成のライブラリがあるので,web版にしてみた. 個人の好みはそれぞれなので,1月始まり・4月始まり,レイアウトの左寄せ・右寄せ,日曜日・月曜日始まり,1日の開始・終了時刻はweb版ではカスタマイズできるようにした. https://vercal.streamlit.app/ 定型の予定は以下の形式のエクセルファイルを作れば,繰り返してくれる. period_start period_end week_of_day event_start event_end event except 2025-04-10 2025-07-10 wed 10:30 12:00 数学 2025-05-07;2025-05-14 2025-04-10 2025-07-10 mon 12:30 12:30 開始のみの予定 定型予定のファイルの詳細は以下を参照してほしい. コードもすべて公開している. https://github.com/matutosi/vercal 使い方は,なんとなくわかりそうだとは思う. でも,説明はまだ全然なので今後整理していこう.

pivoteaとpivoteapy

pivoteaのPythonの関数自体はできてきた. せっかくなので,Pythonの環境がなくても実行できるように,TkEasyGUIとPyinstallerを使ってexeにする予定.

pivoteaとpivoteapy

pivoteaというRのパッケージをPythonに変換している. Geminiに相談してコードを変換したが,やはりそのままでは駄目で,エラーがでる. でも,Pythonにも少し慣れてきたので,ちょっとずつデバグしていったら,それなりには動くものになってきた. うまくできたら,“pivoteapy"として公開できるかもしれない. Pythonののパッケージとしてまとめるだけでなく,さらにPythonからRに戻すと,言語の翻訳と同じでRのコードが簡潔になるような気がする. 例:不自然な英語 –(AIで翻訳)–> 他の言語 –(AIで翻訳)–> 自然な言語 Geminiにリファクタリングを頼むのとどちらがきれいなコードになるのか試してみよう. https://cran.r-project.org/web/packages/pivotea/index.html

easypdf

easypdfでPDFの文字列を強調表示するものを作成した. https://github.com/matutosi/easypdf

easypdf

easypdfというのを作った. 作ったというほどのものではないが,Windowsの .exe 形式の実行ファイルなのでプログラミングをせずとも使える. とりあえずは,PDFの結合をするだけのものを公開した. 使い方は以下をご覧ください. https://github.com/matutosi/easypdf

発表資料

論文とか学会発表などの資料の公開ページへのリンク. https://www.dropbox.com/s/wz0c13ksncvjh3k/link.txt?dl=0

textrar

textrarというRのパッケージを作った. textrar: https://cran.r-project.org/web/packages/textrar/ みんなの自動翻訳という翻訳サービスをRから利用するものだ. APIは整備されているのだが,使い方がちょっとややこしいので,簡単に使えるようにした.

screenshot

画像認識してクリックするパッケージとして,PythonではPyAutoGUIがある. 知っている範囲では,同じようなものがRではなかった. Rでは,マウス・キーボード操作の自動化パッケージとしてkeyboardsimulatorがあるが,画像認識の機能がなかった. そこで,その機能を補完するものとして,screenshotというパッケージをつくってCRANに登録した. なお,このパッケージには,Rからスクリーンショットをとる関数と,画像を元にスクリーン上での位置を特定する関数などがある. keyboardsimulatorと組み合わせると,便利なはずだ. ちなみに,これまでCRANに登録したパッケージには以下のものがある. moranajp: https://cran.r-project.org/web/packages/moranajp/ ecan: https://cran.r-project.org/web/packages/ecan/ clidatajp: https://cran.r-project.org/web/packages/clidatajp/ pivotea: https://cran.r-project.org/web/packages/pivotea/ screenshot: https://cran.r-project.org/web/packages/screenshot/

画像位置の特定

画像認識してボタンをクリックするのを自動化するために,Rでコードを書いていたら,やはり使いものにならないぐらい遅かった. そこで,Rcppを使ってC++で書き直した. 最低でも10倍,うまくいけば50倍ぐらいになると思っていたが,3倍ぐらいの速度にしかならない. しかも,場合によっては3倍ぐらい遅いこともある. たぶん,C++の書き方が良くないのだと思うが,別の方法で実装することにした. 同じような色だけの画像を認識するのは難しいが,通常 1 needle_imageとhaystack_imageの各ピクセルで共通する色を抽出 2 抽出した色のうちhaystack_imageで出現頻度の少ないものから1つ選んでneedle_imageでの位置を把握 3 needle_imageでの位置をもとに,haystack_imageの基準点(1,1)を抽出 4 出現頻度の少ないものから,順次2と3を繰り返し 5 haystack_imageの基準点が1つに絞れたら,それが探し出そうとしている画像の基準点と一致しているはず 全ピクセルの一致を目指しているのではないので,厳密な一致はしない可能性はあるが,画像があれば必ず一致するはずだ. 厳密な一致を求めるときは,最後にチェックを入れれば良い. ということで,コードを書いたら結構速い速度になって,満足. 単一色の画像の中からその一部を特定するのは無理だが(このコードに限らず,そもそも無意味),実用的な範囲では使えそうな感じだ.

コマンドラインでスクリーンショット

Windowsで画面のスクリーンショットをとるにはPrtScを押せば良いが,コマンドラインから取りたいときには不便. コマンドラインからできないか探したら,C# でつくったものがあった. .net frameworkは必要だが,“selfcompiled C# program"とのことなので,batを実行すれば勝手にexeが生成される. これはすごい. https://superuser.com/questions/75614/take-a-screen-shot-from-command-line-in-windows#answer-943947 https://github.com/npocmaka/batch.scripts/blob/master/hybrids/.net/c/screenCapture.bat また,下のところにあるコードはマルチディスプレイにも対応している. https://superuser.com/questions/75614/take-a-screen-shot-from-command-line-in-windows