ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

Tinkercad で電子回路をシミュレートする

 皆様こんにちは。ユニファの赤沼です。最近はすっかり IoT ブームで、もともとハードウェア開発の経験がない方でも電子工作に興味を持たれている方は多いのではないでしょうか。今回は電子工作を行う時に便利なサービスを一つ紹介したいと思います。

電子工作時の課題

 電子工作をする時に、特にもともとソフトウェア開発をされていた方が感じる課題には例えば下記のようなものがあるのではないでしょうか。

  • 実際に電子回路を組んでみないと設計が正しいのか、ちゃんと動くのかがわからない

  • ちゃんと動かなかった時にどこに問題があるのかがわかりづらい

  • 回路のつなぎ方を間違えるとパーツが壊れたり発火したりする可能性がある

 ソフトウェアの開発であればターミナル上でコードを書いて少しずつ動かして確認することができますし、デバッグも print デバッグや デバッグツールでデバッグポイントを設定してステップ実行したりすることが可能です。それにコードが間違っていたとしても普通はPCが壊れたり燃えたりすることはありません。この辺りのことは電子工作を始める時にとっつきにくさの原因となる部分ではないでしょうか。

電子回路の動作をシミュレーションできる Tinkercad

 上記のような課題を解決するための一助となるサービスとして、今回は Tinkercad というサービスをご紹介します。

www.tinkercad.com

 サービス名に cad と入っている通り CAD ツールなので 3D モデルの作成などが行えるのですが、電子回路の設計や動作のシミュレーションも行うことができます。

電子回路の作成とシミュレーション

 それでは Tinkercad で電子回路を作成してみます。初めて使う時にはアカウント登録が必要ですので、右上の サインアップ ボタンからアカウント登録を行なってください。アカウント登録手順については特に難しいことはないと思いますので、詳細は割愛します。

f:id:akanuma-hiroaki:20180222083136p:plain:w450

 サインアップしてサインインするとダッシュボード的な画面になります。デフォルトでは 3D モデルの作成を行うための画面になっていますので、左のメニューから Circuits を選択します。

f:id:akanuma-hiroaki:20180222213703p:plain:w450

 初めて使う場合は Create new Circuit ボタンをクリックして新しい回路の作成を開始します。

f:id:akanuma-hiroaki:20180222213827p:plain:w450

 すると画面右に電子工作パーツが並んだ回路作成画面が表示されますので、この画面でパーツを配置して回路を作成します。

f:id:akanuma-hiroaki:20180222084144p:plain:w450

 ではまずはシンプルに、ブレッドボードに LED とコイン型電池を配線して LED を点灯させる回路を作成してみます。右側のパーツリストから該当のパーツを選択して左ペインに配置します。パーツによって様々なパラメータを設定することができ、例えば抵抗であれば何Ωの抵抗かを設定できます。今回は抵抗値は 330Ω にしています。また、左上のメニューでパーツを回転させることもできます。回路が作成できたら、右上の Start Simulation をクリックしてみます。

f:id:akanuma-hiroaki:20180222085609p:plain:w450

 すると回路のシミュレーションが始まり、LED が点灯します。

f:id:akanuma-hiroaki:20180222085826p:plain:w450

 さらにテスターもパーツに用意されていますので、配置することで動作時の電圧なども見ることができます。

f:id:akanuma-hiroaki:20180222090532p:plain:w450

 では次に抵抗を削除して、電池と LED のアノードを直接接続してシミュレーションを実行してみます。すると LED が点灯しますが、 i マークが表示されました。

f:id:akanuma-hiroaki:20180222090801p:plain:w450

 LED にマウスオーバーしてみると、下記のようなメッセージが吹き出しで表示されます。

f:id:akanuma-hiroaki:20180222091141p:plain

 現在の電流が 61.9 mA で、推奨の最大電流は 20.0 mA なので、 LED の寿命が短くなる可能性があります、という感じの注意が表示されています。

 ではさらに極端な例として、コイン型電池を 9V 電池に変更してシミュレーションを実行してみます。すると今度は LED にクラッシュしたようなマークが表示されました。

f:id:akanuma-hiroaki:20180222091830p:plain:w450

 また LED にマウスオーバーしてみると、今度は下記のようなメッセージになっています。絶対最大定格が 120mA の LED に対して 915mA の電流が流れてしまっているため、 LED が壊れてしまったということになります。

f:id:akanuma-hiroaki:20180222092217p:plain

Arduino でのコード実行をシミュレートする

 Tinkercad では単純な電子パーツの回路だけでなく、 Arduino で動作するコードのシミュレーションも行うことができます。先ほどの回路の電池の部分を Aruduino に置き換えて下記のような回路を構成し、右上の Code ボタンをクリックします。

f:id:akanuma-hiroaki:20180222211144p:plain:w450

 すると Arduino で動かすコードを編集するためのブロックエディタが表示されます。今回はテキストでコードを編集するために、プルダウンリストから Text を選択します。

f:id:akanuma-hiroaki:20180222211429p:plain:w450

 エディタがテキスト編集用に変わり、デフォルトでLチカのコードが用意されています。

f:id:akanuma-hiroaki:20180222093416p:plain:w450

 Start Simulation をクリックすると、下記の動画のように実際のコードの動作を確認することができます。

 さらにエディタにブレークポイントを設定し、ステップ実行でデバッグすることも可能です。

まとめ

 回路図を作るところまでであれば Fritzing が有名ですが、電子回路や Arduino のコードのシミュレーションやデバッグまでできてしまうという点で Tinkercad はかなり便利だと思います。これでしたら実際のパーツが手元になくてもとりあえず回路を作って動かしてみることができますし、パーツの破損や発火も気にすることなく試せます。まずは Tinkercad で回路を構成してみて、問題なさそうであれば実際のパーツで回路を組んでみるという順でやると、手戻りが少なく、効率的にプロトタイピングができると思いますので、お試しいただければと思います。

評価検証・QAってなんですか

ハイ、ドーモ!QAの山岸です。 最近、社内ではわたしたちQAチーム以外でも受け入れテストが行われたりしており自身の再認識の意味も踏まえてQAってどんなことしているの?評価検証ってなに?みたいなものをまとめてみようと思います。

QAとは Quality Assurance の略称です。 顧客に信頼性を与えることを目的とし、そのために求められる品質を満たしているかどうかを検査・保証することです。

www.weblio.jp

企業によっては評価評価/検証品質管理などいろいろな呼び方で呼ばれています。
国際規格としてはISO9000シリーズがあります。

www.weblio.jp

これのなかにあるISO/IEC 9126という品質特性をもとにソフトウェアや商品が品質管理が適正にされているよね?ということを見ています。
品質特性 左側の大項目は主な特性で右側は副特性と呼ばれています。
f:id:unifa_tech:20180215195236p:plain
特性だけ挙げられてもわからないと思うので、左側の特性をかんたんにまとめます。
◆機能性
 ソフトウェアが目的に対して正確に動作、機能するか
◆信頼性
 特定の状況下(高負荷とか)でソフトウェアがどの程度機能するか
◆使用性
 使用者が利用するにあたって理解、習得、利用が円滑に行えるか
◆効率性
 使用する環境下で適切な性能が発揮するか
◆保守性
 修正のしやすさのこと

利用時の品質特性モデル(ISO/IEC 9126-4)としては下記があります。
かんたんに言うとユーザビリティみたいなものです。
有効性 (effectiveness)
生産性 (productivity)
安全性 (safety)
満足性 (satisfaction)

大まかにはこのような感じです。
これをもとにテスト(試験、検査)を行い、品質を保証していきます。
ちなみにですが、テスト技法の資格もあります。

http://jstqb.jp/index.htmljstqb.jp

テスト技法やテストまでの流れに関しては呼び方や方法がとても多いのでまた別の機会に紹介したいと思います。

以上になります。ありがとうございました。

CsvBuilderとExcelBuilderを作ってみました

こんにちは、システム開発部のちょうです。今回は自分が最近の開発でもっとやりやすい方法でCSVやExcelを作成することについて話したいと思います。

まずCSVから。Ruby標準のライブラリにすでにcsvというCSVを取り扱うライブラリがあります。でもCSVを作成する際に、ヘッダーと内容は別々で出力します。

CSV.generate do |csv|
  csv << ["column1", "column2", "column3"]

  items.each do |it|
    line = []
    line << it.foo
    line << it.bar
    line << it.baz
    csv << line
  end
end

ここに、サービスの開発をしていくにつれ、列が増える可能性があります。すると、修正する箇所が2つあります。一つはヘッダーのところ、もう一つはループのところです。列の数がすくないならまだいいですが、列が10個以上、20個に増えたらデータの漏れや順番の間違いは発生しやすいです。 そもそも列と内容の出力は一緒にすればいいのではと自分が考えました。実際、こんなコードを書きました。

続きを読む

RailsアプリからGoogleフォトに写真をアップロードしてみる

こんにちは、Webエンジニアの本間です。

昨年も予定通り12月25日に Ruby 2.5 がリリースされましたね。 個人的に嬉しいのは、ブロックパラメーターを経由したメソッド呼び出しが3倍早くなった改善です。 def foo(a, &b) のようなメソッド定義はブロックを受け取ることが明示されていて好きなのですが、今回の改修でこのような書き方をやりやすくなったなぁと思っております。

さて今回は、弊社サービスの「写真サービス るくみー」と「Googleフォト」が連携できないか?という調査を兼ねて、RailsアプリケーションからGoogleフォトに写真をアップロードしてみようと思います。

続きを読む

ECS+NLBでexporterを動かしてみる

おはこんばんちは。ユニファのインフラ担当すずきです。

今年一本目のブログなんですが…
途中で間違えてブログ消してしまって2回目書いてつらいです…

気を取り直して本題いきます!!

弊社ではサーバ等々の監視にprometheusを利用しようとしています。
prometheusでは多くの情報を取得するためにいろいろなexporterを利用するのですが、それら1個ずつ起動したり、起動確認するのは面倒だなと考えていました。
そこでECS+NLBを利用して各exporterの設定毎にDockerコンテナとして起動してしまえば楽じゃないかな?と思ったので今回はそのチャレンジしたことを記事にしています。

続きを読む

Swift 4 で UserDefaults を簡単に扱う

はじめに

iOS エンジニアのしだです。年始から喉が痛くずっとガラガラ声だったり左目が腫れたり2018年はなんだか嫌な予感がします。

最近、Kotlin を勉強しています。もう ことりん という響きだけでいとおしいく感じてます。 Kotlin 勉強しているときに以下の記事を見まして便利だなぁと思ったので、iOS の UserDefaults を同じように扱いたいなと思って書いてみました。

medium.com

今回は iOS の UserDefaults の小ネタです。

準備

  • Xcode 9.1 (Swift 4)
続きを読む

AWS Elemental MediaConvertあれこれ

みなさま、あけましておめでとうございます。
エンジニアの田渕です。

なんだか年末ギリギリまでバタバタしていたので、まったく年末感のないまま年末年始休暇に入ってしまいました。 そのせいか、今ひとつ年始感もありません……。年賀状もちゃんと出したし、お年玉もあげたりしたんですがね。。。 (ありますよね、そういうこと。)

さて、私のこれまでの記事では動画関連のネタを扱うことが多かったですが、今回も多分にもれず、動画関連です。 昨年開催されたAWS re:Invent 2017。この中ではたくさんの新サービスが発表されましたが、そこには新しいメディアサービスも含まれていました。

AWS re:Invent 2017 で発表された新サービスと機能 | AWS

今回は、そのうちの一つ、「AWS Elemental MediaConvert」のマイナー機能をご紹介します。

AWS Elemental MediaConvertとは

詳細については、公式の発表をご確認頂くのが一番わかりやすいかと思います。

AWS Elemental MediaConvert

これまでも、AWSには動画変換サービスとして「Amazon Elastic Transcoder」がありましたが、それよりも大規模かつ高解像度な動画の配信/メディアサポートを意識して作られているのがAWS Elemental MediaConvert。(と、私は解釈しています。) Elastic Transcoderでは基本的に「動画を変換するのみ」でしたが、Elemental MediaConvertにはそれよりも一歩進んだ機能が色々と搭載されています。

単純に動画の変換をするのみならば、公式ガイドの手順に従うだけで、かなりあっさりと動画の変換ができます。

docs.aws.amazon.com

毎度毎度、マイナーどころをついて恐縮ですが……。

メジャー(?)な使い方は、すでに他サイト等で情報がありますので、私が色々と触っている中で「へー」と思った機能をご紹介したいと思います。実際に触った方はおわかりかと思いますが、かなり機能が盛りだくさん!盛りだくさんすぎて、公式ドキュメント内でも事細かに全ては記載されておらず、メニューを触りながら各メニューのInfoを参照、それを参考にトライアンドエラーで発掘していく感じです。 (ちなみに、2018/1/4現在、Elemental MediaConvertの公式document等は英語のみの提供です。)

f:id:unifa_tech:20180104104213p:plain
Elemental MediaConvertのJOB設定画面

英語メニュー&ドキュメントと格闘しつつ、「これは今後使いたいかも?」と思った機能をご紹介します。

その1:動画の結合

地味ですが、意外に一番使いそうなのがこれ。複数の動画を結合した動画を作ることが出来ます。 やり方は至って簡単で、JOB作成時に指定するInputの動画を複数にするだけ。 あとは、通常の動画変換時と同じ設定で出来上がります。 更に言うと、その複数の動画の一部分だけを切り取って、結合させることも出来ます。

その2:別動画の音に差し替える

以下の公式ドキュメントにもある通り、今回のこの機能では、既存の動画の映像と音声を必要な部分だけ選んで新しい動画を作ることができます。 docs.aws.amazon.com この機能なのですが、音声の入力としてS3内にある別動画を指定することが出来るため、映像はこっちの動画、音声はこっちの動画、なんていう動画を作ることが出来ます。 動画の形式によっては、複数言語対応の動画を作成することも可能です。

その3:動画のノイズをちょっと消す

動画の出力設定内に「Noise reducer」というものがあり、そこでプルダウンから、あらかじめ用意されたフィルターを選ぶことで、動画のノイズをちょっとだけ消したり、逆に輪郭を強くしたりすることが出来ます。

使ってみましたが、気持ち変わったかな〜?というくらいの、自然な仕上がりでした。

まとめ

記事中に貼り付けたElemental MediaConvertのJOB設定画面をご覧頂くと分かる通り、とにかく設定出来る項目が多い!デフォルトのまま、必要な箇所だけを入力/選択していくことで通常の動画変換は行えますが、まだまだ細かく項目を見ていくと出来ることはたくさんありそうです。 また、実際に使った時に変換エラーになって初めて分かる仕様などもあり、よりよく使うにはとにかくトライしてみるのが良さそうです。 引き続き、面白い使い方が出来ないか、見ていきたいと思います。

では。