ビリヤード系筋トレプログラマ

プログラミング, 筋トレ, ビリヤード, エンジニア, etc

組み込み系エンジニアスキルセット 詳細追加

背景

以前Qiitaに組み込み系の開発環境まとめを乗せたのですが、その記事の補足をこちらでやります。
qiita.com

開発言語

開発を補助したり、テストを行うツール以外は全てC言語C++で開発を行いました。

  • C言語
    • プロジェクトに応じて必要なレベルは変わりますが、基本的にポインタは完全に理解しておく必要があります。
  • C++
    • C++とありますが、モダンなクラス設計や最新のメソッドを使用することはなく、ほぼCに近い設計でした。
  • Lua(Linux内でプロセスを立ち上げるときに各種設定を行うスクリプトとして)
  • Python(テストツール)
  • C#(GUIで動くテストツール)
    • 組み込み機器をテストするにあたって、パケットを作成して通信するツールや、WireSharkでは判別できない特殊なパケットを見える化する際に作成していました。

OS

ネットワークスイッチ関連ではLinux、組み込み機器開発ではiTRONが多かったイメージです。

統合開発環境

使用するマシンのCPUに合わせてチョイスしている感じです。
ネットワーク機器開発では開発用のサーバを用意して、その中でViでコードを書いてコンパイルすることが多いです。

テスト環境

Web系企業との差が大きい部分ですが、物理的なテストが必要になることが多く、自動化やコード化はできていないことがほとんどでした。

  • GDB
    • Linuxの環境にC言語のデバッガとしてGDBを入れて、関数単位のテストを行っていました。めちゃめちゃめんどくさいです。もうやりたくない。
  • CUnit
    • 関数単位でテストを行うためのテストコードをかけます。3年間で1回しか使わなかった。ただ、スタブの概念などを学ぶことができたので、個人的には良かったです。常駐先のお客様の技術レベルしだいで使うことができると思います。
  • gcov
    • C 言語で書かれたプログラムのカバレッジを測定するツールです。gcc に付属しています。Linux上で簡単に動作する上に学習コストもそんなに必要ないですので、そこそこ使ってました。

某N系企業も使えるお客様と、使えないお客様がいてびっくりしました。

プロトコル

ネットワーク機器開発では知識として必要とされるプロトコルは多いです。

  • TCP/IP
  • UDP
  • LAG
  • VLAN
  • EoE
  • リングプロトコル
    • 上記6つのプロトコルはネットワーク機器開発に必要不可欠な知識で、特にLAG,VLANは機能そもそもを実装する必要があるため、詳細な動きや決まりを知っておく必要がある。
  • TIPC
  • CORBA
  • RPC(別枠)
    • リモートプロシージャコールの略。MessagePackを使用した過去プロジェクトで使用した。動作が特殊で非同期通信を実装する時にそこそこ勉強が必要

まとめ

Qiitaに投稿した記事の中で説明があったほうがいいかなと思った内容に関して補足しました。
世の中の誰かのためになればいいです。