leba @ ウィキ

Programming

最終更新:

leba

- view
メンバー限定 登録/ログイン

プログラミング

現ハード:LH55/C2、2T外付けHDD、外付けDVD。

現回線:BIGLOBE光 (フレッツ、実質上下230Mbps程度)。

完習済みプログラミング言語:旧C (ANSIより前、アドレス定数値を利用した「黒魔法」が駆使できた頃の仕様)、Java1.2前後 (含全クラスライブラリ)、ECMAScript初版

ソースが読める程度には会得済みのプログラミング言語:Z80A用マクロアセンブラ、(MSX)BASIC、ObjectPascal (最初に完読したクラスライブラリ体系がTurboPascal用Turbo Vision)、Python (2.1あたり)

テキストエディタは、Vim6.2 (6.2のほぼマニュアル本vi入門 (第5版) (viしか載っていない点が、vim等vi以外の派生エディタも載っている第6版と異なる)、ポケットリファレンス (vi入門第6版に対応) にした (完全に把握するまでは、Gates.lを適用したxyzzyも併用)。ここ (vim onlineから辿れる場所とは似て非なることに注意; そちら側にはexeファイルが無い) のpcの中のgvim62.exeがインストーラで、ソースはunixから、HTMLヘルプ (英文) はdocから入手できる。あと、6.2で日本語ファイルの判別や読み書きにはiconv.dllが必要だ (gvim.exeと同じフォルダ (権限等の問題可能性から、たまたまASCII文字以外や空白等の記号類も含まない私自身のユーザーフォルダへインストール) に入れるだけで良い)。

OpenUtauが.NET6のC#のAvaloniaGUIであることから (C#については、私自身の原C#はver4.0の本リファレンスを参考元とし、他の人が書いたソースは適時オンライン情報で補う形で習得しようと思う)、私自身はプログラミングIDEとしてVSCodium (1.76.0がその本の対象バージョンなので、そのバージョンに呼応するVSCodiumのアップデート機能無し版を使うことにした (Vimはテキスト・MD文書作成に専用化したい。そのVimのメンテ用に32ビット版MinGWを用い (権限等の問題可能性から、完全に私の権限下にある倉庫代わりのEドライブへインストール; USBによる外付けなので速度的にCドライブより遅いが、そんな頻繁に使うわけでも無いのでそちらで十分だと思う)、C99とMinGW32の解説本1解説本2とC99のリファレンスをC自体の参考源とする; ちなみに、CとSchemeはアセンブラを事前にやっておくと、難解さや意味不明さを感じることなく習得できよう)。OpenUtauのGUIであるAvaloniaは、(おそらくは) Monoの昔のWPFをGtk3で再実装したもので、WPFのマルチプラットフォーム版である (完全な互換版は有料で、無料版はWPF「っぽい」レベル)。マルチプラットフォームな.NETについては5の本に依拠し、実際の環境自体も.NET5に私自身は依拠する (もちろん、私自身の作成するC#ソースは4.0ベースで、F#も和書がある2.0ベースとなろう。OpenUtauは次期バージョンで.NET7ベースへ移行するようだが、おそらくに.NET6のサポート終了に合わせてのことなので、それによってソースレベルで変わることはほとんど無いだろうと思う)。silverlightがWPFのサブセットだそうで、その現行版かつオープンソース版であるOpenSilverを使えば、とりあえずデスクトップなWEBアプリとしてはマルチプラットフォームな.NET系GUIが作れるようだ (いずれはWPFの完全実装を目指しているので、その時には無料な完全互換版としてAvaloniaに取って代わるだろうと思う)。

汎用簡易言語はPowershell7 (書籍) にした。私自身は、基本的には1.0 (書籍ポケリファ) ベース (Windowsにデフォルトで入っているのは5.1で、以降のバージョンアップは無くこれが最終版であるが、.NET系は一般に後方互換性が極めて高いので、1.0レベルの知識で問題無く動かせるだろうと思う) でいければ、と思っている。

また、PC用LINEアプリのトレイ起動用等、よりシステムに密着したマクロ言語としてUWSCを使うことにした (本が31b用なので、バイナリも一応31bに揃える)。目的のウインドウの情報は環境によって異なる場合もあるので、GetWindowsInfo for UWSCで調べておく。

// LINEをトレイで起動 (UWSC 31b用)
// 「Windows起動時に自動実行」はオフ
// https://plaza.rakuten.co.jp/tokusenkoreiine/diary/202110270000/ をベースに改造
// %LOCALAPPDATA% は、このWikiにさらすための措置であって、実際には絶対パスでないと起動できない

EXEC("%LOCALAPPDATA%\LINE\bin\current\LINE.exe")

SLEEP(50)

for i = 0 to 50
    SLEEP(0.2)
    ID = GETID("LINE","Qt663QWindowIcon")
    ifb -1 = ID then
        CONTINUE
    else
        CTRLWIN(ID, CLOSE)
        BREAK
    endif
next

EXIT

私はプロのプログラマでは無く、アマチュアプログラマに過ぎない。例えその機械語研究がマイコンキット時代から始められていた (私が最初に入手したコンピュータ・プログラミング関係の本であり、W・E・バトラーの魔術入門角川文庫版 (私が入手したのは横尾忠則デザイン表紙版; 白黒混合の黄金の夜明け団 (と言う貴族階級による同好会) の知識と技術が大量お護り全武装女史ダイアン・フォーチュンによって白のみに洗練された系で、黒へと洗練されたオースティン・オスマン・スパーアレイスター・クロウリーの系とは対極にある) とセットで日曜教会の帰りに購入した) にせよ、MSX時代に既にMSX-CでC言語の研究を始めていたにせよ (アスキー・ラーニングシステムの入門C言語、実習C言語、応用C言語を熟読し、またCプログラムブック三部作も読破して、そのLispインタプリタのMSX移植を試みたが、8086用だったこともあってそれには挫折した)、あくまで「研究」がもっぱらで、実のところ実用的プログラムは一作だに作ったことは未だ無い。そんな私に必要な言語は、何だかんだ言ってプロによるプロのための言語であるGo言語では無く、大学による、数学を初め諸学科の教授や学生へとプログラミングの門戸を開くためにこそ設計作成されたMLが最もふさわしい、とようやくに得心した。特に、「標準仕様」の生成と維持への意欲が最も強いSMLこそが望ましいが、日本語対応やGUIまわりを考慮すると、SMLとは別方言になるOcaml系のF#が最終解となろうか (しかしOcamlやF#はオブジェクト指向組み込みなので、ML系のオブジェクト指向では無い型ベースのプログラミングに慣れ親しむにはSMLの方が断然に良い (私自身はMoscow MLを用いる)。そちらの方法論に慣れ親しんでからF#へ移行するのがベストコースと思う)。

使い分けは、マルチプラットフォームなシェルとしてPowershell、GUIとしてOpenSilver、私自身がゼロから作成する言語としてF#、であり、CとC#は他の人の作ったプログラムのメンテや解析用にすぎない (それらを、私自身のプロジェクトとする際にはF#で書き直す; ただしVimはCで記述されているので、実行環境作成用言語としてCは今後も使い続けることにはなろう)。

OpenOfficeは2.4.3 (langpack_ja.exeは英語版を日本語化するためのものなので、install_ja.exeでインストールした場合は不要である) を使うことにした (解説本マクロ本; 解説本は2.2用だが、2.4.3までUIや機能の大きな変化は無いので問題はないだろう (なぜか日本語版Wikipediaには2.4.3だけ情報が無いが、英語版Wikipediaには在るので、気になる方はそちらを参照されたい))。

また、もうそろそろLinuxへの移行を検討するべき状況となりつつあるようだが、Gentoo LinuxベースなChromebookが、Linux系アプリも普通にインストールできるそうで、いざ移行が必須となった事態にあってはそれへと移行することにした (ハードウェア自体も安いし)。そちらはMozc (非Windows・Mac用なGoogle日本語入力のオープンソース版) がメインそうなので、そのWin64版をいち早く入手して日本語入力は既にそちらへ移行した (mozc_tool.exeのオプション)。

後方互換性や堅牢性 (反改良指向性) 及びそれなりな利便性の見地から、ブラウザはFloorp最新版を確保 (変な制約が無いためか、やはりFirefox系アドオンの方が随所で (少なくとも私には) 使いやすい、と言うより、右上の閉じるボタンがあると前のウィンドウを閉じるついでにブラウザも閉じてしまうことがしばしばで、この閉じるボタンを非表示にできるのが大きい; Vivaldiでもできるが、そちらは私には不要な機能が多すぎて却って使いづらい)。プライベートブラウジングはまったく使わないので、

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Floorp]
"DisablePrivateBrowsing"=dword:00000001

でオフにし、なおしつこく残る「新しいプライベートコンテナタブで開く」コンテクストメニューもuserChrome.cssの次の設定で消せる。

#open_in_private_container {
  display: none !important;
}

メーラーはClaws Mailを使用 (Sylpheed快適操作ガイドを参照)。

軽量マークアップ言語をMarkdownに統一したく (日本語基本文書 (オリジナル版の範囲のみ解説; GFMも解説しているものはしかし残念ながら版が大き過ぎて本棚に置きづらいし、やはり解釈に一番悩むのはオリジナル版の範囲なので、それで充分ではある)、従ってMyWikiはアットウィキ (Markdownモードではページ名にアクセスできず、zawazawaのような作成順位な番号のページ名になってしまうが、1ページの可能サイズはWikiに充分な大きさのようなのでこのまま使っていこうと思う)、またMyBlogははてなブログを利用する (後者はここに使えるMarkdown書式がまとめられている)。

HTMLは5が混乱しているようなので、とりあえずの安全策としてHTML4.01とCSS2を参考源にしようと思う。

画像処理は、書籍を持っているのでそれに準じてGIMP2.6 (とBlender2.7) にしたく思う (GIMPの起動の遅さは解決された。いわゆるボカロPVのCGを描くために、合わせてAviUtlのちょっとそちら寄りな本もゲット)。動画編集と3Dアニメは、いずれはBlender2.7 (私のマシンでは、そのあたりが能力的に妥当であろう) で済ませるようにするつもり (MMDおよびPMXは、商用利用が禁じられているので、いつか商用利用せんとする際に心許ない。AviUtlともどもWindows専用なので、Linuxでも使える同様なものとして、の意味合いもある)。なお、SxAssociatorで事前に登録しておくと、そのアプリを既定のアプリに簡単に追加できる。

人気記事ランキング
ウィキ募集バナー