作るのは当時の自分からすると何をして良いのかわからなかった。唯一わかっていたのは、動かないソフトウェアは「考えられていない」ということ。何を考えるのかも重要だったと思うけど、とにかくあちこち隅々まで考えられていない事で徹底されていた。当時はわからなかったけど、厳しい前提条件を自分の思い込みで設定してしまった上司が典型例だった。何も考えないで「それで良いんじゃない?」と言う。その何かにとって都合の良い思い込みで作り続けてしまう。そんな事はもうたくさんだと思った。その日からとにかく考えて作ることにした。厳しい前提条件は何故生まれてしまったのか?その前提条件を外す方法は何か?そもそも前提条件を外すのは無理なのか?なぜ人々は過ちを犯してしまうのか。(いや、それは考えすぎだった)調べてみるとその前提条件は、当時制御対象になっていた装置の実装制約から来ているものだった。とある信号を生成するのに使っていた設定ファイルが、無数の数式から出てきた値を保存するものになっていた。その値を編集するソフトウェアだったのだが、元の式が一体どういうものだったのかわからないものもあった。仕方がないから100個くらいあった設定値の数式をあらゆるソースコードやユーティリティから漁っていくことにした。中にはよくわからないパラメータも無数にあった。わからなくなってくると周りの先輩に聞いて回った。中には「そんなの勝手にやれ!」とか「なんでそんなの必要なんだよ!」と怒り出す先輩もいたが気にしなかった。「自分はこれを完成させないといけないんです」と逆切れした。兎にも角にも「前提条件を外せば今よりももっとまともに動くはず」という目論みで進めた結果、意味不明な設定値の羅列だったものが、設定ファイルから元の数式にはまるパラメータを逆算できるようになり、これがきっかけで問題だらけだったソフトウェアが動作するようになった。それだけでなく、パラメータの生まれた背景や意図を知る事になり、結果的に今まで出来なかったような便利な設定も出来るようになった。この結果を喜ぶ人は社内に殆どいなかったが、少なくとも御客様とその製品を主に担当していた先輩だけは喜んでくれた。このことがきっかけになって、自分は他の人よりも考えることにしようと心に決めた。自分は頭が良い方ではない。それでも何かをしないといけないと思った。みっともない話をする事についてこういうみっともない話(個人的な情けない話)は、ふつうはしないものだと思う。色んな人が色んな事を言うわけだし、そういう批判や非難は誰しも耳にしたくない。心に留めておいて欲しい。ソフトウェアを書くというのは、ありのままの自分でいないと書けないということ。わかる範囲でしか書けない。残念ながら現代の計算機は、未だもって思った通りには動かない。自分の書いている範囲でしか動かない。最近見た光景だが、その彼は様々な状況や人間にありがちな見栄から、どんな事を言われても「簡単です」と答えていた。実際にそれらがどうなったか。簡単と言われていた内容が、とてつもない人数をかけてやる一大プロジェクトだったり、熟練した人なら特に問題もなく完成させられるはずの内容を、いつまで経っても完成させられない状況に陥っていた。彼は見栄っ張りだった。見栄やプライドは成長を阻害する。わからないものはわからない、難しそうなものは難しそう。それは何の恥でも無知でもない。それは個人の能力の限界かもしれないが、それは別に人格とも関係が無い。知らないものが事があるのは恥ではない。全てを知るのは無理だ。素直に自分に対してそれを認めれば良い。馬鹿にする人も気にしなくて良い。いう人達は単に暇なんだ。今日もソフトウェア開発に直接関係なさそうな事を書いてしまったけど、もしかしたら一番大事なことなのかもしれない。(Atom)自己紹介shinta基板が大好きな組み込み系エンジニア。電気図面を描いてPCB上に美しく配線できた時に何とも言えない快感を覚える。ソフトウェアとドライバが一式になったパッケージをダウンロードします。インストール後に本体を接続してソフトウェアを起動すると以下のような画面が表示されます。勢いよく「改良しました!」と宣言したh8writeですが、やっぱり書き込みに失敗するという事がわかりました。そもそも真の原因を掴めないまま改良したと言っても、何を改良したのか意味がわかりません。放置を防ぐアイデアの1つとして「具体的な目標に繋げる」というものを挙げました。LPCXpressoを使って、USBを研究す...システムにおけるレイテンシーとスループットの話題レイテンシーとは、あるシステムに何らかの入力を与え、それに対応する何らかの出力が出てくるまでの時間(遅延量)を指します。ある処理の実行を指令してから実際の結果が得られるまでに250ミリ秒かかったとすると、それは250ミリ秒のレイテンシーを持つシステムという事になります。アップデートしました。このアップデートにより、以下の動画で示すような長い曲でも難なく再生させる事ができるようになりました。LPC824を使ったサウンドモジュールMicroSoundModuleを開発していました。このサウンドモジュールは、コマンドを受け取って色々な再生を行うもので、当初はこのコマンド処理部分の実装にNT-Shellを用いる計画でした。BlackTankには有機EL液晶が搭載される予定です。接続部分はFPCになっていて、例によってFPC用コネクタなのですが、最初の実装は思いっきり失敗してしまいました。mkIIは便利なのですがオンフィールドで書き換えるには不便ですし、ユーザに書き変えを頼むわけにもいきません。Atmelが公開しているアプリケーションノートAVR109に自己プログラミングがありましたので試してみました。ターゲットMPUはATmega8とATmeg...設計基板にアクリルを付けてお洒落度アップ!「アクリ屋ドットコム」さんにアクリルを発注してみる。おもてなしの心は日本人の得意分野かと思っていましたが、コスト削減要求の嵐の中そんなことは忘れ去られてしまったかのように見える今日。した評価基板の天面にアクリル板なんかが載っていると思わず「おぉー。」なんて思ってしまうのも情けない話です。moduleにブートローダを載せる(AVR109対応)随分前に対応しようと思い立っていたAVR109にようやく対応させた。以前やった時にうまく書けなかったのはボードのクロック精度が原因。ここ数日モニタを実装していて、思った以上にRC内蔵クロックの精度が悪いことが分かった。エコーバックのテストでやたらと文字が化ける。