さて、Java版デスクトップアプリとしてのついっちが一応完成したので、
ついっち開発について一度まとめておきたいと思います。

まずはついっち開発に至った経緯をまとめます。
そもそも、ボクのエンジニアとしてのテーマは
「なぜ print 'a';とプログラムを書いて実行するとaがディスプレイに表示されるのか?」
でした。

応用情報技術者になりましたが、謎は謎のままです。
コンパイラでコンパイルして、リンカでリンクして、
マシン語に変換して実行
その後、CPUからビデオカードにaを表示する命令が飛び・・・
くらいまでは分かってました。

応用情報の試験勉強でそれをCPUでプログラムカウンタに基づいて、
レジスタにセットして、実行。
位までわかりました。

まだ中途半端。
そもそも電気信号を送るって何?

ということで、電子工作を始めたのでした。
まずははんだ付けの練習から入って、抵抗やら電流やら電圧やらについて
理解しました。
そして、USB開発キットを買って、いろいろ遊んでみました。

自分で作ってみるといろいろわかってきました。
オシレータ(発振子)を使って、電気の波を発生させること。
電気の波により電位を生み、電位差を読み取ることによって
信号を伝達すること。
CPUは複数の部品の集合で、MPU単位で理解していないとだめなこと。
フリップフロップ回路による状態の記憶からDDRメモリに至る経緯。

アセンブリを理解することでCPUとどういうやり取りをしているか。
コンパイラ、リンカがどういう処理をしているか。

USBケーブルとは?
USBケーブルがどう繋がっていて、どのようにデータ処理されているのか。

この一つの集大成として、ボタンを押すとツイッタ―でつぶやく
ついっちを開発しようと思ったのでした。

今まで散々Webシステムは作ってきましたし、
APIも連携したことも自作したこともありました。
Webとしてやるなら、別にむずかしいことでもないです。

さて・・・どうやったらボタンを押すとつぶやけるのかな?と
しばらく悩んでおりました。

よくよくUSB開発キットを見てみると、ボタンはついてますし、
ボタンを押すとRS-232C経由でどのボタンが押されたのかもわかります。
ということはこれをトリガーにして、ツイッタ―のAPIと連携すればいい!
ここまではあっさりたどり着きました。

ん?連携・・・
連携にもいろいろあります。
1つはデバイス単体で全ての動作を終わらせること。
最終的にインターネットに接続している必要があるので、
LANポートが必要になります。
USB開発キットでこの仕様を実装するのは無理があります。

もう1つは、ボタンはあくまでもトリガーとして使い、
実際のAPIとの連携処理をOS上のアプリケーションで行うこと。

後はどこまでデバイスでやって、どこからアプリケーションで行うかが問題です。
とりあえず、全部アプリでやって、徐々にデバイスに移行というプランを考えました。

とすると、結局、まずはデスクトップアプリとして、
ボタンを押すとツイッタ―でつぶやくアプリを作る必要があります。

選択肢は・・・
1.VBまたはVCで実装
2.VBSで実装
3.Javaで実装
の3つが浮かびました。

1をやろうとしたところVisual Studioが入っていないことに気が付きました。
というわけで、2。VBSで実装を選びました。
twitterは認証方法として、oAuth認証を使っているようです。
oAuth認証ではSHAでの暗号化が必要です。
調べてみるとVBSにSHAの暗号化の機能はないらしい。
自作するのもめんどい・・・。
ということで3.Javaで実装に至りました。

Javaを実用レベル身に付けるというのも目標の1つにあったため、
せっかくなので、いろいろ使ってみようと、MavenとSwingをチョイスしてみました。

Mavenはapacheプロジェクトの1つでプロジェクト管理のためのフレームワーク、
SwingはAWTを継承した、Javaでのデスクトップアプリ開発のためのフレームワークです。

途中でちょっと違うところにいってしまいましたが、
昨日とりあえず完成しました。

まだまだ当初の要求は満たしてないんですけどね。

途中違うところに行ったときに、Javaの実装に潜む問題点に気が付きました。
JavaでWindowsのデバイスドライバと連携するのは現実的ではないようです。
やっぱりWindowsアプリはVSで作れということですね。

一応RS-232Cのデバイスドライバはあるにはあるみたいですが、
今のところなぜか動いてくれません。

USBのデバイスドライバも見つけましたが、LGPLライセンスだったので却下。
まずはWindowsのデバイスドライバについて理解しようと思ったのでした。

何をすればよいのか、何が分かっていて、何が分かっていないのか、
なんとなく見えてきました。

いつもここで投げ出してしまうのでちょっと心配なもとでした。