メインコンテンツまでスキップ

PythonでExcelファイルを操作してみた(作業時間の集計)

松井
ディアシステム(株)開発一部第3課

こんにちは 1 部 3 課の松井です。
前回の集約プログラムの続きで今回は集計プログラムになります。
前回と今回のソースコードを「プログラム名.py」の1つのファイルにし、Powershell かコマンドプロンプトで実行することで
集約・集計が一度に出来るようになります。

◆ 集計プログラム 以下が作業者集約.xlsx のシートから各作業者の合計時間を出力するソースコードになります。

画像1

簡単に解説します

  • 118 ~ 122、124 行目の for 文で作業者集約.xlsx の全シートを繰り返し処理します。
  • 125 ~ 131 行目はシート内の 2 ~ 32 行目の 6 列目の値の加算を for 文で繰り返し処理します。

画像2

画像3

  • 133 ~ 152 行目が計算した合計作業時間を合計時間シートを作成して追記します。
  • 154 行目で合計時間の計算が出来たので作業者集約.xlsx を保存して終了になります。

◆ 合計時間シートを追加した作業者集約.xlsx

画像4

以上が私が作成した Python プログラムになります。
まだ不慣れで無駄なコードもあるかと思いますがプログラミングの参考になればと思います。

WordPressの環境移行手順について

坂口
ディアシステム(株)開発二部第2課

最初にWordPressを触ってみた感想

私はこれまでデザイン業務に関わることがなかった為、「難しそう」「自分にできるかな」と不安を感じていました。
実際に業務に入る前に、テスト環境でWordPressに触ってみたのですが、なにがどうなっているのかがさっぱり分からない状態でした。
最初に取り組んだ作業は、上司が作成してくださっていた「採用フォーム」の見本を参考に同じものを作ってみるという作業でした。
テスト環境で触ったものと全く違っていた為、「これで合っているのか」という不安もありましたが見事に出来ました。
そして、1つ作り終えたときは「楽しい!」という気持ちになりました。
そこから、会社紹介ページや人材紹介ページなども作成していき、実践を通して少しずつ理解が深まっていきました。
また業務を通じて便利な移行手順について学んだので、記述していきます。

テスト環境からSTG環境へ移行する方法 All-in-One WP

Migrationの使い方

最初は、デフォルトの「エクスポート・インポート」を機能使いテスト環境からSTG環境へWordPressを移行しようとしたところ、画像が表示されなかったり、ページが抜けていたりなど上手く移行出来ないトラブルがありました。
そこで、使用したのが「All-in-One WP Migration and Backup」というプラグインです。
導入手順としては、プラグイン>新規追加>「All-in-One WP Migration and Backup」をインストール>移行元のエクスポートでバックアップを取得>移行先のインポートで、バックアップファイルアップロードする、という手順です。

画像1

画像2

画像3

エクスポートする際に、「高度なオプション」で下記の部分にチェックを入れました。
「スパムコメントの除外」にチェックする理由は、移行ファイルを軽くし不要なデータを排除する為です
「メールアドレスのドメインを置き換えしない」をチェックする理由は、STG環境のメールアドレスをそのまま維持するためです。

画像4

このプラグインを使用することで上手く移行させることが出来ました。そして何より短時間で簡単に移行出来たので良かったです。

今後意識して取り組んだいくために

今回、初めてデザインに関わるという貴重な経験をさせていただきました。
実際にやってみると、自分が修正した部分がすぐに反映されて、画面が変わっていく様子を見ることができ、とてもワクワクしました。
普段は完成されたデザインを見ているので、自分の手で少しずつ形を変えていけることの楽しさや、考えたことが目に見えて反映される面白さを実感しました。
まだまだ分からないことも多いですが、今回の経験を通して「もっとやってみたい」「次もぜひ関わりたい」と思えるようになりました。
今後もこうした機会があれば、積極的にチャレンジしていきたいです。

社内勉強会『プログラミング基礎力向上』にて登壇しました

にしはた
ディアシステム(株)開発二部第2課

開発二部第2課 にしはたです。
2025年7月23日に『プログラミング基礎力向上』というテーマで社内勉強会を行い、そこで登壇させていただきました。

登壇するまでは正直気が進みませんでしたがやってみると意外に楽しかったのでそのときの気持ちや勉強会の内容をまとめようと思います。

当日の様子は下記の弊社のブログに記載しています。
https://dsic.jp/blog/2025/08/seminar250801.html

勉強会の概要

今回の勉強会は、社内会議室での対面形式と、Teamsを使ったオンライン配信のハイブリッドで実施しました。 発表テーマは「オブジェクト指向入門編」と「リーダブルコード」の2つ。 登壇者は私を含めて2人でそれぞれ約30分ずつ発表を行い、全体で1時間程度の内容でした。 現地参加は大会議室が埋まるほどの人数となり、オンライン参加者も含めて多くのメンバーが集まり、活発な雰囲気の中で進行できました。 また、お弁当も用意され、参加者は食事を楽しみながら講義を聞くことができる形式でした。

各テーマの紹介

  • リーダブルコード

私の発表ではより良いコードについて、コードの可読性がなぜ重要なのか、そして日々の開発でどのように意識すべきかを具体例を交えて紹介しました。

image1 image2 image3

  • オブジェクト指向入門編

オブジェクト指向の基本的な概念や考え方を整理し、なぜそのアプローチがソフトウェア開発で重要なのかを解説しました。

image4 image5 image6

登壇者としての感想

プレゼン資料の作成は、取り掛かるまでが一番のハードルでしたが、30分程度の持ち時間で約30ページにまとめられたことで大きな負担は感じませんでした。 発表中はやや緊張しましたが、クイズ形式を取り入れたことで参加者が積極的に考えてくれている様子が伝わり、とてもやりやすかったです。 発表後には「今まで意識していなかった視点に気付けた」という感想や、紹介した書籍を購入したという声もあり、誰かの学びにつながったことが嬉しかったです。

おわりに

会議室が満席になるほど多くの方にご参加いただき、とてもやりがいを感じました。参加してくださった皆さん、ありがとうございました。 改めて感じたのは、社内での知識共有の価値です。自分では当たり前と思っていることでも、異なる立場の人にとっては新しい発見になることがあります。今後もこうした取り組みを継続し、お互いの視野を広げていければと思います。

PythonでExcelファイルを操作してみた(勤怠シートの集約)

松井
ディアシステム(株)開発一部第3課

今回のプログラムは以前、チーム内の勤怠管理業務の自動化をしたいと思ったときに Python で Excel 操作する参考資料を見て作成したプログラムです。
私自身、Python については「Python3 エンジニア認定基本試験」に合格の為、勉強を数ヵ月した程度しか経験はありませんでしたがネット上の参考資料や書籍などを見て作成することが出来ました。
初めての Python プログラムなので単純な作りで初心者の方には分かり易いかと思います。
反面、経験豊富な方から見ればこうした方が良いなどあるかもしれません。

◆ プログラム仕様について プログラムの仕様は
コマンドライン引数としてフォルダ(YYYYMM)を指定し、フォルダ内の各自の作業時間の Excel ファイルを1つの Excel ファイルに集約・集計するというものを作りました。
コマンドプロンプトや PowerShell で\

>python プログラム名.py フォルダ名

と指定したフォルダ内のファイルを集約するものです。

画像1

画像2

各作業者のファイルは以下のような構成とします。

画像3

開発環境について

まずは開発に使用する PC に Python のインストールが必要ですが、その辺りはネット上で検索すれば簡単に出来ますので調べてみてください。 PC に Python がインストールされているかはコマンドプロンプトや PowerShell で

 > python -V

と入力します。 「Python 3.X.X」と表示されたらインストールされています。

プログラムを書くためのエディタは何を使っても良いと思います。 私は IDE(統合開発環境)の JupyterLab を使用しました。(他に Visual Studio Code や PyCharm などもあります) JupyterLab は Web ブラウザで動作する対話型実行環境です。(デスクトップ版もあります) 特徴としてはセル単位でコードを記述し、実行して結果が確かめられる点です。 インストール方法や詳細は検索してみてください。

ライブラリのインストール

Excel ファイルを操作するために必要なライブラリをインストールします。 openpyxl とライブラリを使用します。 openpyxl は Excel ファイルを操作するライブラリです。 コマンドプロンプトや PowerShell から

> pip install openpyxl

と入力するとインストールが開始します。

インストールが完了したら

> pip list

と入力し、インストールしたライブラリの一覧を表示します。 一覧に「opempyxl X.X.X」が表示されていればインストールは完了です。

集約プログラム

以下が各作業者の Excel ファイルを1つの作業者集約.xlsx に纏めるソースコードになります。

画像4

簡単に解説します ・7 ~ 15 行目は作成する集約ファイルを作成します。ファイル名は作業者集約.xlsx とします。 ・17 ~ 20 行目はコマンドラインからの引数を入力フォルダのパスとして取得します。

>python プログラム名.py フォルダ名

画像5

・25 ~ 26 行目の for 文でフォルダ内の全ファイルの繰り返し処理になります。 ・33 ~ 41 行目の処理で作業時間報告の Excel シートから 1 行分のセルの値を datum というリストに追加してデータを取得します。

「for row in ws['A6:F36']:」はシートの A6 ~ F36 まで 1 行づつ繰り返しになります。 ここで出てくる「ws['A6:F36']」はタプルというものです。 「type(ws['A6:F36'])」を実行すると「tuple」と出力されます。 タプルはリストに似た構造で1つのデータの中に複数の値を順番に並べていれることが出来るデータ型です。 データの取り出し方もリストと同じで[]にインデックス番号を指定します。 ただし、リストと違い値の追加、削除、変更は出来ません。「ws['A6:F36'].value」を実行するとエラーになります。

画像6

画像7

・43 ~ 81 行目は作業者集約.xlsx に作業者のシートを追加します。 ・84 ~ 112 行目で作業者集約.xlsx の作業者のシートに取得した行のデータを追加します。   91 行目の for 文は 1 ~ 31 の値を row_num に代入し、繰り返し処理します。   range(1,32)は 1 ~ 31 までの値になります。

画像8

・114 行目で一旦、全作業者の作業時間シートを追加出来たので作業者集約.xlsx を保存します。

◆ 作業者集約.xlsx ファイル

画像9

少し長くなったので今回は集約するまでとします。 次回は集計の処理になります。

システム開発向けツールNEXT DESIGNの紹介

中岡
ディアシステム(株)開発一部第4課

こんにちは開発一部第4課の中岡です。
現在、従事している開発にて使用している設計ツール「NEXT DESIGN」を紹介します。

1. はじめに

私は今まで設計する際に使用していたツールは MS Word や MS Excel でした。
オブジェクト指向による開発が進んでくると、UML の各種の図を記述することが増えました。
その際、MS Word や MS Excel 内の図形の機能を使用すれば表現できるのですが、手間がかかり且つ事前にテンプレートや記述例などを用意しないとプロジェクトメンバーで統一的な記述ができない事になります。
又、UML 関連の図を作成する専用のツールは存在しますが、UML 関連の図だけで設計書を記述できない為、MS Word や MS Excel で主に設計書の記載を行い、UML 専用ツールで作成した図を貼り付けるような使用方法でした。
NEXT DESIGN は上記の不便だった点を解決するツールでした。

2. この記事を読んで欲しい人

① UML モデリングによる設計を行っている方
② MS Word や MS Excel での設計書作成にこだわりはなく有用なツールがあれば使用してみたい方

3. サービスの特徴

NEXT DESIGN は多くの特徴的な機能を有していますが、本 TECH Blog では紹介しきれませんので、特に私が設計書を記載する際に不便に思っていたことが、このツール一つで解決できる点について記載します。

3.1. 基本的な使い方

 複数の種類の図を同一のツールで記載できるため、図の中に記載したオブジェクトに対する説明などを詳細として記載することができる。

① モデルナビゲータ:
工程やソフト機能改装別に階層的に設定することで、従来の設計書の文書構造を表現している。

② メインエディタ:
 モデルを複数の表現形式で作成可能、片方のビューを編集した内容は別ビューにも反映される。

③ ビュー切り替えタグ:
 タグをクリックすることで同一モデルの別ビューへ切り替えが行える

・ビュー:ユースケース図

画像1

・ビュー:詳細
 上記のユースケースの詳細を記載できる。

画像2

3.2. ビューについて

図の配置も大きさも自由に調節でき、オブジェクト同士の揃えも簡単に行えることから、作図の専用ツールと使い勝手は同じで直感的に操作可能でした。

使用可能な代表的なビューは以下の通りです。
① フォーム
② クラス図
③ コンポーネント図
④ 配置図
⑤ パッケージ図
⑥ アクティビティ図
⑦ ユースケース図
⑧ ステートマシン図/状態遷移表
⑨ シーケンス図

以下よりビューの作成後のイメージを添付します。

  • フォーム

    ・従来の設計文書のように文章や表を記述できます。
    ・図や表の差し込みができます

画像3

  • クラス図

画像4

  • コンポーネント図

画像5

  • 配置図

画像6

  • パッケージ図

画像7

  • アクティビティ図

画像8

  • ユースケース図

画像9

  • ステートマシン図/状態遷移表

画像10

  • シーケンス図

画像11

4. まとめ

機能が多く、派遣先で使い始めて1カ月ぐらいであることから、とても簡単な紹介しかできませんでした。
今後の使い続けることでより理解が深まり、気付いた点や便利な点をまた紹介したいです。

5. おわり

本ツールの導入方法
Next Design 無料評価版(全機能が 90 日無料で使用可能)が用意されているので、導入先の開発環境の問題解決に有用であるかの事前調査が可能となっています。

2025/7/31 時点では、取得は以下の Next Design のHPにリンクがあります。
https://www.nextdesign.app/

車載開発について

田之上
ディアシステム(株)開発一部第3課

こんにちは1部3課の田之上です。

本日は、ぼくがこの業界で仕事をするようになり、これ面白いな‼と感じた
自動車で使用されている電子制御ユニット = ECU( Electronic Control Unit )というものについて少し紹介します。

皆さんは普段利用されている自動車がハンドルを操作したら自動車が曲がる、アクセルを踏むと加速するなど動きの仕組みをご存知でしょうか?

人からどのような開発をしているの??と聞かれ
自動車の開発をしているよ。というと「あー、車を作っているのね?」と
だいたいの人がどのようなものを作っているか自体は、だいたい想像通りです。

しかし、実際に自分たちが生まれる前からある車を数十年も経過している現在でも
開発していると考えると「なにか新しい機能が次々にあるっけ??」
という疑問が出てくると思います。

新しい機能の話だと最近では自動運転が等の情報が流れていますが、

そうなんです!!

よく考えると基本的な「動く」、「止まる」、「曲がる」という点においてはデザイン変更など除いたイメージ的には、車として大きな見える変化をしていないんですよね。

では、業務としてどのような点を自動車業界の人は、開発しているのかというと
ざっくりいうと昔からある自動車は、すべてが物理的に機械制御していた部分が現代においては電子制御に置き換わってきています。

より簡易に利便性良く快適に変化しているとイメージしていただければと思います。

例えばサイドレバーだと、昔はワイヤーで物理的にワイヤーを巻き取りブレーキがかかっていたが、現在では、電子制御となりボタンを押すだけで電気モータでブレーキがかかるようになっています。

メリットはユーザ力が大きな力が必要なく
簡易にサイドブレーキがかけれるという点です。

このような物理的な仕組みから電気信号で制御するためにECUというものが必要となります。  

ECUは様々な情報を受け取り状況に応じた判断し、結果を次の動作につながるように電気信号を送信します。
図1と「■操作感」を用いてイメージを示してみます。

画像1

画像2

いかがでしたでしょうか。

簡単な図と操作感でしたが、普段周りにある物理的なものがどのように進化しているのか少しはイメージ出来たのではないでしょうか??

イメージできたら身近にある物理的なものの仕組みをなぜ??と考えてみると新たな発見があるかもしれません。

ものの仕組みについて少しでも興味を持ってくれたら幸いです。

GOOGLE FIREBASE って何ができるの?

熊谷
ディアシステム(株)開発一部第2課

🛜アプリ開発を加速する次世代クラウドサービス

▶️はじめに

業務でSQLを使用してデータ操作をしているうちに、『NoSQL』とはどういったものか?

どうやってデータを操作するのかとうい好奇心が湧きました。

そこで手軽に『NoSQL』を試せる環境がないかと調べていると、

今回の題目である【Firebase】にたどり着きました。

調べてみると、Googleが提供する「Firebase(ファイアベース)」は、近年のアプリ開発では、

スピードと柔軟性が求められる中、モバイル・Web開発において注目を集める存在のようです。

本記事では、予備知識ゼロの筆者がFirebaseの基本的な機能やメリットに加え、

他のクラウドサービス(AWSやAzure)との違いも含め、自分なりに理解した内容を解説します。

また、弊社箕浦のTechブログでは実際にFirebaseを設定している記事が掲載されていますので、

ご興味のある方は是非ご参照ください。

https://techblog.dearsystem.jp/blog/2024-04-05-01

|

▶️Firebaseの概要

Firebaseは、Googleが提供するクラウドベースのアプリ開発プラットフォームです。

サーバーの構築や運用を意識せずに、リアルタイム通信・ユーザー認証・データ保存・通知配信などの

機能をアプリに簡単に組み込める、**BaaS(Backend as a Service)**の代表格です。

開発者はFirebaseを使うことで、サーバーレス環境でバックエンドの構築・運用が可能 となり、

フロントエンドやUI開発に集中しやすくなります。

リアルタイムデータベース、認証、クラウドストレージ、分析、通知など、

アプリに必要な多くの機能をワンストップで提供しています。

元々は2011年に独立した企業としてスタートし、2014年にGoogleに買収されて以降、急速に進化を遂げています。

|

▶️Firebaseで実現できること/得意なこと

1. リアルタイムデータの同期

Firebase Realtime Database や Cloud Firestore により、複数端末間でデータをリアルタイムに同期。

チャットアプリや出欠管理、ライブ更新系のアプリに最適。

2. 認証機能の実装

Googleアカウント、メール認証、電話番号など複数の方式を数行のコードで導入可能(Firebase Authentication)。

3. 通知の配信

Firebase Cloud Messaging(FCM)で、モバイルやブラウザへのプッシュ通知を簡単に実装。

4. クラウドストレージ

Firebase Storage で、画像やドキュメントなどのファイルをクラウドに安全に保存・共有可能。

5. ユーザー行動の分析

Firebase Analytics により、ユーザーの操作や行動履歴を可視化し、改善施策に活用。

|

▶️Firebaseのメリットとデメリット

メリット

サーバーレスで開発が可能(インフラ管理不要)

リアルタイム通信が得意(双方向の即時同期)

セットアップが簡単(初心者でも扱いやすい)

Googleインフラによる高いスケーラビリティ

Webとモバイル両対応

デメリット

無料プランには利用制限がある(同時接続数や転送量)

複雑なSQL操作には不向き(NoSQL型)

依存度が高いクラウド設計(オフライン対応が限定的)

データ構造設計次第でコストが予想外に膨らむ可能性

|

▶️Firebaseの課金情報( 2025年時点)

Firebaseには無料と有料の主に以下の2プランがあります。

小規模なアプリでかつ、扱うデータ量も少ないならば、無料でも十分使用できます。

プラン名内容料金
Spark(無料)小規模開発向け。基本機能に制限あり。0円
Blaze(従量課金)商用向け。使用量に応じて課金。実利用ベース

Blazeプランの参考料金(USD)

Realtime DB 保存:$5/GB、ダウンロード:$1/GB

Firestore 書込:$0.18/10万件、読込:$0.06/10万件

Storage 保存:$0.026/GB/月、転送:$0.12/GB

※地域・為替によって変動あります。最新の公式サイトで確認を。

|

▶️Firebaseと AWS / Azureの違いは?

同様の要件で検討対象となるAWSやAzureとは、いったいどういった違いがあるのでしょうか

Firebase、AWS、Azureはそれぞれクラウドベースのサービスですが、目的や設計思想が大きく異なります。

以下にFirebaseとの差異をまとめてみました。

比較ポイントFirebaseAWS / Azure(主にRDS, Cosmos DB, etc)
開発対象モバイル/Webアプリ向け大規模システムやエンタープライズアプリ全般
提供スタイルサーバーレス・マネージド型BaaS(Backend as a Service)IaaS/PaaS(仮想マシンやデータベースの構築・管理が必要)
セットアップの手軽さ極めて簡単(即開発可能)柔軟だが初期構築や設計に時間がかかる
データベース構造NoSQL(Firestore, Realtime DB)中心RDB(MySQL, PostgreSQL等)やNoSQL(DynamoDB, Cosmos DBなど)も選択可
リアルタイム通信標準でリアルタイム同期対応別途実装が必要(WebSocket等)
スケーラビリティ自動(サーバーレスのため)手動設定または自動スケールの設計が必要
運用の自由度限定的(内部構造はブラックボックス)高い(OSレベルのカスタマイズも可能)
利用コストの考え方少量利用なら無料で非常に安価初期から料金が発生する場合もあるが、スケールに応じて設計可能
管理対象Firebaseコンソールで簡単管理AWS/AzureポータルやCLI/SDKで詳細管理
セキュリティ設定Firestoreルールなど簡易制御IAM、VPC、Firewallなど高精度なセキュリティ設定

|

▶️Firebaseが向いているケース

⇒ アジャイル開発・プロトタイプ作成

⇒ リアルタイム性が必要な教育アプリや出欠管理

⇒ サーバー構築の専門知識がない小〜中規模プロジェクト

⇒ AWS/Azureが向いているケース

⇒ 複雑な業務システムや高トラフィックアプリ

⇒ リレーショナルデータベースを多用する場合

⇒ セキュリティやカスタマイズの自由度が求められる場合

|

▶️まとめ

Firebaseは、スピーディーにアプリ開発を進めたいチームや個人開発者にとって

非常に強力な選択肢となりそうです。

特にリアルタイム性やモバイル/Webの統合開発が必要な場面では、

他のクラウドサービスと比較しても抜群の効率性を発揮すると考えられます。

一方、AWSやAzureはより柔軟で強力なインフラ制御が可能なため、

エンタープライズ向けや大規模サービスに適していると考えられます。

★ Firebaseは**「すぐ作れる」「すぐ動く」**を最重視するプロジェクト向き。

★ AWS/Azureは**「自由に作れる」「複雑なシステムに対応できる」**のが強み。

|

▶️あとがき

当初の疑問であったはずの『NoSQL』はどこいった???

という内容のブログになりましたが、実はFirebaseを使用して、簡単な『出欠確認アプリ』を

試作しているところです。

運よく完成となった暁には、今回触れることができなかったFirebaseの実際の設定方法や

『NoSQL』の使用感もあわせて記事にできればと考えております。

(断念したらすみません。。。)

ただ、この『Firebase』には可能性を感じており、「自前のデータベースやシステムを持ちたいけれど、

AWSやAzureみたいな大がかりの物はちょっと・・・」とDX化に二の足を踏む

中小事業者向けのサービスとして、手軽に扱えかつ、開発工数も抑えられる本環境は

最適かとも思いました。

合同研修の振り返り

濱上
ディアシステム(株)開発二部第2課

7 月より開発2部2課に配属されました、濱上です。よろしくお願いいたします。

【合同研修の概要】

4 月 8 日から 6 月 28 日までの 3 か月間、合同研修に参加いたしました。
研修では、最初に社会人マナーを学びました。その後、各プログラミング言語の講義を受け、個人開発演習、最後の 1 か月でチーム開発演習を行いました。

【社会人スキル】

社会人としてのマナー、敬語の使い方、名刺交換や電話対応について学びました。
また、毎日日報を記述し週の半分はグループ内で 1 分間スピーチを行い、講師の方へその日の目標の達成度を伝える口頭報告も行いました。
この中で私が最も役に立ったと感じる点は、計 5 回行った口頭報告です。要点を抑え分かりやすく伝えることが苦手なため、最初はとても緊張していました。ですが、何を伝えるか、大事な点を中心にメモすることで自信をもって報告でき、講師の方から簡潔で分かりやすいと褒めていただきました。

【IT スキル】

主に以下のプログラミング言語について学びました。

  • HTML/CSS
  • Oracle
  • Java
  • Spring

講義を受け、練習問題を解き、毎日確認試験を実施しました。各言語を学び終えると、総合試験と演習試験を行いました。
プログラミング未経験で合同研修に参加したため、講義だけで理解を深めることは困難でした。そのため、自宅での予習復習や、研修内で空いた時間を活用し練習問題を解きました。その結果、講義での理解度が上がり、練習問題をスラスラと解けるようになりました。

【チーム開発演習】

合同研修の最後の 1 か月で、6 人 1 チームとなりチーム開発を行いました。
ネットショッピングサイトを作成する課題があり、私のチームは、野菜や果物などの食べ物を販売するショッピングサイトをテーマにしました。
1 番大変だった点は、仕様書の作成です。実装も難しく大変でしたが、仕様書を作成した経験がなく、仕様書の読み込みや図の作成など慣れないことが多かったです。ですが、チーム内で役割分担をして協力し合うことでスムーズに進められました。
私はレイアウトの編集も担当しましたが、成果報告会ではテーマに沿ったレイアウトになっていると褒めていただき、とても達成感がありました。

【合同研修を通して】

合同研修で最も成長したと感じる点は、コミュニケーション力です。
最初は積極的に話しかけることができず、コミュニケーションをとるまでに時間がかかってしまい、質問もなかなかできていませんでした。ですが、チーム開発を通して早めに情報を共有することはチーム全体に良い影響を与えることを意識できました。自分から進んでコミュニケーションをとるようにし、必要事項だけでなく雑談などの会話もとり、良い雰囲気で開発を進められました。
IT スキル面では、まだまだ足りない部分が多いですが、合同研修で学んだことを忘れず今後の実務で活用し、また今後も学ぶ意欲を忘れずに頑張ります。

合同研修の振り返り

大野
ディアシステム(株)開発二部第1課

7 月より開発2部1課に配属されました、大野です。よろしくお願いいたします。

3 か月間の外部研修が終了いたしましたので、その具体的な内容と自身の成長や学びについてお話していきます。

外部研修の概要

研修は 4 月から6月までの3か月間ございました。
初めの一週間は社会人スキルやセキュリティに関して学び、その後は HTML/CSS や Oracle、Java、Spring などの講義を経て、個人開発演習やチーム開発演習に臨みました。

社会人スキルに関する講義

話題の『7つの習慣』(スティーブン・R・コヴィー著)に関することや、名刺交換、敬語の使い方、電話対応など、社会人として必要な技能に関して学びました。以下にそれらの具体的な内容を掲載します。\

  • 『7つの習慣』:物事を重要度と緊急度の2軸もマトリクスでとらえ、緊急でないが重要度が高い(自学自習や運動など)ことをする時間を増やすことが大切などということを学びました。

  • 名刺交換:他の受講生の方々と名刺交換のシミュレーションを何度も繰り返し、名刺交換の仕方を体に染み込ませました。

  • 敬語の使い方:丁寧語、尊敬語、謙譲語などの基本的な言葉遣いを覚えました。

  • 電話対応:様々なシチュエーションで、電話の「受け手」と「かけ手」に別れ電話の応対の練習をしました。

社会人になりたてで、上司の方やお客様とどの様に接すればよいのか分からない状態で、不安を抱えておりました。
しかし、社会人としての立ち振る舞いを学ぶことで、そのような不安が解消されました。
また、学生から社会人になったという自覚ができるようにもなりました。

IT 技術に関する講義

先ほども挙げさせていただいたように、この講義では HTML/CSS や Oracle、Java、Spring などを主に、開発現場で使用される言語や技術の使い方について関して、基礎的な内容を学習しました。
 私自身、(入社前研修で Linax や SQL に関して、Python に触れていましたが)プログラミング経験がほとんどなく、講義が進むスピードも早いので、講義についていくのに必死でした。そのため、わからない部分が講義が終わるたびに出現し、そのたびにサポーターの方に何度も質問をしました。わからないことだらけで何度も挫けそうになりましたが、サポーターの方のサポートのおかげで大きく成長することができ、他の受講生の方々にコードの書き方を教えられるまでに成長することができました。
 この講義では、ただ単にコードの書き方などを学ぶだけでなく、分からないことを放置せず質問することの大切さも学ぶことができました。

個人開発演習

これまで学んできた IT 技術(主に Spring)を用いて「社員管理システム」の改修を行いました。
 具体的な内容としては、まず要件定義書やフォルダとファイルの構成を確認し、それを基に機能を追加していくというものです。
 この演習で学んだことは、計画を立てながら作業を進めることの大切さです。個人開発演習は5日間しか期間がなく、のんびりと開発していると納期に間に合わなくなってしまいます。そのためいつまでにどこまで作業を完了させるのかを予め具体的に決めておき、作業を進めました。その結果、納期よりも 2 日間程早く作業を完了させることができ、追加機能を実装できる程の余裕ができました。今後も、実際に現場で作業する際も綿密に計画を立てて作業していきます。

チーム開発演習

最後の 1 か月間はランダムに5人のチームを組み、「ショッピングサイト」の改修をする開発演習に取り組みました。
 具体的な内容としましては、まず初めに役割分担(リーダーや課題管理者、品質管理者など)をし、要件定義書などを読みこみ、追加するオリジナル機能や画面の構成などを決めました。その後は、チームで決めた内容に基づき、要件定義書や設計書などに項目を追加し、開発に取り掛かりました。開発が完了すると、テスト仕様書の作成やデバックに取り組みました。
 この演習で学んだことは、コミュニケーションをこまめにとることの大切さです。この演習では、Git を用いて開発を行っていたのですが、誰がどの作業を行っていたのか把握していなかったことで、チームメンバーのコードをマージする際に競合が発生することがありました。しかし、コーディングをする前にどのファイルを編集するのかを事前にメンバーに共有することで、競合が発生することがなくなりました。また、誰がどこまで作業が進んでいるか、課題は何かなどを共有することで、円滑に開発を行うこともできました。

終わりに

3 か月間で多くのことを学び、エンジニアとして、そして社会人として大きく成長することができました。\また、ここまで成長することができたのは、講生 50 名という大所帯の中、受講生一人ひとりに真摯に向き合いサポートしていただいたサポーターの方々、そして気さくに接してくれた受講生の方々のおかげだと感じています。今後も、この研修で学んだことを忘れず、仲間を大切にし、プロとして活躍できるよう励んでまいります。
 ここまで読んでいいただき、ありがとうございました。これから研修を受ける予定の新入社員の方などの参考になれば幸いです。

RaspberryPiのGPIOを利用した電子工作学習

近藤
ディアシステム(株)開発一部第5課

数年前に購入して、そのまま放置してしまっていた、RaspberryPi B3 と、電子工作キットを使ってプログラミング学習をしていきたいと思います。 今回は、外部装置とデジタル信号のやり取りを行う GPIO について解説します。

GPIO について

GPIO(General Purpose Input/Output)は、デジタル信号を入力にも出力にも使える汎用 I/O ポートで、設定によって様々なデバイスやセンサーの制御、信号の送受信に利用することができます。

RaspberryPi の GPIO ポートの構成について

RaspberryPi に基板上に 40 本のピンヘッダがあり、その端子に配線することで GPIO を使用することができます。

RaspberryPi の GPIO GPIO

GPIO の制御方法

仮想ファイルシステムで制御

Raspberry Pi では仮想ディレクトリ/sys/class/gpio を通して GPIO にアクセス出来ます。 仮想ファイルシステムを読み書きして制御するようになっています。

/sys/class/gpio/export

仮想ファイル「/sys/class/gpio/export」にポート番号を書き込むと「/sys/class/gpio」内に"gpio"にポート番号が付いた仮想ディレクトリが作成されます。

$ echo ポート番号 > /sys/class/gpio/export

例えば、仮想ファイル「/sys/class/gpio/export」にポート番号"2"書き込むと、「/sys/class/gpio/」内に「gpio2」という仮想ディレクトリが作成されます。

この仮想ディレクトリ内に GPIO の入出力方向を設定する仮想ファイル「direction」と、入出力値を読み書きする仮想ファイル「value」が作成されます。

/sys/class/gpio/gpio2/direction
/sys/class/gpio/gpio2/value

仮想ファイル「/sys/class/gpio/gpio2/direction」に"out"を書き込むと出力、"in"を書き込むと入力になります。

$ echo 入出力方向 > /sys/class/gpio/gpio2/direction

ポート GPIO2 を出力に設定した場合は以下のコマンドで仮想ファイル/sys/class/gpio/gpio2/value に出力値を書くと、その値が GPIO2 に出力されます。

$ echo 出力値 > /sys/class/gpio/gpio2/value

ポート GPIO2 を入力に設定した場合、以下のコマンドで仮想ファイル/sys/class/gpio/gpio2/value から GPIO2 の入力値を取得することが出来ます。

$ echo /sys/class/gpio/gpio2/value

プログラムからのアクセス(C 言語)

C 言語で仮想ファイルシステムで GPIO を制御して、LED 点灯 ⇒ 消灯するプログラムの例です。

led.c
#include <fcntl.h>
#include <unistd.h>

int main (void)
{
int fd;

fd = open("/sys/class/gpio/export", O_RDWR);
write(fd, "17", 2);
close(fd);
sleep(1);

fd = open("/sys/class/gpio/gpio2/direction", O_RDWR);
write(fd, "out", 3);
close(fd);

fd = open("/sys/class/gpio/gpio2/value", O_RDWR);
write(fd, "1", 1);
close(fd);
sleep(2);

fd = open("/sys/class/gpio/gpio2/value", O_RDWR);
write(fd, "0", 1);
close(fd);

fd = open("/sys/class/gpio/unexport", O_RDWR);
write(fd, "17", 2);
close(fd);

return 0;
}

ライブラリで制御

プログラムからのアクセス(Python)

Python で GPIO を制御するためのライブラリとして、RPi.GPIO、gpiozero がよく使われています。

RPi.GPIO

  • Raspberry Pi の GPIO ピンを制御するための低レベルライブラリ
  • より細かい制御が可能で、高度な設定や特定のハードウェアの制御に適している

Python で RPi.GPIO を使用して、LED 点灯 ⇒ 消灯するプログラムの例です。

led.py
import RPi.GPIO as GPIO
import time

GPIO_PORT=17

GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PORT, GPIO.OUT, initial=GPIO.LOW)

GPIO.output(GPIO_PORT, 1)
time.sleep(2)
GPIO.output(GPIO_PORT, 0)

GPIO.cleanup()

gpiozero

  • 初心者向けに設計された、より高レベルな GPIO ライブラリ
  • LED やボタンなどの一般的なデバイスを簡単に制御するためのクラスや関数を提供
  • 自動的にプルアップ抵抗を設定するなど、使いやすさに重点を置いています

Python で gpiozero を使用して、LED 点灯 ⇒ 消灯するプログラムの例です。

led.py
from gpiozero import LED
import time

GPIO_PORT=17

led = LED(GPIO_PORT)

led.on()
time.sleep(2)
led.off()

以上、GPIO とその制御方法(の一部分ですが)について紹介いたしました。

次回は、実際に電子工作キットを使用して、プログラミング学習していきたいと思います。

未経験から始める
システムエンジニア

一生モノのITスキルを身につけよう

あなたの経験とスキルを
ディアシステムで発揮してください!