2021年11月28日日曜日

Tinyjoypad を作ろう!02 名作ゲームを手のひらサイズで楽しもう!

 

 前回に引き続いて、楽しい電子工作「TinyJoyPad」を作ってゆきましょう!

 

 本体の電子工作が完了し、AudinoIDEの設定も済み、USBaspとブレッドボードの準備もOK、という段階まできました。

 

 ではいよいよ、ゲームのプログラムを選びます。


 https://www.tinyjoypad.com/

 

のサイトから「Attiny85」のコーナーを覗いてみてください。

 

「パックマン」「インベーダー」「ピンボール」「テトリス」など誰もが知っているアーケードゲームの名作が並んでいます。

 昔はこのサイトからそのままプログラム(スケッチ)がダウンロードできたのですが、現在は表立っては自粛中のようですね。(著作権がらみ?)

 でも、Githubにはちゃんとスケッチがありますので、ご安心ください。

 

https://github.com/search?q=tinyjoypad 

 

 Github内を”Tinyjoypad”で検索すると、いろいろな人が開発した関連プログラム(スケッチ)が並んでいます。 


 さて、Tinyjoypadには兄弟機がいくつかあって、ボタン数を減らした、より小さい「ATTiny Arcade」や、ジョイスティック仕様+EEPROMの上級版「Tiny Handheld」などがあります。

 そのTiny Handheldの開発者さんのところに、すべての機種向けのスケッチが収録されています。

https://github.com/Yevgeniy-Olexandrenko/tiny-handheld

フォルダ内部をいろいろ見ていると、いろんな機種のプリント基板の写真などもあるので、面白いですよ。

 

=========

余談

 Tinyjoypadのサイトを見ると、次の5つのプロジェクトが載っています。実はこれらは互換性が少ない「いとこ・はとこ」みたいな機種に当たります。

 

■ Attiny85 → Attiny85チップを使う「Tinyjoypad」

■ Arduboy → ATmega32u4を使う、より上位機種(互換性なし)

■ Attiny10 → Attiny10という最小クラスのチップを使う簡単なゲーム

■ Arduino → Arduinoを使った関連工作

■ ESP8266  → 中国のメーカーが作ったWifiモジュールなのだけれど、なんとCPU等が載っているので、AVRのようにプログラムして動かせる。それをつかったゲーム機のプロジェクト。


========

 

 ArduinoIDEで書き込みするスケッチは「.ino」という拡張子になっています。

 

 まずは手始めに「Tiny invaders」を書き込んでみましょう。

https://github.com/Lorandil/Tiny-invaders-v4.2 


 Zipファイルを解凍すると、ArduinoIDEで読み込めるのは「Tiny-invaders.ino」というファイルです。

 私の場合は、書き込み設定は以下のようにしてみました。


■ ツール → ボード 「Attiny85」

■ クロック 「16Mhz」

■ LTO 「Enabled」

■ 書き込み装置 「USBasp(Attinycore)」


 先にブートローダを書き込んでから、同じように本体プログラムを書き込みすると良いようです。

 書き込み時にUSBaspのバージョンが古いよ、なんてエラーが出ることもありますが、気にせず進めば書き込み完了までArduinoIDEが知らせてくれます。


 あとはATtiny85のチップをゲーム機のICソケットに載せて電池と電源を入れれば!

 


  じゃじゃーん!びっくりするくらい意外とあっさり動きます。すごい!

  書き込み時や最初の動作時にいろいろトラブるかな?と思っていましたが、ほとんどトラブルらしいこともなく動いたので逆にびっくり!

 

※ 実は最初の書き込みでも動いたのですが、動作が明らかに遅かったので、あれ?と思いました。どうやらクロックが8Mhz動作だったようなので、16Mhzに設定して再書き込みしたら、バッチリでした。


 というわけで、誰でも簡単に楽しめると思うので、ぜひみなさんもトライしてみてください!

 


 


2021年11月27日土曜日

Tinyjoypad を作ろう!01 ゲーム系電子工作の決定版!

 

 いきなり結論ですが、ハマってます!これはめっちゃ面白い!

 

(Tiny joypad)


 Attiny85というAVR系マイコンチップを使ったゲーム機の作例が、ここ数年で世界的にちょっとしたブームになっているのですが、私も作ってみました。

 

 ゲーム機を作るというのは、なかなかハードルが高そうに思うのですが、かなり少ない部品点数と、かなり安い金額で「古典アーケードゲームのクローン」が作れてしまうのにはびっくり!

 世界の先輩たちの開発力に、かなり感動します。


オリジナルのサイト

https://www.tinyjoypad.com/


■ AVRマイコン ATtiny85を使った携帯ゲーム機

■ 有機ELを使った見やすい画面(なのに安い!画面パーツ500〜600円)

■ 総金額2000円程度でできる!

■ 電子工作の技術レベルでは初心者レベルでOK。

■ スイッチ・液晶・ブザー・電池ケースくらいしか使わない。あとはワンチップ。

■ インベーダーゲームほか、多数の古典アーケードゲームが移植されている。

■ マイコン入門に最適。Arduinoと高い互換性。


==========

 

<1> 基盤とパーツの入手

 秋月電子等で大半は入手できます。C型などのベーシックなユニバーサル基板にも組めます。

  プリント済基板(PCB)も販売されています。今回はピコソフトさんの互換基板を使ってみました。

 

互換基板 ORANGE-mono1

http://www.picosoft.co.jp/ORANGE-mono1/index.html 

  自作しても難易度は低いのですが、基板のせいで動かないのか、チップへの書き込みミスで動かないのかわからないと困るので、まずはリファレンス機がてら基板を利用させていただきました。

 2機目からはバンバン自作できると思います。また、別に、


工作魂さん

https://twitter.com/porokin


も互換基板を頒布なさっています。ヤフオクなどをチェック!

 

 こちらは、いわゆるC型基板と同じサイズ。ピコソフトバージョンよりさらに小さいです。

 工作魂さんは、さらにコンパクトなキットも作っておられます。

 

 回路図は

 https://www.tinyjoypad.com/tiny-joypad-shematic

 にあります。


○ATtiny85-20PU×1  ○ ICソケット8ピン×1 ○タクトスイッチ×5  

○0.96インチ128×64ドット有機ELディスプレイ(OLED)×1

○スライドスイッチ×1

○ 圧電スピーカ×1

○電池ソケット×1 ○電池CR2032×1

○抵抗10KΩ×1

○ 抵抗22KΩ×2

○抵抗33KΩ×2

○抵抗82〜91KΩ×2

○基板

 

が最小構成です。部品数も少ない!




<2> 書き込みハードとソフトの準備


 書き込み方法はいくつかあります。Arduinoとブレッドボードで組んでもいいです。

私はUSBaspを使ってみました。要するにAVR書き込み器ですね。

 

 左に写っているUSBに挿せる小さいのがUSBaspです。 10ピン <-> 6ピン変換を使っています。右側はブレッドボードです。

 

RESET○ 1 8 VCC

         2 7 SCK

         3 6 MISO

GND     4 5 MOSI

 

で配線してください。
    

 プログラムを書き込むソフトはArduinoIDEです。

https://www.arduino.cc/en/software 

 私はLinux版64ビットと32ビットを使っています。




<3> ArduinoIDEの下準備とセッティング

 ArduinoIDEをインストールしておきます。Windowsの場合は「arduino.exe」が実行ファイルとのこと。

 Linuxの場合は圧縮ファイルを任意のフォルダに解凍すると「arduino」というシェルスクリプトがあるので、それをクリックするとそのまま動きます。

 


 

 おなじフォルダに「install.sh」というスクリプトがあるのですが、それを実行するとデスクトップにアイコンができたり、メニューにArduinoIDEが入ったりして便利になります。

(ただ、リンクができるだけです)


 今回、有機EL(I2C接続のもの)を使うので、そのドライバをプログラムの中に取り込んでおく必要があります。

 

 ※OLEDには4ピンのものと7ピン〜のものがあります。4pinがI2C通信で、pin数が多いのはSPI通信です。

 

 

そこで、


 ssd1306xledというディスプレイ制御ライブラリがGithubにあるので、それを利用させてもらいます。

 

https://github.com/Defragster/ssd1306xled

 

「Code」のところからZIPファイルがダウンロードできます。

 ArduinoIDEの面白いのは、ZIPファイルのままライブラリを取り込めるところで、

 

「スケッチ」→「ライブラリをインクルード」→「ZIP形式のライブラリをインクルード」から未解凍のまま取り込むことができます。

 

 

 もうひとつ、ATtiny85のチップを取り扱うには、「ボードマネージャの追加」が必要です。

これは「ファイル」→「環境設定」の追加のボードマネージャのURLに次の文言を入力します。

 


 ”http://drazzy.com/package_drazzy.com_index.json”

 

これで、SpencKonde氏が公開しているGithubの設定ファイルを使えるようになります。

 

オリジナルは

 https://github.com/SpenceKonde/ATTinyCore/

です。

「ツール」→「ボード」→「ボードマネージャ」と進むと、ATtinycoreを選択できます。

(上の写真ではすでにINSTALLEDになってます)

 このとき、Linuxの32ビットだとエラーが出る場合があるので、

https://kotaro-yoshiie.blogspot.com/2021/11/arduino-ide-arduino-ide-1816-avrdude.html
 

の記事を参照して回避してくださいね。



 さて、今回はここまで!次回はゲームソフトを選んで、チップに書き込みするところまでやります!


(続く)



2021年11月26日金曜日

2021年 おすすめ軽量Linux 2トップ! 軽さと充実度のバランスが取れているのは?

  2021年もそろそろおしまいに差し掛かっていますが、今現在でのお気に入りLinuxのお話をちょこっと。

 

 実は2018年にもおなじようなネタを書いていましたが、いろいろ時代が進むと事情が変化しております。

 

2018年版 おすすめ軽量Linux 

 

 2018年には

 第3位 LinuxBean

 第2位 PuppyLinux

 第1位 Lubuntu

を推していましたが、LinuxBeanは開発が停滞してしまいました。


Lubuntuは一時期ちょっとしたバグがあって、その対応がめんどくさかったので抜いてしまいました。

 

 結局、今でも使っているのはこの中では「Puppylinux」です。




■ ヨシイエのオススメその1 PuppyLinux

 


 

 

 時代はなんとWindows11だそうですが、こちとらまだまだシングルコアのセレロンマシンノートみたいなのがゴロゴロ転がっています。

 そんな時代遅れのマシンでもバリバリ使えるのが「 PuppyLinux」のよいところ。


 本家のUbuntuに追従して、バージョンもいろいろ上がっています。

 https://puppylinux.com/

 

 FossaPup64 9.5は最新版。Ubuntu 20.04 LTSに追従しているので、2025年までサポートされますよ。

 ただ、 Puppyは軽い軽いと言われながらも、さすがに重量が増えつつあります。シングルコアでは厳しいです。

 初期の2コアでも、もっさり感があります。


 そこで、シングルコアノートに最適な逸品をご紹介!

 XenialPup 7.5

は最高です。速度と機能のバランスが取れてます。Firefoxなども最新版がちゃんと自動で入るし、日常生活で困ることはありません。

 

 元になったUbuntuは 16.04 LTS Xenial なので、2021年4月まで対応。あら?ちょうど終わっちゃったところですね。

  CPUとメモリに余裕があれば、この次のバージョンである「BionicPup」もいいですよ!こちらは初期の2コアマシンで使ってたことありますので、問題なしです。

  最近のPuppyは、不要なプレインストールソフトをどんどん削る機能がついているので便利です。さらなる軽量化がすぐできます。

 

 

 

=======

 

 

 

■ ヨシイエのオススメその2 LinuxMint

  



 LinuxMintもよく使っています。19.1と20.1を現在も使用中。

 安定しているし、Windowsのようでわかりやすいし、それでいて重たいと感じることが少ないです。

 ただし、シングルコアノートでは流石に荷が重いので、せめて2コア以上で運用したいところです。

 こちらもほぼ何でもできるし、困りごとは少ないのですが、LinuxMintさんの考え方として、「バージョンアップは、クリーンインストールで」というのが哲学。

  ということはFirefoxなどは、最初に入っているものでバージョンが固定されちゃうのです。

 PuppyLinuxだと「入るとこまで、新しいのが入る」「性能が追いつかないところまで行くと、起動しない」のですが、LinuxMintは、それぞれのソフトのバージョンは固定です。

 なので、OS本体のバージョンと心中しながら使うことになります。

 

 それから、19.2から標準の日本語対応フォントが「中華フォント」になってしまいました。

 まるで一昔前に流行した、中華アンドロイドタブレットみたいな「中華風フォント」で表示されてしまうのです!

 このあたりの好き嫌いは分かれるかもしれませんね〜。




 

2021年11月24日水曜日

Arduino IDE でのエラー対策 Arduino IDE 1.8.16 avrdude

 

 Arduinoのプログラミングで起きたトラブルの備忘録です。

 

 Arduino IDEを使う場合、何もしなくても標準的なArduinoボードには普通に対応しているものの、Attiny85などの異なるAVRチップを使うときには、ボードマネージャで対応ボードを追加する必要があります。

 

 そのやり方は、

 

http://drazzy.com/package_drazzy.com_index.json

 

を「ファイル|環境設定」の追加のボードマネージャに入力して、 その後


「ツール|ボード|ボードマネージャ」


から「ATTinyCore」などの希望するパッケージを探してインストールすることになります。

 

 右下に「インストール」ボタンがあるので、それを押すのですが、

 


 

”ツールavrdudeは使用中のオペレーティングシステムでは利用できません”

 

のエラーが出ます。

 

 このトラブル、あまり他では記載がないのでここに書いておくのですが、Linuxでも64ビット版だとエラーが出ず、すんなりインストールできます。

 

 試してみた環境だと

◇ Linuxmint 20.1 (64ビット)

ではうまくいくのに

◇ Linuxmint 19.1 (32ビット)

だとダメで、スクリーンショットにあるように

◇ PuppyLinux (XenialPup 7.5 32ビット)

もダメでした。 

 

 どうも、32ビット版だとエラーが出るようです。

 

=========

 

 回避方法。けっこう単純です。

 

 インストールボタンの左に「1.5.2」というバージョン表示の窓があり、プルダウンで選択できるようになっています。

 このバージョンを下げます。

 「1.5.0」でもダメですが、「1.4.1以下」にすればすんなりインストールできます。

 

エラーで困っている人は、お試しあれ。

 

 

 

 

 

Arduino 系自作ゲーム機 総まとめ Tinyjoypad/ARDUBOY

 

 前回もちょこっと、古い言い方で言えば「マイコン」がらみの話を書きましたが、うちの息子がハードウエアのプログラミングをしてみたい!というので、Arduinoを触り始めています。

 AVRはすっぽ抜けていて、電子工作はPICで止まっていたヨシイエですが、久々に勉強中。まあ、相手が子供なので、ゲーム関連が面白いかな~と思って調べているとすごいことになっていますね!

 

 昔話をすれば、1997年に「トランジスタ技術」に掲載された「PIC16C84で作る ワンチップ・ブレークアウト・ゲームの製作」という記事が、当時電子工作界隈に衝撃をもたらしました。

ワンチップ・ブレークアウト・ゲームの製作(当時の記事) 

 この作例が凄いのは、いわゆるテレビに繋ぐ「ビデオ信号」を送出してゲームを作っているところです。液晶表示機にデジタルで出力しているのではないのが、草創期のビデオゲームに通じます。

  私もその前後からPICにハマったくちです。

 

 さて、昔話は脇へ置いておいて、ここ数年で自作ゲーム界隈はめちゃんこ楽しいことになってます。特に初心者向けといわれるマイコンボードの「Arduino」近辺・AVR利用での作例が多く、ふた昔前のビデオゲームがほぼ再現されているという恐ろしさ!

 これはぜひ、作ってみたい。


==========



◆ TinyJoypad


 
https://www.tinyjoypad.com/


 AVRワンチップマイコン Attiny85を使った自作ゲーム機です。部品点数も少なく、かつ、シンプルでわかりやすいハードウエアに、往年の名作ゲームが載ります。

 テトリス・インベーダーゲーム・パックマンなど、70~80年代の名作アーケードが移植されています。

 自作でも楽勝でパーツを集められるのですが、初心者はピコソフトさんから出ている基板を中心に組むのがおすすめ。

http://www.picosoft.co.jp/ORANGE-mono1/index.html 

↑基板売ってます。キットにはなっていませんがパーツリストもあるので、部品あつめは難しくありません。


https://github.com/kosaku-damashii

↑工作魂さんは、ヤフオクなどで不定期にキットを販売なさっています。



◆ Arduboy

 

 https://www.switch-science.com/catalog/7157/

 スイッチサイエンスほかで国内でも入手しやすいArduino系既製(自作)ゲーム機。

ATmega32u4使用。

 メモリ性能が上がっているので、より容量が大きいプログラム・ゲームが載ります。世界中のファンが、ゲームの作例をアップしているので

https://www.tinyjoypad.com/arduboy

https://arduboy.ried.cl/


 ゲームがたくさんしたいねん!という人はArduboyを作りたくなるかも。

(ただ、基本原理や、プログラムそのものをいじってみたい人はTinyjoypadのほうがベーシックなのでとっつきやすいと思います。

 Arduboyは本来、チップごとにゲームを書き込んで本体のICソケットに刺すのですが、ArduboyFXという上位機種があり、そちらはROMにめちゃくちゃたくさん(250作品?)のゲームがすでに書き込まれています。

 ただ、FXは1万円くらいするので、たかが8ビットゲームの詰め合わせに1万円出すのなら、ファミコン互換機のほうがマシかもしれません。あくまでも「作りたい!」というのなら、無印Arduboyでもいいと思います。(ただし、無印は国内では多くの店で終売になっています)

 誤解があってはいけませんが、当然Arduboyも自作可能です。2~3千円もあればできると思います。

 

 

◆ AttinyArcade

 


https://webboggles.com/attiny85-game-kit-assembly-instructions/ 

 

 Attiny85使用のTinyJoypadをさらにシンプルにしたマシンです。Tinyjoypadは、十字キーを持っていますが、AttinyArcadeは2ボタンのみ。

部品点数があまりにも少なく、ハードウエアとしては逆に凄いです。

「AVR1つ、ボタンスイッチ2つ、電池ケース1つ、 抵抗2つ、圧電ブザー1つ、ディスプレイ1つ」

これだけで動きます。

そのかわりできるゲーム数は少ないですが、新しい自作ゲームを開発する余地がありそうです。



◆ TinyHandheld

  https://github.com/Yevgeniy-Olexandrenko/tiny-handheld

 

 こちらもTinyJoypadの派生機種です。十字キーをジョイスティックにして、 外部EEPROMを加えたもの。

 上位互換機といったところでしょうか。

 

 

◆ Gamebuino


 

2017年ごろ、秋月電子でも売っていたArduino系ゲーム機です。今は国内販売なさそう。

本家はバージョンアップしてる??METAが登場。

https://gamebuino.com/ 

 

 互換機の作例はありました。

https://ht-deko.com/arduino/gamebuino_clone.html

Arduino Pro Mini を使っているらしいので、UnoなどでもおなじみのATmega328Pですね。
 
記憶媒体としてマイクロSDを使っているので、それ関係の基盤やチップが必要になってきます。
 
自作するには難易度が上がりそうです。

 

 

◆ 番外編 Attiny10/13利用のゲームなど

  

https://www.tinyjoypad.com/attiny10 

https://protopedia.net/prototype/592

 Lチカのグレードアップ版としてAttiny10や13を使った「サイモン」ゲームの作例がたくさん挙がっています。こちらはLED表示で、ディスプレイを使わないので、見た目のワクワク度は下がりますが。

 

 世の中はすごいもので、Attiny10で インベーダーゲームを作っている人もいます。昔のPICブレークアウトを思い出しますね。

https://www.youtube.com/watch?v=aq30EdgSpOY 

 こちらはビデオ出力です。


==========


8ピン

Attiny13 8bit/20MHz プログラムメモリ:1kB EEPROM:64B RAM:64B

Attiny85 8bit/20MHz プログラムメモリ:8kB EEPROM:512B RAM:512B


Arduboy

ATmega32u4 8bit/16MHz プログラムメモリ:32kB EEPROM:1kB RAM:2.5kB

(Arduino Leonardoに搭載)


Gamebuino

ATmega328P 8bit/20MHz プログラムメモリ:32kB EEPROM:1kB RAM:2kB 

(Arduino Unoと同じ)

 

 

==========

 プログラムをちゃんと読みながら、ハードウエア、ソフトウエアともに作ってみたい!という人には、


「Tinyjoypad」か「AttinyArcade」

 

あたりから始めるのがよいと思います。TinyJoypadは、著作権まわりの処理のためか、ダウンロードできるプログラムのある場所が現在隠されているのですが、探せば転がってます。

 

 


2021年11月19日金曜日

文系にもわかる マイコン世界史

 

 もともとヨシイエさんは、ちっちゃい頃から電子工作などが好きな方で、はんだごてで何度も机に焼き穴をあけてボコボコにしていたくらいなのですが、結論から言えばバリバリの文系人間として成長し、大学は文学部でした。

 

 それでも、人生の折々に、電子かいわいのガジェットが入り込んで来たり、ちょうど1995年に大学生だったので、間違いなくWindows旋風とやらにも巻き込まれ、ド文系のくせにコンピュータにもわずかに詳しい人間としておっさんになってしまった経緯があります。

 

 そんなヨシイエさんにも息子が生まれ、現在小学生の息子が、父親に似たのかわけのわからん電子的なものやプログラミングに興味しんしんなので、ひっさしぶりに電子工作かいわいのパーツを調べ始めたわけですね。

 

 そうすると、5年10年そっち系のことをやっていないと、すっぽりと電子かいわいの流行がすっぽ抜けてしまい、そこはかと浦島太郎状態になっているわけです。

 

 ええい、もうちょっと具体的に言いましょう。PICはわかるけどAVRがよくわからんとか、ラズパイとArduinoの違いがわからんとか、そういう諸問題が出てきたわけです。


 そこで今回は、自身の歴史を振り返りながら、「文系にもわかるマイコン世界史」ということで、人類とコンピュータの歴史について学んでみたいと思います。

 

 つまりは備忘録です。楽しんでください。

 

 

==========

 

 

■ 紀元前 (先史時代) 汎用ロジックICの時代 ■

 

 コンピュータの誕生が「いつ」なのかという問いは、ある瞬間をもって始まるというよりは、そのベースとなる前代の技術というものが次第に発展した、というほうが正しいと思います。

 たとえば一番わかりやすい「コンピュータゲーム」の登場で言えば、世界最初のコンピュータゲームとされるものは、

 

陰極線管娯楽装置

 

なんとアナログ回路で構成されていて、デジタルですらなかったとのこと。電気的な回路だけで、電気信号の波形をテレビみたいなものに映して遊んでいたってことですね。

 

 その意味ではまるで「ウイルスは生物なのか?生物はどこからはじまったのか?」に近いような哲学的なテーマがここには含まれるわけですが、もともとは半導体によるアナログ回路が発達するなかで、「これをうまく作れば、情報の”ある・なし”に使えるぞ!」と思いついたところからデジタル回路が生まれていったわけです。

 

 たとえば、「電圧の高い波形」を出す回路があるとしましょう。そこに「電圧の低い波形」を出す回路を組み合わせれば「コンピュータでいうところの0と1を表現できる」ことになります。

 ごくごく平たく言えばそんな感じで、コンピュータの黎明期はスタートするわけですが、現在私たちが思っているような「CPUを持ったいわゆるコンピュータ」が登場する以前に、単なる論理演算だけを行うような、シンプルな回路が登場していました。


 それを「ロジックIC」と言います。

 

汎用ロジックIC 

 

 1974年生まれの団塊ジュニアおっさんであるヨシイエさんは、旅館なんかに行くと100円を入れて部屋のテレビで遊べる「PONG」というテレビゲームの互換機が置いてあったのを覚えています。

  PONGというのは、ピンポンゲームの原典みたいなテレビゲームなのですが、コントローラーに左右に回せるつまみがついていて、それに合わせて画面上のラケットが動いてボールを打ち返すようなゲームでした。

 これはオリジナルが「ATARI」というアメリカの会社のゲームです。ところが、現代人から見ると「コンピュータゲーム」ではあるものの、実際にはコンピュータ(CPU)はまだ使われておらず「汎用ロジックIC」をたくさん組み合わせて作られていました。



■ 紀元元年 イエスキリスト=CPUの誕生 ■


 CPUと言えば、ちょっとパソコンに詳しい方なら「コンピュータの脳みそ」としてよくご存知の部品だと思います。

 コンピュータの歴史とはすなわちCPUの歴史と考えても問題ないくらいなのですが、CPUの誕生によって、同時に「プログラミング」という言葉も誕生したと言えます。


 いったいどういうことかというと、ロジックICの時代は、「ある機能をもったゲームを作ろう」と思えば、「その機能を実現する回路を実際に電線で結んで作る」ということをやっていたわけです。


 ところが、CPUとメモリが誕生することで、「ある機能を実現するには、実際の電線を結ばずに、ソフトウエアに書き込むことで、コンピュータが何にでも化けてくれる」ということができるようになったのです。

 これはまさに、紀元のはじまり、イエスキリストの誕生のようなものでした。

 電子世界の救世主が登場したわけです。


 世界初とされるマイクロプロセッサ、つまりCPUの元祖は、アメリカのインテルが1971年に作った「4004」です。

 1974年生まれのヨシイエとしては、まさにコンピュータと同時代を生きているおっさんということになるでしょう。


 「4004」はその名のとおり「4ビット」のCPUでした。作ったのがインテルというところも、その後に連綿と続く「インテル帝国」のスタートを予感させ、なるほど!と納得ですね。

 ところが、この4004、アメリカインテルだけでなく、日本の「ビジコン」という会社との共同開発でした。

 最初は日本のビジコンがプログラムで動く「電卓」を作りたかったので、そのためのICの開発をインテルに依頼したのですが、数が多くなってややこしいので、CPUにしてしまったということのようです。



■ キリスト教の発展? ローマ国教と8080 ■

 

 世界宗教史ではイエスキリストが誕生し、パウロなどが活躍しながら、最終的にはローマ帝国の国教としてキリスト教が採用されて世界宗教へと発展してゆきますが、インテル帝国のCPUも、あるチップが登場したことで世界へ爆裂してゆきます。


 それが1974年に登場したインテル8080です。


 8080は名前から推測できるように「8ビット」のCPUでした。ところが、実は最初の8ビットCPUというわけではなく、その前に「8008」というのが出たのですが、こちらはやや性能不足でヒットしていません。

 

 8080のどこが凄いかというと、細かい性能については、文系にはわからなくてOK。ただ、次のネタを覚えておいてください。テストに出るかも!

 

■ 8080は、タイトー「スペースインベーダー」に組み込まれ、国産初の「CPU搭載ゲーム機」となった。

■ 8080から派生した上位互換のザイログ「Z80」はNECのPC-8801やMSXパソコンなど、パソコン黎明期の立役者となった。

■ 8080は、現代まで続くインテルCPU「x86」系の元祖で先祖でルーツとなった。(8086は16ビット)


 ほら!なんか知らんけどすごいCPUが登場したことはわかりますよね?パソコンといえば「インテル入ってる」ですが、その歴史は実質的にはここからはじまったわけです。




■ もうひとつのCPU 1974年生まれのにくいヤツ ■

 

 8080がインテル帝国の初代皇帝だとすれば、同時期に世界の別の場所でライバルが登場していたことも押さえておきます。


 それがモトローラの「6800」というCPUで、1974年にモトローラ初のCPUとして登場しました。(8ビット)

  モトローラといえば、古き良きアップルファンにはおなじみのCPUですが、その歴史はここから始まっています。

 ここで覚えておくべきなのはたった1点です。

 

■ 6800派生機種「モステクノロジー6502」 系CPUは「Apple II」に載り、また「任天堂ファミリーコンピュータ」に載った。

 

どうだ!すごいだろう。ここに来てすでにのちの2大派閥(インテルVSモトローラ)の戦いが始まった感がありますね。

 

 最終的にはモトローラ系は負けてしまいます。アップルのパソコンは、インテル入ってるになっちゃうのですが、それはまた別のお話。

 

 

■ 中世から現代へ  倍々ゲームのCPU世界 ■

  

 キリスト教とローマ帝国の歴史が、現代の西側諸国(ヨーロッパ諸国)の発展につながっているように、ここからCPUの世界でも、インテル帝国を主流派としながら倍々ゲームの発展が続いてゆきます。


 ここからはざっくり駆け足で大丈夫です。

 

 8086  → 16ビット機がスタート

 80286

 80386 → 32ビット機がスタート

  i486 → このあたりからクロック周波数を倍速にする技術も

 (586) → 5なのでつまり「ペンタ」。ペンティアムの登場です。


 286〜486くらいの時代は、NEC「PC-9801」シリーズの全盛期です。その後は、世界標準のPC/AT互換機(この言い方も懐かしい)が主流に。


 intel64搭載 → 64ビットがスタート 

 マルチコアへ → コア数も倍々(2コア・4コア・マルチコア)


 Pentiumという名前が出てから、あれよあれよとインテルCPUは高性能化して現代に至ります。ややこしいのは、同じ名前で出ていますなのに、世代が違ったりすると全然能力が変わっているということ。このあたりではCoreシリーズではお馴染みの現象ですね。


 マイコン世界史としては、32ビット機から64ビット機にまで発展して現代に至るよね、と知っておけば充分です。



■ 東洋哲学(禅)やらヨガとか RISCの登場 ■ 

 

 さてさて、スティーブジョブズが「禅」にハマっていたのは有名ですが、コンピュータにも哲学があって、「CISC」と「RISC」の2つの考え方に分かれています。

 CISCは、簡単に言えば、難しい機能をたくさん保有して、複数の命令を実行しようとする哲学です。

 言ってみれば正社員。営業部やら企画部、経理部などいろいろ部門を移りながらビジネスマンとして成長してゆく感じです。

 

RISCは、逆で、機能や命令は極力シンプルにして、単純な作業を繰り返し積み重ねるやり方です。

 言ってみれば皿洗いだけするアルバイトやら、デリバリーだけ配達員に外注するようなものです。

 

 RISCのCPUは「MIPS」とか「サン・マイクロシステムズ」などから出ましたが、個別のCPU名は覚える必要はないでしょう。ただ、このRISCの考え方は、どんどん現代に近づくにつれて、あらゆる所で採用されていくようになります。

 

 CISCベースのCPUにもRISCライクな考え方は、どんどん取り入れられています。

 

 

■ バリューセットの登場 Socの時代 ■

 

 ところで世界史とは関係ないのですが、マクドナルドのバリューセットはご存知ですよね?日本風に言えば「定食」です。

 

 本来なら和食も、洋食も単品のメニューがでん!とあって、それを組み合わせてランチやディナーを楽しむわけですが、最初からコンパクトに「セット」になっていると、大変便利にごはんをいただくことができます。

 

 コンピュータの世界は、今見てきたように「どんどん速く、どんどんでかく」なってきたわけですが、一方で豪華フルコースディナーばかりが求められるわけではなく、さらっとご飯が食べられるセットメニューも必要になってきたわけです。

 

  コンピュータの世界では、たとえば、私がパソコンをはじめたPC-9801では、「CPUが80286で、メモリが640KB、ハードディスクなしでフロッピーディスクが1.2MB」という時代からスタートしたのですが、今では「CPUはマルチコア メモリは4MB〜16MB、ハードディスクなら最低500GBからで、テラだって当たり前」の時代です。

 そんな風に、「豪華単品メニューをどんどん追加する」のがひとつの流れなのですが、ぶっちゃけそんだけ食べなくてもいい場面は山ほどあるわけで、真逆の動きが出てきます。

 

 それが SoC という考え方。ようするに、ちょびっとずつセットにして、ひとつのCPUに乗っけてしまうわけです。

 

 これ、厳密にいうと一つのチップに「CPUもメモリも、外部記憶もI/Oも」全部載っているので、CPUとは呼べません。なのでSoC(システム・オン・ア・チップ)と呼ばれます。

 

 1990年代頃から、こうした考え方が製品化されてきて、ビット数の少ない「ちっちゃいコンピュータのセット」が各種開発されるようになってきました。

 代表的なものは以下。

 

マイクロコントローラと呼ばれるもの

■ PIC マイクロチップ社  8ビット〜のワンチップマイコン 単品で使うことが多い。 

■ AVR アトメル社 8ビット〜のワンチップマイコン Arduinoに載っている。

これらは組み込み機器や電子工作などで用いられることが多い。


 

SoCと呼ばれるもの

■ ARM  Cortexなどのスマホのエンジン部分はみなこれ。ラズパイにも載っている。

組み込み機器からスマホまで、手のひらサイズコンピュータの世界を席巻している


 8ビット系が主流のワンチップマイコンは、手作りロボットを動かしたり、センサーと組み合わせてシンプルな機器を作ったりと、まあできることはおもちゃレベルなのですが、ARMの場合は恐ろしいことになっています。

 もともとは小さなワンチップなのに、「液晶を動かすエンジン」「USB」「各種センサ」「無線通信機能」「入力デバイス」などを全部ぶちこんでしまうと、


 スマートフォン


が出来上がってしまいます。おまけに、「速い、でかい、すごい」を全部ぶちこんでいるので、ワンチップなのに64ビットで、ワンチップなのにiPhone13を動かす、なんてことが出来ています。


 こうなると、高性能なパソコンとの差がほとんどありません。そんな時代がやってきてしまった、ということですね。



〜〜〜〜〜〜〜〜〜〜


■ おわりに まとめ ■


 こうして歴史を概観してみると、1974年生まれの団塊Jrである私は、コンピュータの歴史とともに生きてきたんだなあ、とちょっと感慨深くなります。

 

 私個人は、DOSの80286から入って、PC-9801でコンピュータのイロハを学び、Windows一択の時代を長く過ごしてMacにはあまり目もくれず、自作PCなどの世界に引っ張られていきました。

 うちのおじさんなんかは、FM-7でBASICを走らせていたので、やや前の世代ということになります。結局私はBASICはやりませなんだ。

 

 社会人になって時間に余裕ができると電子工作(アナログ)から、PICへと移行しました。この文章は文系向けですが、「PIC16C84」が懐かしい工学系のあなたもいらっしゃることでしょう。

 パソコンかいわいでは東芝Librettoは名機でしたね。ThinkPadウルトラマンPCとかもね。

 

 ああ、そうそう仕事がらみでSUNのSPARCは触ったことあります。UNIXの勉強させられました。おかげでLinuxの草創期からいじってました。Librettoに、Slackwareを入れてたよ。イキってたんだなあ、あの頃。


 Windowsも、XPぐらいから、「仕事では使うけれど、家のパソコンはLinux」になりました。そうなると新しいCPUを追いかけなくなり、別になんでもいいや、ということに。

 そうこうするうちにLinuxが入った(入れた)変なマシンは10台ぐらいあるのに、Windows7や8や10は1台くらいしかない、ということになってきました。

 昔みたいにCDやDVDを焼いてコレクションを増やすこともなくなったし、自作PCも作らなくなったし、うーむ、いったい何をして過ごしていたのだろう、と思うと、ハードよりむしろブログを書いたり、youtubeに動画を上げたりとかのほうが忙しかったかも。


 スマホはiPhone派です。アンドロイドも中華PADをいくつかいじりましたが、「まあ、こんなものか」と結局iOSに戻ります。Macは一切使わなかったのに、スマホだけはアップル一択。

 でもSnapdragon4コアの中国製スマホとか、ちょっと集めてみたりもしたのよ。

 

 速いマシンにはとんと興味もなく、グラフィックボードもにも目移りしなかったクチなので、インテル帝国の奴隷にはならずに済んだかもしれません。 ゲーミングノート?なにそれ?というタイプです。


 ラズベリーパイは持ってます。ただ単に、「シンプルなパソコン」として動いています。Linuxだし。


 そんなところに息子が電子工作に興味を持ったものだから、改めてArduinoを入手したばかり。なるほど、AVRは完全にすっぽ抜けてるわ〜、ということでこの記事を書きました。


 改めて勉強し直せたのは、「マイクロコンピュータ(ワンチップ)」ものと、「シングルボードコンピュータ」の領域の重なり具合、とかでしょうか。秋月電子にはお世話になっているのですが、「AKI-80」と「PIC」と「ラズパイ」と「Arduino」など、それぞれどうジャンルが分かれているのかなど、頭の中で整理ができるようになってきました。


 私だってATMegaを知らなくても生きてこれたので、別に誰であっても知らなくてもいいと思います。


 さて、そろそろ結論です。パソコンはどんどん速くなっているものの、ぶっちゃけ人間の身体よりはるかに速くなったので、キーボード入力をコンピュータ側が「待って」いるような状態です。どんな遅いパソコンでも、そうです。


 ということは、ぶっちゃけ「ブラウザが動けば、まあこと足りる」のが実情で、スマホのアプリでもよーく見ているとほぼ全部「ブラウザの代替」なんですよね。youtubeアプリとかまさにそうで、別にアプリでなくてもブラウザでほとんどおなじ処理ができるのです。

 今のパソコンの状況は、実際は9割以上が「人間の反応待ち」時間を処理しているのではないかしら?


 HTML5とかが出てきて、ブラウザで読める言語の仕様も少しずつ変化しているため、いつまでも古いマシンというわけにもいきませんが、Linuxなら10年以上前のマシンでも、別に普通に動きます。それはそれで恐ろしいけれど。

 

 私が70歳とか80歳になるころには、どれだけ速くなっているのかわかりませんが、ムーアの法則もそろそろ限界説が出てきており、(だからコアを増やすぐらいしかない)コンピュータの進化はもしかするとこのあたりで打ち止めということもあるかもしれませんね。

 

 なーんとなく、世界史における「先進国の文化と経済が、いよいよ疲弊して資本主義の行く末が怪しい」ということとリンクしているようにも感じます。

 コンピュータなんて、たかだか50年の歴史というわけなので、気楽にいきましょう!