来年の指針。

 ネットの記事で「40代以降の転職」について読んだのですが、やはりこの業界で生きて行くには常に最新の技術を持っておく必要があり、20年も前の教科書に載っているような技術ではとても戦えないとの事でした。
 豚が持ち合わせている技術はC/C++とアセンブラですので、正に20年以上前の教科書で学ぶような技術です。勿論「温故知新」という言葉通り、古の言語を使えるのはプラスだと思います。しかし現在の主流言語(PythonやらC#やらその他Web系の開発言語なども)が使えないようでは全くお話にならないと言うのが現状です。
 そこで来年から2カ年系計画で、豚が学んで行く技術を決めました。
・Python
 この言語は外しようが無い必須言語だと思います。今最も熱い言語で、今後も幅をきかせてゆくだろうと思っています。これはかなり深いところまで学習しようと思います。

・C#
 これは豚のライフワークである「ドラクエもどき開発プロジェクト」の一環で、Unityを使ってみようと思っているのですが、Unityを弄る上で必須言語がC#の様です。
 どちらかと言うと「勉強したい」と言うより「勉強せざるを得ない」と言う感じで、どうしても避けては通れない言語です。

・C/C++
 古の開発言語であるC/C++ですが、まだまだ豚は知らないことが沢山あり、ロジック次第では本当に何でも書けてしまうこの言語を、手放すわけにはいきません。
 また、DXライブラリを使用させて頂く上で、この言語は必須となっているので、腕を鈍らさないためにも引き続き勉強をしていこうと思っています。
 寧ろこの言語が豚にとって主流となると思われます。

・Excel マクロ/VBA
 豚が現役の頃は表計算と言えば「マルチプラン」か「ロータス123」でしたので、恥ずかしながらExcelは未だかつて触ったことがありません。
 簡単な表計算さえ出来ないので、一般知識程度には触れるようになっておこうと思います。
 豚はOffce365に加入しているので、使わなければ勿体ないです。
 取り敢えずの目標は、今手入力で作成している「弟の発作発生リスト」をExcelで簡単に見やすく表にまとめる事です。
 療育センターの主治医に提出する物なので、見やすい一覧を作りたいです。

・Access マクロ/VBA
 これはExcelにも共通することなのですが、「弟の発作発生リスト」をExcelから引っ張ってきてデータベース化するのを目標としています。
 Accessはかなり古いバージョンになりますが、プログラマ時代にVBAでアプリを書いていましたので、基礎の基礎は把握しているつもりです。
 しかし近代のバージョンにあるような機能などは全く把握すらして居らず、一からの勉強をすることにしました。
 豚にとってはリレーションシップを張ったりするよりもSQLで書いてしまった方が早いのですが、また力業になってしまって全然スマートでは無いデータベースになってしまうので、標準のAccessを使ってデータベースを作ったり操作したり出来るようになりたいと思います。

 他にも時間があればWordも弄れるようになってみたいし、Javaも触れるようになっておきたいのですが、2年間に学ぶことが多すぎるので、あくまでも時間があれば勉強したい科目として上げておきたいと思います。
 豚はWordも全く触れないので、基本的な書類作成ぐらいは出来るようになっておきたいとは思うのですが。豚の現役時代は、ワープロと言えば「一太郎」の時代でしたので、DOSベースでの一太郎なら多少は触れます。しかしWindows化されてからは機能が多すぎて豚には付いていけなくなってしまいました。
 しかし高校生ですら学校で習うツールなので、「Word」「Excel」「Access」「Power Point」位は自由に使いたいなぁと思ってもいます。まぁ時間があればですが。

 以上、令和4年と令和5年の2年間に渡って身につけたい最低限のスキルを挙げましたが、勿論中心は弟の介護です。介護生活を送りつつ時間を見つけてスキルアップをしていきたいと思います。
 さて52歳の豚は笑っているでしょうか? それとも挫折に涙しているでしょうか?
 それは50歳の今をどう生きるかにかかってきていると思うので、もうこれ以上時間を無駄にすることなくスキルアップに励むつもりです。

 しかしこれだけのスキルを、いま流行りのネットスクール(とでも言うのでしょうか、ネット上で勉強できる専門学校の様なもので、教科ごとに購入することができる様です)で学ぶとすると軽く百万円はぶんどられてしまうので、地道に書籍を参考に勉強するしかないですね……。

間もなく夕方。

 今朝の起床は昨夜の11時半頃でした。午前2時頃に実家から呼び出し電話があり、午前4時半まで実家で弟の介護をしていました。
 帰宅してからはパソコンチェアに座っていて、知らない間にうたた寝。1時間弱ほどいなむりました。
 それから食事をしたり実家で仏事をしたりして、時間はあっという間に流れていきました。
 そして気が付けばもう午後3時半。今中ら何をしようかと迷っています。

 Pythonの勉強ですが、後半になるにつれて進捗度が速いため、何か別の書籍をテキストにして再開しようかと思います。当然勉強したところとかぶるのですが、それも良い復習として勉強し直します。
 Pythonの入門講座では対話型等が採用されているため、豚のようにコードエディタでガシガシ書いて一気に実行する方法がとられないので、次回はそのような点に気をつけて、テキストを慎重に選びたいと思います。(既に持っている書籍か、メルカリで購入した物にするかはまだ未定ですが)

 と言うわけで、一度「Pythonの勉強」は切り上げて、もっとわかりやすく書かれている書籍に移行しようと思います。

 ではでは……!

Pythonの学習の続き その3。

 今回はリストの機能からです。
 リストに格納されているオブジェクトの一部を切り出す機能を「スライス」と言います。

リストの変数[始点:終点 + 1:ステップ]

 次に例を書いてみます。

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numbers[3:8]
[3, 4, 5, 6, 7]

 例はnumbersのインデックス3からインデックス7までのオブジェクトを取り出して表示しています。
 始点は3で良いのですが、終点は7ではなくて1を足した8を指定します。
 また、インデックスが偶数のオブジェクトだけを取り出すには、

>>> numbers[::2]
[0, 2, 4, 6, 8]

  の様にステップのみに2を指定します。スライスの始点と終点を省略すると、先頭から最後までが対象になります。
 また、

>>> numbers[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

 の様に「-1」を指定すると、オブジェクトの並び方を逆にしたリストを表示する事も出来ます。

for v in リストの変数:
    処理(vに対する処理)

 上記はfor文を使って、まとめて処理をする時の構文です。ここで注意すべきは「処理はインデントして記述する」事です。
 C/C++ではforやwhile等を使った処理を書く場合は、コードの可読性を上げるためにわざとインデントをして記述していました。
 しかしPythonでは、これがルール化されています。インデントをせずに記述すると、思ったような結果は得られません。
 変数vにはリストのオブジェクトがインデックス順に格納されます。例としてnumbersのオブジェクトを10倍して表示する処理を書いてみます。

>>> for v in numbers:
...     print(v * 10)
...
0
10
20
30
40
50
60
70
80
90

 2つめの「…」の後ろでEnterキーを押すと、処理が実行されます。

 リストのコピーを作りたいとき、幾つか注意すべき点があります。

>>> fruits1 = ["リンゴ", "メロン", "バナナ"]
>>> fruits2 = fruits1
>>> fruits2
['リンゴ', 'メロン', 'バナナ']

 一見すると「fruits2 = fruits1」と書く事でfruits2にfruits1がコピーされたように見えます。またfrutes2を表示しても、fruits1と同じ内容が表示されています。しかしこのコードはC言語で言うところのポインタのコピーに過ぎず、実はfruits2もfruits1も同じオブジェクトを指しています。

>>> fruits1[1] = "イチゴ"
>>> fruits2
['リンゴ, 'イチゴ', 'バナナ']

 の様にfruits1の中身を書き換えたのに、fruits2の内容まで変わっています。
 実際にコピーをするには、リストが持っている関数「copy関数」を使います。

>>> fruits1 = ["リンゴ", "メロン', 'バナナ']
>>> fruits2 = fruits1.copy()
>>> fruits2
['リンゴ', 'メロン', 'バナナ']
>>> fruits1[1] = "イチゴ"
>>> fruits2
['リンゴ', 'メロン', 'バナナ']

 上記のようにfruits1を書き換えても、copy関数でコピーされたfruits2には影響が有りません。
 但し、次の例を見て下さい。

>>> fruits3 = ["リンゴ", ["メロン", "バナナ"]]
>>> fruits4 = fruits3,copy()
>>> fruits3
['リンゴ', ['メロン', 'バナナ']]
>>> fruits3[1][1] = "イチゴ"
>>> fruits4
['リンゴ',['メロン', 'イチゴ']]

 fruits[1][1]をイチゴに変えたら、fruits4も変わってしまいました。これを解決するには、標準ライブラリにある「copy」ライブラリが持つ「deepcopy」関数を使います。

>>> import copy
>>> fruits3 = ["リンゴ", ["メロン", "バナナ"]]
>>> frutst4 = copy.deepcopy(fruits3)
>>> fruits3[1][1] = "イチゴ"
>>> fruits4
['リンゴ', ['メロン', 'バナナ']]

 この様にfruits3[1][1]を変更してもfruits4は変わっていません。
 Pythonではcopy関数を使ったコピーを「浅いコピー」、deepcopy関数を使ったコピーを「深いコピー」と呼ばれます。

 以上、今回はレッスン4の後半部をザッと流して書いてみました。
 次回以降はレッスン5から始めたいと思いますが、それにはまず豚が勉強を進めなければなりません。次回はC/C++でも学んだ「関数」について、少し学んで行くようです。

 少し間が空くかも知れませんが、今日はここまで。

頭がごちゃごちゃ……。

 Pythonの勉強を始めて、今まで約30年ほど触ってきたC言語やC++とごちゃ混ぜになって来つつあります。
 変数の型からfor文のような制御構文まで、同じ様な用語が飛び交っています。初めて学ぶ高級言語がPythonなら全く問題はありませんが、豚はアセンブラからC言語、C++言語と進んできており、その前にはBASICも触っているので、非常にややこしく感じています。
 しかし「C/C++で言う所の○○だな」と理解することが出来るので、過去も全く無駄では無いのかな……。

 ただ、豚の脳みその容量はそんなに大きくないので、常に復習をしながらでないと過去に学んだ言語を忘れてしまいます。そう思って先日の記事にも紹介した書籍を購入したのですが、未だ1ページも進めていません。

 教員時代に豚はしばしば生徒に提出課題を出しましたが、先に問題を作ってから自分で解いて模範解答を作って、それを用いて授業で解説をしていました。
 でも豚が思いつきもしないようなアルゴリズムで問題を解いてくる生徒もいて、まだまだ豚は未熟だなと思わせられていました。

 CやC++は、本当に奥が深い言語です。高級言語でありながらハードウェアの隅まで弄ることが出来、アセンブラよりも可読性に富んだソースを書く事ができます。
 昔は速度を求められるゲーム等はアセンブラで書かれていたのが当たり前でしたが、最近ではハードの性能が高くなったお陰で、CやC++を使うことが多いようです。豚が好んで使っている「DXライブラリ」も、Nintendo SwitchやPS4、PS Vita等に対応しており、環境さえ整えばC言語の知識だけでこれらのゲーム機で動作するプログラムを書くことが出来ます。
 Pythonは確かに優れた言語ですが、コンパイラ言語であるC言語には速度的には追いつけません。まぁ適材適所と言う事ですね。

   

Python学習の続き その2。

 レッスン2では、「変数」と「リスト」を学びました。変数はC/C++と全く同じ様に使います。

friut = "リンゴ"
price = 200


 他のプログラミング言語を触ったことの無い人は、「=」演算子を「左と右は同じ」という風に誤解されるようです。
 勿論それは間違いで、「=」は値の代入を現します。

char fruit[]="リンゴ";
int price = 200;

 C/C++では上記のように記します。
 ちなみに所謂数学での「=」を記述するには「==」という風に記述します。
 Pyhtonで非常に楽だなと思ったことは、変数の型を予め宣言すること無く使えるところです。最初の例では、”リンゴ”は文字列(str型のオブジェクト)で200は整数(int型のオブジェクト)です。

 次に「リスト」ですが、これは非常に便利なオブジェクトです。C/C++で再現するにはポインタや構造体を駆使した「線形リスト構造」や「双方向リスト構造」など、ちょっとハードルが高いコードを書かなければいけませんが、PythonではC/C++での「配列」を宣言するのと同じ様な感覚で「リスト」が作れてしまいます。
 以下に記すのはAnacondaの対話モードを使って書いたもので、「>>>」はコマンドプロンプトです。

>>> fruits = ["リンゴ", "メロン", "バナナ"]
>>> fruits[0]
'リンゴ'
>>> fruits[1]
'メロン'
>>> fruits[2]
'バナナ'

 これだけ見れば普通の配列のようですが、

>>> fruits.append("イチゴ")
>>> fruits
['リンゴ', 'メロン', 'バナナ', 'イチゴ'}

の様に、一番最後に自動的に「イチゴ」が追加されています。C/C++での構造体で言うと、自動的にノードがメモリ上に確保され、リストの最後に挿入されたと言う事になります。
 ポインタを弄らなくてもリストに追加できるなんて、確かに初心者向けのプログラミング言語と言われるだけは有るなと思います。
 ちなみにリスト上の任意の場所にオブジェクトを追加したい場合は

>>> fruits.insert(1, "レモン")
>>> fruits
['リンゴ', 'レモン', 'メロン', 'バナナ', 'イチゴ]

 の様にfruitsオブジェクトのinsert関数を使います。オブジェクトは通常0番目からカウントされますので、リンゴの次に「レモンオブジェクト」が挿入されています。
 また、オブジェクトを削除するには

>>> fruits.remove('バナナ')
>>> fruits
['リンゴ', 'レモン', 'メロン, 'イチゴ']

 の様にremove関数を使います。C++でこれだけの仕組みを作ろうとしたら、ちょっとしたコードを書かなくてはいけません。
 他にもsort関数など、便利な関数(どうしても豚はC/C++派なので、メンバ関数と言った方が憶えやすい)が沢山用意されています。

 以上、レッスン3とレッスン4の始めの部分までをザッと復習してみました。次回はレッスン4の後半を備忘録がてら復習していきます。

Pythonの勉強を始めましたが……。

「日経ソフトウェア」に掲載されていた「Python入門プログラミング」の特集記事を読みながら、少し勉強をしてみました。
 7Lesson構成の記事で、既にLesson4迄をザッと読みつつ実際にコードを入力して実行してみました。
 実はここで「Python学習記」を書いていこうと思っていましたが、元が特集記事だけに必要最低限の事しか書いて居らず、豚独自にまとめ直して記事に書くという事は難しいので、単純にLesson幾ら迄進んだのかという報告だけにする事にしました。

 今回はPython公式のサイトからダウンロードした物では無く、「Anaconda Individual Edition」を使用しました。書籍によってはPython公式からダウンロードした物を取り上げていたり、Googleのサーバを使って遠隔実行させるもの、Anacondaを使うものと区々なので、豚のような初学者には戸惑うところです。

https://www.anavonda.com/products/individual

 のWebページの中の「Download」を選択。更に自分の環境に適したインストーラーを選びます。

 今回参考にしている記事はPythonの対話モードと言うインターフェイスを使って、コードの入力と実行を行います。
 対話モードは所謂DOS窓の様な物で、ビジュアルプログラミングに慣れた人は少し戸惑うかも知れません。豚はバリバリのMS-DOS世代なので、この方法が一番落ち着きます。コードの入力も実行もこのDOS窓もどきから行うので、ウィンドウを持つ普通のアプリが書けるのかと思いがちですが、

import tkinter

root = tkinter.Tk()

label = tkinter.Label(root, text="Hello Python")
label.place(X=40, y=80)

root.mainloop()

 以上のコードで小さいウィンドウが開き、中には「Hello Python」と表示されているはずです。
 豚にはまだこのコードが何を意味しているのかははっきりとわかりません。ただC++的に解釈するとすればtkinterと言うライブラリを取り込んで、rootにはターゲットとなるウィンドウのハンドルを取得します。
 labelにはtkinterライブラリのLabelと言う関数に、引数(「ひきすう」と読む)として描画対象のウィンドウのハンドルと表示する文字列を渡し、戻り値として表示された文字列のオブジェクトが渡されます。そしてそのオブジェクトの持つplaceと言う関数で、文字列の位置を調節します。
 最後のroot.mainloop()が何を意味しているのかはわかりません。メッセージループを処理しているのか、単純に永久ループを現しているのか……。
 以上は豚のあやふや知識をC++に当てはめてみただけの物なので、実際は全く違うのかも知れません。

 以上がLesson1で学んだところでした。Lesson4まで一気に書くととても冗長な記事になってしまうので、今回はここまで。

書籍を2冊購入。

 PythonやC#を新たに学ぶとの同時に、C/C++の復習をしておこうと思い、書籍を2冊購入しました。(まだ手元に届いていませんが)
「C言語ポインタ完全制覇」と「C++クラスと継承完全制覇」です。
 正直なところアセンブラでメモリとアドレスの関係を徹底的に叩き込んだので、ポインタは全く当たり前の概念で、初めて学んだときもすんなりと頭に入って来ました。
 ですので今更勉強し直すことは何も無いのですが、まぁ軽く復習がてら読んでみようと思いました。
 豚にとっての難題は「クラスと継承」の方です。クラスはC言語の構造体を拡張したようなモノなので何も問題はありませんが、継承を使って元あるクラスから新しいクラスを作り出す辺りの知識はあやふやなので、これは力を入れ得て勉強しなければいけません。昔教えていたときには理解していましたが、本の入門レベルでの知識でした。実際の開発現場では多用する知識なので、しっかりと復習をしておこうと思います。

 ところでここ二・三日は弟の介護を除くと、PCの前に座ってボケーッと動画を見ているだけで一日が過ぎていきました。何も新しい知識は身につけていません。
 鬱に罹患してからは文字数の多い書籍を読むことが出来なくなってしまい、1ページ連続して読めたら万々歳というレベルです。かと言って「マンガで憶える~」の様な書籍は掲載されている情報量が少なすぎて、全然物足りません。今の豚にとってはそれ位が丁度良いのですが、やはりちゃんとした書籍を持っておこうと思っています。先日紹介した12歳の女の子に影響されているのかも知れませんが……。

 コメントでアイデアを頂いた「勉強日記」的な記事も書いて行こうと思っています。まぁ備忘録的な感じで書いていくことになると思いますが……。

予定は未定……。

 今は「日経ソフトウェア」の特集記事でPythonを勉強し始めましたが、メルカリで「Pythonスタートブック[増補改訂版]」を購入しましたので、特集記事での勉強が終わったら、次に読もうと思っています。実際はまだPythonのインストールとVisualStudio.Codeをインストールして、簡単なサンプルを少し試しただけなので、まだ手を付けていないのと同じです。
「C#」も初めに読むための書籍を用意していますので、Pythonがある程度進んだら平行して学習をする予定です。
 欲張りかも知れませんが、「C/C++」の技術も鈍らせたくはありませんので、ドラクエもどきのプロジェクトも進めていこうと思います。C言語とは専門学校時代から専門学校の教員時代、プログラマ時代と慣れ親しんだ言語なので、このまま錆び付かせたくはありません。
 C++は専門学校で教える時に急いで勉強したので、まだ深い知識は持っていません。一通りの事は出来ますが、プログラマ時代にはかなり苦労して勉強しつつソフトウェア開発を進めていくと言う環境でしたので、今一度じっくりと深いところまで学んでみたいと思います。

 そもそも豚はアセンブラ使いで、高校時代にRPGを作ったときもZ80アセンブラで書いていました。C言語のような高級言語は無い環境で、しかもBASICでは速度が遅くて話にならなかったので、必死にアセンブラを勉強していました。
 次に学習したのは専門学校で、今のIntelのCPU「COREシリーズ」の元祖とも言える8086アセンブラでした。PC-9801シリーズのマシンが揃っていましたので、Z80の経験もあることから熱心に勉強しました。
 そもそも入学した学科は「マイコンシステム科」だったので、ハードウェアを直接制御出来るアセンブラは必須でした。
 豚が卒業後に教員となったときも、一年目は「マイコンシステム科」で担任を持ちアセンブラやC言語を教えていましたので、昔取った杵柄とは言え今でもリファレンスさえ有ればコードを書くことが出来ます。
 しかし2年目には「ソフトウェア開発科」の受け持ちになり、アセンブラとC/C++を専門に教える担当になったので、仕事が楽しくて仕方がなかったです。
 担任したクラスからはカプコンやSNK等にも10人程度就職させました。当時はSNKの入社試験はZ80アセンブラか6809アセンブラの筆記試験だったので、教えている豚も必死になりました。
 全てが懐かしいです。

 話は元に戻って、今年度の目標は「Python」をある程度理解すること。「C#」もある程度、出来ればUnityを使って何かアプリが書ける程度にまでなれればと思っています。
 そして「C/C++」ですが、今現在キャラクタエディタとマップエディタを作った状態で止まっているので、ゲーム本体のコードが書ける所まで進めたいと思います。この「ドラクエもどき制作プロジェクト」は豚のライフワークなので、そろそろ気をつけなくてはならない認知症予防を兼ねて、数年のスパンで作成していくつもりです。何しろ豚が一人でやっている事なので、まだドラクエⅢのアリアハンの街をスクロールさせて移動する所までが精一杯で、しかもそのコードはNASとHDDが壊れたときに消失してしまいました。やっぱりバックアップは複数取っておくのが大事ですね。

 豚はアセンブラやC/C++の知識は持っていますが、プログラマとしては落ちこぼれです。何せ「スパゲッティコードを書くのは不可能」と当時言われていたC言語で、見事に複雑に絡んだスパゲッティーコードを書いてしまい、部長に呆れられると言う失態を犯しています。
 今でも少しでも綺麗に書こうと、何度も作り直しをするのですが、やはり後で読み返しても自分でわからないというコードを書いてしまいます。まぁ今は仕事では無くて趣味だから良いのですが、鬱病が寛解して社会復帰出来たら、もう一度教育関連の仕事に就きたいと思っているので、今のうちに綺麗なコードを書く練習もしなくてはいけません。

 長々と駄文を書き連ねましたが、全ては「予定は未定」。「出来たら良いな」という心づもりで、やって行きます。

 技術的な話題は豚の工房の方に、主に書いていくつもりです。

宝石の原石を見た。

 今朝、実家へいっていた時にテレビで見たのですが、僅か12歳でプロ顔負けのアプリケーションを作って公開している女の子の事を取り上げていました。彼女が開発していたアプリケーションはコミュニケーションツールの一種なのですが(詳細は見損ねましたが)、何でも遠方に住むおじいさんとおばあさんとの会話を、映像や音声でスムーズにするという物です。

 その時彼女のMacBook Proの画面に映っていたのは「スクラッチ」でのソース(と言うのかな?)だったので、豚は「まぁスクラッチなら、比較的容易に書けるわな……」と思っていました。所が次の瞬間に衝撃が。画面に映されたのはPythonやC#、JavaScriptなどの専門書がズラリ……。彼女は誰から教えて貰った物では無く、全て独学でマスターしたのだとか……。これには豚も尻尾を巻きました。

 近日中には自分の声のデータで自動発生音声で読み上げられられる様に、今鋭意改造している最中との事でした。
 将来はITを使って高齢者社会に役に立つ様な事をしたいとの事で、豚は心底感心しました。何しろ、今豚が毎日勉強しようとして放り投げたままになっているPythonやC#を若干12歳で軽々(かどうかはわかりません。不屈の努力の賜だとは思うのですが)マスターしてしまっているのですから。
 彼女のプログラミングの勉強の時間は、平日で7時間、休日で15時間くらいやっているとの事で、既にプロ並みにPCに触っている事になります。本当に「師匠!」呼びたくなる女の子でした。12歳と言えば小六か中一、その頃の豚は既にPCに触っていましたが、専らゲームしかやっていませんでした。今は49歳。本当に人生を無駄にしたなぁ……。否、何ごとを始めるにも遅すぎるという事は有りません。今日からでも心を入れ替えて、プログラミングの勉強に取り組もうと思います。

 話はガラッと変わって、今日は月に一度の精神科への通院日です。大阪ではコロナの新規感染者が毎日最多を更新しているので、正直電車を乗り継いで通うのは怖いのですが、緊急事態宣言が出ていない限りは処方箋対応はしてもらえないとの事なので、通院するしか有りません。
 ガースーは東京オリンピックの事が頭にあり、経済の鈍化も懸念にあるので緊急事態宣言を出したくないようなのですが、そのうち取り返しの付かない事になりそうな気がします。
 さっさとロックダウンするくらいの強制力を伴う緊急事態宣言を発出してコロナを封じ込めないと、何時までも緊急事態発出と解除の繰り返しになると思うのですが……。
 有識者の皆さんは、どのようなお考えなのでしょうか?

トラウマ……。

 起床が昨夜10時半でした。それからずっとPCの前に座って動画を視聴したりしていたのですが、今日の午前中に椅子にもたれたままうたた寝をしてしまいました。それで見た夢が物凄くリアルで、思い出すだけで悲しい夢でした。
 豚のトラウマは大きく分けて2つ有るのですが、そのうちの一つにプログラマ時代末期の出来事があります。もういまから24年位前になるのですが、豚が失意のどん底に落ちてしまって、逃げるようにプログラマを辞めた時の夢でした。
 あれ以来豚はプログラムを書く事が苦手になってしまい、特にVisual C++には極度の恐れを抱くようになってしまいました。そのトラウマを克服するべく、しつこくプログラムの勉強を始めたりするのですが、やはり恐怖が勝ってしまって長く続ける事が出来なくなりました。

 今日の夢はその続きに当たる夢で、豚がプログラマに復職すると言う夢でした。豚にとってはプログラマ時代は黒歴史です。一番長く続けた職業(5年くらい)では有りましたが、鬱に罹患してからは毎日が地獄でした。何しろ自分の精神状態を保つだけで精一杯で、新しい事何て全く憶えられませんでした。普段なら叱咤激励だと受け取れるような事も、唯々叱咤されているとしか受け止められず、精神的に耐えられなくなって尻尾を巻いて逃げ出してしまったのです。
 プログラマを辞めたとき「もう二度とコードを書く事は無いだろう」と、手持ちの資料などは全て処分し、手元に何も残さないようにしました。あの頃は本当にボロボロでした。

 今豚がプログラミングの勉強をやろうとしているのは、あの四半世紀前のトラウマを乗り越えるためです。DOSベースのC++でのプログラムは、殆ど何でも作れると自負するくらい得意でした。ですがWindowsベースのプログラムがどうしても書けない、仕組みが頭に入って来ませんでした。時代は流れ、C/C++からC#へ、それにAIが流行になりPythonが初心者から上級者までの必須の言語になり、豚は再度チャレンジする事にしたのです。

 うたた寝をして見た夢は本当に辛い夢でした。また当時の事が鮮明に思い出されて、走馬灯のように頭の中に流れ込んできました。勿論、目覚めは最悪です。
 離婚時のトラウマはもう乗り越える事は不可能ですが、プログラミングなら自分の頑張りでどうにでもなる。そう思って二十四年間頑張りましたが、未だ当時のまま全く進歩無しです。

 豚が50歳になるまであと3ヶ月。この間にPythonだけでも扱えるようになり、その後はC#もマスターしようと思っています。
 どこまで出来るかわかりませんが、頑張ってみようと思います。