システムエンジニアのお仕事の中にはお客様先常駐にて開発、保守なんてこともままありまして。社内で開発したり、お客様先に出て行って何かしたりと飽きない環境で商いさせていただいております。お客様も色々いらっしゃいまして、所変われば品変わると言うようにごく普通の言葉でも指しているものが変わることがあります。私はそれを“企業方言”なんて呼んでおります。これがなかなかの曲者でして、普段その言葉を使ってる人たちには当たり前の言葉ですからなんの注釈もなく飛び交ってるわけでございます(精査=入力チェックや相関性チェックを行う際のValidatorの意味で使われていた時は理解するまで苦労しました)。私はもともとWEB系エンジニアとして働いていましたが、ある時組み込み系のお仕事を経験することになりました(この際もやはり違う言葉やお作法に直面することになりました)。詳しくお話しできませんが、ハードウェア上で動くアプリ開発をすることになった私は、まず言葉の壁に悩まされることになります。SPIやGPIO、UARTなどなど当時は聞き慣れない言葉に困惑します。アレもコレもなにがなんだかわからなくなってくると、知っている言葉もなんか違う意味があるのではないかとか疑心暗鬼になってしまうもので(例えばIDEとか)何に対しても、コレはなんだろうと一拍置いてしまうようになってしまいました。何はともあれ組み込み系の経験がないので新人同様と考えることにして、周りの方々にご教授いただくことにしました。芳和システムデザインでの所属は開発部ですが、設計部の部長(組み込みにめっぽう強い)にも色々と教えてもらいました。設計部の部長は所属の垣根を超えて適材適所で勉強会等を開いているので、そういう場も新しいことを学ぶのに大いに助かっています。今回仕事を進める上で主に引っかかったのは概要が分かれば利用できるものだったので、完璧な理解を必要としていませんでした。完璧な理解はできなくても、期待値を出せるというのは今後も活きる経験ではないでしょうか(楽観主義)。最初はLチカ(LED光らせるだけ)の簡単な物を作るだとか学習本よろしく一歩一歩ステップアップしていきました。第二の難関はデバイスドライバの作成の段階で直面しました。やることは学習内容の応用でしかないのですが、お作法が分からなかったのでここでも苦戦を強いられます。コマンドをSPIで送信して、割り込み待ちをして、SPI受信を行うというのが通常パターンでしたが、データシートにSPIの線の選択肢だとかのパターンがあり、これらの読み方がわからなかったのです。読み方はデバイスの使い方を確認しながら試行錯誤しているうちに気がつくことができたので徐々に組み込みに慣れてきたのでしょう。手元のAPIとハードウェアでは思うように動作しませんでした。習熟度が足りていないので使い方が良くないのだろうと思っていましたが、そうではなくハードウェアの都合で割り込み線が結線できず、デバイスとの同期が取れなかったために、不安定な動きをしていました(開発用のデバイスを受領した時に説明されたかも知れませんが、当時は理解ができていませんでした)。結局実装したものは正常なデバイスの使い方ではなかったため、ドライバを作ったと言えないかも知れませんが、一応デバイスドライバを作ったという実績を得ることができました。これら以外にも、組み込みのお作法や暗黙の了解がありますが、それは別の機会に。【四方山話】お客様も割と、「これを試してみて、動くかわからないけど。」といったノリで物が出てくるので、動かないことがあるという前提で作業ができるので、盲信的に動かない=コーディングの問題。いう思考に囚われずにすみ、本当に環境に恵まれたと思います。