見出し画像

宣言型で安全快適なDigital体験を!

Googleに"Imperative Computing"って入力すると"Declarative ..."という文字が候補として検索されます。

日本語にすると命令型と宣言型ですがこれっていったい何でしたっけ?

この記事はImperative ComputingとDeclarative Computingの考え方を短時間で把握頂くことを目的としています。


Imperative Computingとは自分がコンピュータに実行させたいことを1からプログラミングで構築するアプローチです。

クラウドが登場する以前まではこのアプローチが主流でした。

コンピュータにプログラミング言語を駆使して命令を構築する必要があるため、何らかのプログラミング言語を習得する必要がありましたね。

AWS CLIでRDSインスタンスを作成する場合のImperative Computingの例です。

$ aws rds create-db-instance \ --allocated-storage 20 --db-instance-class db.m3.medium \ --db-instance-identifier mysqldb \ --engine mysql \ --master-username dbadmin \ --master-user-password password123!

上記はImperative Computingの例を端的に表現するためにコマンドの実行例になっていますが、実際はこちらのコマンドをShellやPython等で実装します。

何らかのプログラミング言語で実装されるSoftwareにBugはつきもので、Bugが無いSoftwareは世の中に存在しません。

経験豊富な熟練のプログラマーであっても実装するSoftwareからBugを完全に排除することは不可能です。

先日露呈してしまったLog4jの脆弱性が最たる例です。この類のBugや脆弱性は潜在的なものを含めると数多あると思われます。

Imperative Computingのアプローチは1から命令をプログラミング言語で実装するため、プログラミングにミスがあって意図しない動きをしてしまうことがあります。


Declarative Computingとは自分が望んだ最終形を人が読んでわかる宣言で定義して、その定義の内容に沿ってOSやSystemに最終形を作成させるアプローチです。

クラウドが主流になってから、"Software Defined xx"といった言葉をメディアで見聞きすることが多くなりました。

クラウド登場以前までは、プログラミング言語で実装されるSoftwareは主にビジネスアプリケーションを対象にしていました。

昨今はビジネスアプリケーションだけでなく、それらを支える実行環境やセキュリティ機能までもSoftwareで実装されるようになりました。

まさに"Software is eating the world"ですね。

AWS CLIでRDSインスタンスを作成する場合のImperative Computingの例です。

Type: ‘AWS::RDS::DBInstance’
Properties:
DBInstanceIdentifier: mysqldb
DBName: mysqldb
DBInstanceClass: db.t3.medium
AllocatedStorage: 20gb
Engine: MySQL
EngineVersion: 8.0.16
MasterUsername: dbadmin
MasterUserPassword: password123!
MonitoringInterval:60MonitoringRoleArn:arn:aws:iam::123456789012:role/rds-monitoring-role

属性と値を":"で区切っているだけで誰でも簡単に読むことができますね。

最終的に実現したい属性の値を定義するだけであとはOSやSystemがこの宣言どおりにSoftwareサービスを作成してくれます。


こんな時代にImperative Computingで1から全て実装していては、ユーザはとんでもないDigital体験を得ることになってしまいます。

セキュリティインシデントの雨あられで大変なことになってしまいますね。想像したくありません。。。



面倒な処理やサイバーセキュリティ対策の実装はその筋の専門家に任せて、ユーザは現代に即した新しい価値想像に時間を使うべきですね。

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