見出し画像

【まだ遅くない】学んでおけばよかったプログラミング技術3選

30年以上の経験を持つプログラマのムンペイです。
プロセッサの性能を引き出すソフトウェア高速化や、組み込みプロセッサ向けのソフトウェア開発を主なフィールドとして経験してきましたが、部品にとどまらずアプリを作って世の役に立つために、もっと学んでおけば良かったと思う技術を3つ、ご紹介します。
(プロモーションを含みます)


1.データベース

アプリケーションシステムの開発に欠かせないデータベース。
プログラムとはデータを処理するものであると考えると、データの格納とアクセスを担うデータベースの重要性は言うまでもなく、アプリケーションシステムの代表的な構成である3層アーキテクチャの1つでもあります。

私は、スマホアプリ開発、ウェブアプリ開発と、10件程度は作ってきましたいが、メインはデータ処理エンジンの開発や組み込みソフトウェア開発を主なターゲットとする業界です。アプリケーションシステム開発については良いお手本が身近におらず、書籍やウェブの知識で独学したことを実地で見様見真似で作ってきたようなところがあります。
そのため、先の3層アーキテクチャのようなものももっと体系的に使いこなしたいという思いがあり、特にアプリケーションの性能(高速化)に多大な影響を持つデータベースはまず抑えたいと思っているわけです。

データベースも色々ありますが、やはりリレーショナルデータベース(RDB)を使いこなしたいですね。コンピュータの文脈で道具を学ぶというとAPIを学ぶことであることが多いですが、RDBは1970年にIBMのCodd博士が提唱した理論に基づいていて非常に体系だっている点がユニークです。
アプリケーション固有の要請とできるだけ切り離して独立的にデータを格納し、使うときはまたアプリケーション固有の要請に近づくようにテーブルの結合も含めたクエリを行う、という考え方は、アルゴリズム+データ構造=プログラミングという基本を体現してますね。

ちょっと難点としては、個人での利用の壁が少々高いことでしょうか。アプリとして使うなら常設のデータベースサーバーが欲しいですが、少々出費を覚悟しなければなりません。

2.エンタープライズアーキテクチャ

エンタープライズアーキテクチャー(EA)も、システム開発の用語です。企業や政府のような大きな組織(エンタープライズ)がその全体で使うような大規模なシステムを作る場合の設計体系です。デジタルでのやり取りが発展した現代では、業界内外の多数の企業が参加するようなシステムも多いでしょう。

先述の通り、私のキャリアとしてこのようなシステムに携わることはほぼありませんでした。
しかし、目には見えないのでなかなか気づきにくいことですが、よく考えてみれば、世の中の「流れ」(おかね、もの、情報、etc.)のうち大規模なものはほぼすべてエンタープライズ同士で行われているわけで、そう思うと私たち個人はすべからく何らかのEAのお世話になっているといえるわけですよね。時々システムトラブルがニュースになりますが、世の中のシステムの数が膨大であることを考えれば、ほとんどのシステムは非常にうまく(頑張って)動いているといえそうです。

翻って自分のことですが、エンタープライズレベルのシステム開発にキャリアを移行するには少々下積み時間がもう足りませんが、スモールなアプリは作っていきたいと思っています。
スモールとはいっても、お客様に提供するなら、はじめは見よう見真似でよいとしても、ゆくゆくはちゃんとした設計に基づいてちゃんと動くシステムにしたいです。EAの知見が、設計に基づくシステム開発の取り組みにプラスになるのではないかな、などと感じています。

EAは歴史が長く、時代時代の世相や企業の思惑を反映しながらその意味合いも変遷しているようです。新しめの主張をまずは1冊読んで勉強してみようと思っているところです。

3.ウェブフロントエンド技術

エンタープライズアーキテクチャともう一つ、世の中の大半の人がお世話になっている技術が、ウェブフロントエンド技術です。EAとは全く逆で、人間が触る表側(フロントエンド)であるのが面白いですね。

基礎はHTML、CSS、JavaScriptですが、そのままコーディングに使われることは少なく、何らかのフレームワークを通じて使うことが一般的となりました。この3つはいまやウェブブラウザの「機械語」のような存在であって、現代的な意味でフロンドエンド開発ができるというためにはフレームワークを使いこなせることが重要です。

一方、フロントエンド技術は技術的なとっつきやすさもあって、新しいツールやフレームワークが次々登場する特徴があります。
トレンドの最先端にい続けようとするととても時間が足りませんが、これとこれがあれば自分が必要な範囲のことはできるというツールセットを一つ持っておきたいなぁという思いがあります。

今からでも遅くない

3つ書きましたが、もう遅いとは思っていません。
サムライアプスのウェブサイトでも、データベース、ウェブフロントエンドを使った取り組みを行っていますし、今後EAの知見をもとに自分サイズのアプリ開発だってやってみたいと考えています。どんなアイデアがあるかって?その話はまたの機会に・・。

これにて御免!

(見出しはCanvaで作りました)

この記事が気に入ったらサポートをしてみませんか?