今年こそ充実したプログラミング学習を
#今年学びたいこと
と言えば。プログラミングです。
「しょっさんはITアーキテクトだろ」と言われたら、そこまでなんですけれど。今でもプログラム自体は書けますし、今でも嗜んでいるプログラミング言語は数多くあります。でも、そうじゃないんです。
わたしがプログラムを朝から晩まで書いていたころは、手続き型や構造型のプログラミングコードの書き方です。サブルーチンのないBASICや、特定の構造・モジュールをファイル単位で分割する程度のC言語、高速化だけのために分割されたアセンブラのライブラリ等を書いてました。自分さえ分かれば良い難解コードのオンパレードでした。それらも3週間も経てば、自分でも分からなくなります。
それは昭和から平成初期のお話です。
自分で書いてびっくりしました、昭和です。昭和の頃にプログラムというかゲーム作ってたのか、そら爺さんにもなるわ。
さて、時代はその頃とは変わりました。
オブジェクト指向なのは当然だと思うんです。関数型などの宣言型プログラミングパラダイムも流行ってます。リソースも湯水のように使えます。処理を行う際にクロックを考慮する必要はありません。使ったメモリは解放しなくとも、そのうち解放してくれます。そもそもメモリが潤沢です。私が今使っている Mac Studio は 64GB あります。32bit では使い切れません。そういえば昭和末期の頃にわたしが使っていたマシンの多くは 8bit でした。メインRAM は 64KB もあれば「大容量」でした。
スティックの入力値にあわせて、X/Y座標を計算するロジックを同一クロックで実行されるように考慮したり、波形演算や拡大縮小演算を高速化するために SIN/COS の演算結果を事前にメモリ展開しておいたりしなくてもいいんです。今はGPUを使って、より正確に計算させようとしている時代です。レイトレーシングだけで 1ヶ月かかったりはしません。
時代は変わったんです。
モダンなプログラミングを理解して、自分で使えなければなりません。データやロジックのモデリングも今どきのやり方で実現できなければなりません。お客さまとの会話ではドメインを意識した方が良いですし、さまざまなベンダーがどのような構造で実装するかは、わたしからはコントロールすることはできません。彼らが実現できるアーキテクチャやデザインパターンを理解していなければなりません。そして、どのような言語を使うかもです。
Salesforce だからといってJavaScriptとApexだけではないんです。MuleSoft ではJavaが使えます。Heroku に至っては標準で8言語対応です。buildpack さえ作れば、Linux 上で動くどんな言語でも利用可能です。
Salesforceと関わりのあるシステムでは、スクラッチで作られたシステムはまだ多くあります。新たにスクラッチで作ることだって少なくはありません。大規模なビジネスアプリケーションであれば Java でしょうし、JavaScript から TypeScript の得意なベンダーもあります。AI の台頭で Python も更に増えてくるでしょう。Webアプリでは PHP は未だに人気ですし、Ruby や Go も一部では大人気です。それにバッチを書けば sh(bash/zshとかまとめて) だって使います。
立場というか、関わるシステムが増えれば、それだけ多くのソフトウェアアーキテクチャとプログラミング言語との関わりが増えていきます。それを理解せずして、なにが ITアーキテクトか。具体的にどのように実装されるかを予見して、実際の抽象化されたITアーキテクチャを作らなければならないか。これこそが ITアーキテクトのお仕事です。
結果的に、箱を置いて線を引くだけにも見えますが、それは実現可能な抽象化された構造なだけです。重要なのは「実現可能」であることです。その箱で実現される構造は、どこで何をどのように実装するか。私の中には確かな答えを持ってしか構成することができません。これが「説明責任」です。意味がある構造であることを、正しく説明できなければITアーキテクトとして価値がありません。
だから、今こそ、改めて。モダンなプログラミング技法を学習しなければならないのです。
学習中の恥ずかしいプログラムは、zenn でもこうやって公開したりしてます。(/ω\)イヤン。
だから、今年こそモダンなプログラミング手法をチョットワカルようにすることこそが目的です。その結果として来年くらいに書籍が出版されれば万々歳です。