現役プログラマのプログラミング教室@岡崎市康生, Android/iOS(Swift/Kotlin)のアプリ開発、デジタル漫画制作を主軸事業としています。

1.1) 文系のためのプログラミング – プログラムで何をどうしたら目的の製品やサービスが作れるのか-

by MY マナビスタイル

生活の中で使わているプログラム

いきなりプログラミングしましょうと言われても、何から始めればよいかわからないと思います。

それは技術の有り無しではなく、苦手意識があったり、世界観がまだ備わっていないだけなのです。

プログラムで何をどうしたら目的とする製品やサービスが作れるのか。先ずは既存の製品に入っているプログラミングの世界を想像することで、プログラムのある世界観を身に着けていきましょう。

現代にある身の回りの電気を使った製品のほとんどにプログラムが入っています。実際に身の回りのプログラムがどのような役割をしているか見てイメージしてみたいと思います。

a)スマートフォン

内容
[アプリ]
最近では一番身近なソフトウェアプログラムではないでしょうか。
電話、ゲーム、Twitter、様々なアプリがあり、イメージしやすいかと思います。

[OS]
アプリを動かしているのも実はOS(オペレーティング・システム)というソフトウェアプログラムです。
スマートフォン端末をタップしたりインターネット通信をして取得した情報をアプリに伝えたり、その逆など
ハードウェアと呼ばれる機械とソフトウェアプログラミングとのつなぎ役と考えると理解しやすいかと思います。

パソコンで言えば皆さんご存知Windows/MacOSなどが有名なOSです。
スマホとパソコンの違いはほぼ無くなっていることがよくわかります。

[主なハードウェア装置]

・CPU
・メモリ
・ストレージ
・タッチパネル
・通信装置
・液晶画面
・バッテリー

あるニュースアプリAを起動するときの流れの一部を考えてみましょう

1.アプリを起動するために画面をタップ
スマホの液晶タッチパネルのある位置が押されたという信号をスマホの中にあるCPUに通知
CPUの通知をOSというプログラムが理解し、その場所にあるAアプリを起動するよう命令します。

2.アプリの起動
OSは本棚のような内蔵ストレージ装置からひとつの本のようなAアプリプログラムを取り出し、勉強机のようなメモリRAMに呼び出し広げます。
広げた本のようにAアプリプログラムを1ページ目から順番に実行していきます。

3.アプリの通信
Aアプリプログラムは書いてある命令の通りに実行していきますが。
ニュースはスマホの中にはありません。ニュースを取りに行くため通信をします。
これはインターネットでニュースを取りに行くのをイメージするとわかりやすいと思います。

インターネット通信をするには通信装置を使って外に電波をとばします。
AアプリプログラムはOSに通信装置を使ってデータの送受信をしますと依頼します。
OSは通信装置にあるデータを送るようお願いします。

4.バッテリー
ハードウェア装置は電気で動きます。バッテリーが減るのはハードウェアが電気を使うからです。
でもいきなりバッテリーが切れたら困ってしまいます。

その管理もソフトウェアプログラムがやっています。

OSプログラムは常にバッテリーの監視をしています。CPUに送られるバッテリーの信号を読み取って画面に表示しなさいと命令します。

b)デジタルカメラ

内容
最近では液晶画面がついているので、プログラムが動いていることは想像できます。
想像通りスマホのカメラと同じと考えて差し支えないです。
カメラ特有の撮影処理について流れを見てみましょう
デジタルカメラの撮影処理の流れ
光を電気にかえて画像にします。実際にはカメラの電源を入れた間プログラムは常に動いています。
撮影時の流れを見てみましょう。

1.シャッターボタンを押す
シャッター装置がOSを経てCPUに押されたという信号を通知します。CPUは撮影処理のプログラムを呼び出して動かします。
(半押ししたときにピントをあわせるためにモーターを計算して動かしたり、実際には常にプログラムが動いています。)
2.光をデジタルへ
光をADコンバータという電気信号に変換する装置を使ってデジタル化します。そのデータを画像処理プロセッサに送ります。
3.画像処理
送られてきたデータを画像処理プロセッサが明るさ、ホワイトバランス、シャープ、コントラスト、様々な絵を作るためのデジタル処理を行います。
この部分も今はソフトウェア要素が強いところになります。
4.保存
作られた画像をCPUはデータを圧縮してメモリカードやメモリにデータを保存するよう命令します。
5.モニター
すべての処理が完了すればその通知を受け取って、モニターに撮影した画像を表示したり、次の撮影準備を行う指示を出します。

b)扇風機

内容
仕組みとしては簡単な扇風機はどうでしょう?

リモコンがついていたり、ピッという電子音のなるもの、風量を自動調整するような機能のあるものにはマイコンが乗っていると考えられます。そうでないメカ式もあります。
画面もないので単純ではありますが、風量調整などしっかりとしたプログラミング要素も見られます。

1.電源ボタン
押したらマイコンがモーターを回す、止める。ピッという音を鳴らす。

2.強ボタン
押された信号を受け、モーターの回転数を上げる指示を出す。

3.リズム機能
風の強弱を制御します。

まとめ

いかがでしたでしょうか、製品が有するプログラミングはイメージ通りでしたでしょうか。

ひとつひとつ紐解くことがプログラミングの世界に慣れる一歩ではないかと思います。どの分野も同じだと思いますが、模倣はすごく大切なことで、漫画家の先生も電気メーカーの先輩もおっしゃっていた記憶があり、同感です。そして模倣の先に自らの考えを上積みする。

ロジカルシンキングであるプログラミングの世界に慣れてくると、論理的、計画的思考も育ち、ソフトウェアをどう使うかはもとより、仕事、私生活、将来についてもより論理的、計画的に考えられるようになると信じています。

プログラミングの学びを始めて、自然にこれらを身につけていきましょう。