【若手社員による技業挑戦LOG】
新入社員がラズパイで初めてのIoTシステム構築に挑戦した話

【技業LOG】技術者が紹介するNTTPCのテクノロジー

2024.08.26
松本 龍佑

ソフトウェアエンジニア
松本 龍佑

技業LOG

若手社員による技業挑戦LOG
- 技術トレーニング実施レポート -

本記事は、NTTPCの若手社員育成施策である「トレーナー施策」の参加者が、実施した技術トレーニングの内容を紹介しています。
参加者にはトレーナーがアサインされ、課題設定からシステム構築、発表という一連の流れを経験しました。
この取り組みによって、部署をまたいだつながりの形成やコミュニケーションの活性化、技術力の向上などが促されることを目指しています。

技術トレーニング課題
「Raspberry Pi4を活用したIoTサービス開発」

わたしの在席するテクノロジー&オペレーション開発本部にて、入社3年目までの若手社員を対象に技術トレーニングの課題に参加しました。本記事では、その過程と成果についてまとめます。

今回の施策では、若手社員1名が1名のトレーナー役の先輩社員と組み、IoT機器を使った新サービスを開発するという課題に取り組みました。課題期間は3ヶ月間で、その間に機器選定~システム構築~効果検証まで実施するという、初学者にはかなりハードな内容です。

私のトレーナーは入社14年目の先輩社員でした。リモートワークが中心の業務環境のため、もともと面識のない方だったので、まずは週一回のミーティングを設定し、お互いの自己紹介から始めました。入社して間もない私には、技術スキルのトレーニングと併せて、チーム外の方とお話できる貴重な機会となりました。

今回の課題で使用するIoT機器は、トレーナーと相談してRaspberry Pi4(以下、ラズパイ)を選定しました。ラズパイは触ったことがありませんでしたが、ネットで調べると、わりとなんでもできそうな汎用性と、サードパーティーデバイスが多く拡張に困らなさそうな印象を受けました。
選択した機器は、決裁を取って会社のお金で調達しましたが、これも初めての経験です。私物をECサイトで調達するのとは勝手が異なり、社内稟議や調達ルートの勉強になりました。

新サービスを考える課題に試行錯誤
「ペルソナ分析を活用したアイデア検討」

次に、調達したラズパイを使って何を作りたいか、どんなサービスができそうかを考えました。アイデアを15種類くらい出して、トレーナーの方と相談しました。しかし、アイデアの数を出すことばかりを重視したため絞り込みが甘く、トレーナーの先輩社員から「ペルソナ分析をしてみたら?」というアドバイスをもらってやってみることにしました。

もらったアドバイスを参考に、まずはペルソナを10人ほど書き出し、そのペルソナ毎に問題を解決する10個のサービスを考えてみます。初めに欲しいサービスを考えた時とは逆からのアプローチで、これはこれで新鮮ですし、使うユーザーのことを考えたサービスを検討できているような気がします。その中で、自分が欲しいのはもちろんのこと、ペルソナが抱える問題を解決できそうな案に絞っていきました。

ペルソナの1例(このような資料を10案作成して検討してみました)

図 ペルソナの1例(このような資料を10案作成して検討してみました)

このタイミングで参加者全体での中間発表があり、進捗を共有する機会がありました。中間発表ではトレーニーや担当外のトレーナーの方からアドバイスをもらうことができ、自分の検討状況を客観的に捉え直すことができたと思います。中間発表でもらった意見を基に自身のアイデアをブラッシュアップすることで、他のアイデアとも被らない独自のサービス案を立てることができました。

日々変更が加わる設計と構築作業
「ラズパイで、気候に合わせた服装を提案するIoTシステムの構築」

今回の課題では、ラズパイを利用して外気の状態を測定し、データを元に手持ちの服装の選定を行うサービスを構築することに決めました。初めに、ラズパイのサードパーティー製品のうち、外気を計測できるものがないかを調べました。すると、「BME280」という製品で温度・湿度・気圧を測定することができることがわかりました。

BME280を購入してから気が付きましたが、ラズパイと接続するにはハンダ付けを行う必要がありました(!)まさかIT企業に就職して、仕事でハンダ付けを行うことになるとはかなり想定外でしたが、ハンダごてとハンダを追加で購入し、接着が完成するまで何度も練習することになったのは良い経験になったと思います。

次のスクリーンショットは、BME280を接続してラズパイ側で正常に動作確認が取れた時の結果です。慣れないハンダ付けでしたが、無事に動作していることが確認できた時、ようやく一安心することができました。

BME280動作確認結果

図 BME280動作確認結果

これで気温・湿度は計測することはできたものの、外の状況を把握するには明るさも知る必要があります。さらに追加でCdsセル光センサーを導入しました。
また、ちょうど花粉の時期だったこともあり、トレーナーからアイデアをもらって、空気中の微粒子の量を計測できる「ダストセンサー」も導入することにしました。

しかし想定外なことに、ラズパイのサードパーティー製品のダストセンサーはかなりのレア物だったようです。オンライン通販ショップを何件もチェックしましたが、どこも取り扱いがありませんでした。仕方なく通販での購入はあきらめ、秋葉原まで足を運びました。店舗を数軒回って、ようやく発見することができました。気軽なアイデアを実現することは、簡単なこととは限らないのだな、と思い知った経験です。

製品をそろえた後も続く試行錯誤
「ラズパイのセンサー搭載とデータ処理」

これでようやくすべてのセンサーが揃ったので、ラズパイに搭載していきます。複数のセンサーをラズパイに搭載するには、ブレッドボードを経由する方法が主流なようです。
ネットで調べながら配線してみたのですが、複数のコードが絡み合ったスパゲッティ配線になってしまいました。どことどこがつながっているかわかりづらく、一歩間違えるとショートする可能性もあるので危険です。みなさんも配線を行う際はテスターなどを活用し、わかりやすい接続を心がけましょう。

ネットの情報を頼りに配線した結果

図 ネットの情報を頼りに配線した結果

配線が終わったら、ネットから拾ったサンプルコードをセンサー毎に実行していく検証作業に移ります。各センサーの動作が確認できた後には、サンプルコードのマージ作業を行います。今回3つのセンサーがあるので、3つのソースコードをバラバラに動かさず、1つにマージして動作を確かめることが必要なわけです。

ラズパイのコーディングで用いる言語はPythonにしました。ラズパイ本体にHDMIケーブルをつないで画面出力も可能でしたが、リモートデスクトップ(VNC Viewer)で画面に表示しながら作業したのは我ながらナイスアイデアだったと思います。個々のサンプルコードを関数化してピンが被らないように注意したり、時にはChatGPTを頼りにして、地道な試行錯誤を繰り返してがんばってみたら、それなりの動作をするシステムが完成していました。

しかし、動作したのはいいのですが、出力される値は数値だけなので、良い値なのか悪い値なのか、とてもわかりにくい状態です。この値を人間がわかりやすいように変換して表示する必要があります。ただ、ラズパイ上ではその表示の変換処理がしにくいと感じたため、このデータを一度外に出して表示することを検討してみました。

色々と自分なりに調べた結果、構築がしやすそうだったのは、Googleスプレッドシートにデータを送る方法でした。加えて、この時にはすでに課題の提出期限が迫っていた焦りもあり、手早く構築できる環境・フローを考えることにました。

手早く構築できそうなフロー

図 手早く構築できそうなフロー

今回、スプレッドシートにデータを送る際は、データをURLに乗せて送っています。機器毎に計測のタイミングを合わせ、5分間隔でデータをスプレッドシートに送ることにしました。これにてデータベースも完成です。

スプレッドシートで構築したデータベース

図 スプレッドシートで構築したデータベース

スプレッドシート上のデータは、GoogleのColaboratoryで処理するのが楽で便利でした。こちらもPythonでコーディングでき、スプレッドシートのデータを扱うことができるのが利点です。

  • Google Colaboratory(通称Colab)は、ブラウザー上でPythonコードを記述、実行できるクラウドベースのノートブック環境です。特にデータサイエンスや機械学習の分野で広く利用されています。

次に、簡単な条件分岐を作成し、数値を分かりやすく表現することにしました。例えば、気温20~25℃・湿度40~60%・光量値500以上・空気質10μg/m³以下であれば、「快適」と表示するようなロジックです。
正直、この気温や湿度の諸条件を「快適」と言い切っていいかは怪しいところで、ここは詰めが甘いと認識してはいたものの、期限も迫っていたためまずは形にすることを優先しました。

そして、数値を変換した後は、条件毎に適した服装を割り当てて設定します。手持ちの服をいくつか写真を取り、条件分岐に合うように設定しました。ですが、課題期間が終盤になるにつれ、期限を優先したことから構築しているシステムの質が下がり始めてきたという認識が生まれ、己のこだわりとの葛藤が始まりました。納期を守りながら自分の満足できるものを創るのはとても難しい......。

やっと取りかかることができた検証作業
「季節の変化と検証の工夫、発表の準備」

実は検証を行ったのは、成果報告まで数週間前というギリギリのタイミングでした。季節もいつしか寒暖差の大きい冬から春に移ろっていました。報告用のスライドを作りながら検証作業を続けていたのですが、設計時(冬)とは状況が変動し、徐々に日々の外気温などの変化が少なくなってきました。

短期間の計測であるため気温15℃を下回るような寒い日のデータはなく、測定結果に変化が少ないデータになってしまいました。
けれども、数日間のデータは正しく取れているので、寒い日を想定したサンプルデータを手入力して変化をつけることで、システムの価値をプレゼンできるように工夫しました。

そしてGoogleのColaboratoryは一定時間経過するとタイムアウトしてしまうため、コードを動かし続けることができないことも発覚しました。とはいえ課題の期限が迫っているので、改修することは時間はほぼありません。自分としては不十分な成果という自覚はありつつ、達成できている成果をどう見せるべきか・・・

この窮地を脱するべく、発表前日にトレーナー以外の先輩方にもレビューしてもらい、発表内容についてアドバイスをもらって乗り切ることにしました。

  • 初めに視聴者が興味を持つインパクトが必要
  • メリハリをつけて飽きさせない進行をするべき

これらのアドバイスを元に修正をしていきます。
まず、①のインパクトに関してですが、設定していたペルソナを私の妻だと明かして、私のプライバシーをほんの少し犠牲にすることで、関心を寄せる作戦です。当初からペルソナのモデルではありましたので、本人のいないところで少々申し訳ないですがネタになってもらいました。

次に、②の発表のメリハリ に関しては、スライドの流れを変更しました。変更前は時系列で構築から考察の流れで作っていましたが、どうしても単調に感じられたので、動画で構築したサービスを見せ、その後に作り方の説明をする流れに変更しました。

いざ発表会
「評価とアドバイスから得た改善の気づき」

課題成果の発表会は、オンラインとオフラインのハイブリッドで行われ、発表者は高性能なWebカメラでオンライン配信されながらの発表です。100人以上の社員が視聴していると聞いていたので緊張はしましたが、社外への発表ではなく、社内への発表なので謎の安心感があったのは救いです。

インパクトをねらった渾身のネタも、発表を終えてすぐでは、私自身は若干すべったかなと感じましたが、同期からは周りが笑っていたと後で教えてもらって安堵しました。
レビュアーの方からは、サービス案の検討時にできるかぎりたくさんのペルソナ分析を行った点と、スライドの作り方や、課題に取り組みながら知り得た情報を伝える姿勢が評価されました。地道な試行錯誤も報われたように感じました。

動作開始のトリガーについて質問を受けた際には、検証時にタイムアウトしてしまって上手く行っていない認識もある事を正直に答えました。痛いところをつっこまれたと思ったのですが、レビュアーの方からのアドバイスで「利用者が使用したいタイミングで簡単に作動が出来れば、常に動作していなくても良いのでは」というアドバイスをもらって、さらなる改善点に気付くことができました。

感想
「ラズパイでのIoTサービス開発に挑戦して学んだこと」

新入社員がはじめてラズパイを使ってIoTシステムの構築に挑戦した結果、サービス開発を実体験でき様々な事を学ぶことができました。

今回の課題で構築したサービスに関しては、色々と詰めが甘いという自覚もあり、発表に関しては、インパクト勝負で笑いに持っていって誤魔化そうとしたところもありました。しかしながら、トレーナーや先輩社員、事務局、レビュアーの方々からは最大限にフォローしてもらうことができて恐縮でした。皆さん優しかったです。一方で納期は常に圧をかけてくるので、焦って詰めが甘くなると、自分の理想もこだわりも達成することができないことを知りました。目標は細かく設定すれば焦らず進行できたのではないかと反省しています。

また、初めてサービス開発に取り組んでみて気づくことができたのは、自身の視野が狭くしないようにするには、定期的に第三者の意見がとても重要だということです。計画に遅れが出てからは、トレーナーに迷いや悩みを打ち明ける事で助けられました。感謝しています。

総じて結果としては、挑戦してよかったと思いました。なんでも初めは初心者ですからまずは挑戦ですね。今後も別の施策があるため、今度は笑いだけではなく、成果物そのもので感心されるような発表を行いたいです。

※「Raspberry Pi」はRaspberry Pi Ltdの商標です。

技業LOG

NTTPCのサービスについても、ぜひご覧ください

おすすめ記事

    お気軽にご相談ください