【雑談】IoTって何?
よく話は聞くけど、IoTって結局何のことを言っているんだろう?
と気になったので、調べてみました。
■IoTとは
Internet of Things、略して IoT と呼ばれています。
あらゆるモノがネットワークを介して相互に情報交換をする仕組みです。
情報交換ということで、根幹にはデータ収集があります。
モノの情報だけではなく周囲の状況のデータや、そのデータの解析によってより価値のある情報を生み出します。
例えば、
ネットワークに繋がった腕時計をしている方がいて、その腕時計から、「脈拍」や「体温」等の身体に関する情報が、データとして連携されます。
そのデータを解析し、「正常」や「異常あり」のデータをお医者さんに連携することで、その方の異常を早期に検知し、対応できる。
ようなイメージです。
■IoTの活用事例
結局何に使われてるの?って気になります。
全部ではありませんが、わかりやすいものだけ挙げておきます。
製造業:
機械の監視を行い、効率の悪いラインや故障しそうな機会を見つける。
熟練の方の目線にゴーグルをつけて、目線や作業を可視化し、ナレッジの共有を行う。
流通業:
配達荷物の追跡。
スーパー内をどのように歩いているのかの可視化。
自動販売機で何が売れたのかの情報の蓄積・解析。
公共:
スマートメーターへの切り替え。
医療・介護:
体調管理、高齢者を遠隔で見守る。
家庭・個人:
流通業は結構身近に見れますね。
Amazon等のECサイトで商品を注文した時に、商品が届くまで「商品が今どこにあるのか」を見ることが出来ます。
自動販売機も、最近はディスプレイで表示されているものがありますね。
これがまさしくDXされた自動販売機です。
商品の購入時にデータが共有され、いつどの商品買ったのか、どの商品が売れているのか等の分析が行われ、そのデータをもとに、より利用される自動販売機に変わっていきます。
関連ワード
■DX(デジタルトランスフォーメーション(Degital Transformation))
デジタル技術によって、ビジネスや生活スタイルを変えることです。
例えば、本を題材にしてみましょう。
漫画を購入する時、昔は本屋さんまで足を運んで購入していましたが、今ではオンラインショッピングサイトで商品を選んで購入しています。
さらには、本もデジタル化されて、スマートフォンやパソコンで読めるようにもなっています。
例のように、身近なところでもどんどんDXされていますね。
今回は、少し気になったワードのまとめ記事を作ってみました。
最近は良く、IoTであったりDXであったり、略語で言われてもわからないよ...ということがあり、会話で相槌が打てずやきもきすることもあります。
少し調べるだけでも、自分の知識になることは変わりないので、気になったら調べる癖をつけるのが大事だと、私は社会人になって気づきました。
今後も、少し気になったワードがあったら、雑談記事としてあげてみたいと思います。
【Python】【23】素因数分解してみよう③
【記事の目標】
ライブラリを使って、任意の数値(n)を素因数分解する。
【作業手順】
1.Sympyをインストール/インポートしよう
2.素因数分解してみよう
1.Sympyをインストール/インポートしよう
ファイル上に以下を入力。
from sympy.ntheory import factorint
入力することで、カーソルを合わせると、
「パッケージ sympy のインストール」と出てきますので、これをクリック。
自動でインストールされました。
2.素因数分解してみよう
Sympyを使って素因数分解してみましょう。
インポートした「factorint」で素因数分解の結果が返ってきます。
result = factorint(100)
factorintの引数として、任意の数値(n)を渡すことでresultに素因数分解の結果が取得できます。
resultとしては以下のように返却されます。
{2: 2, 5: 2}
key に素因数が、value に指数を返却してくれます。
そのため、100 は 2 が 2 つ、5 が 2 つで構成されていると返しています。
少しわかりにくい、、、
という方は、結果に対して以下ロジックを追加すると、前回と同じような結果が出力できます。
keys = list(result.keys())
result_list = []
for i in range(0, len(keys)):
for j in range(0, result[keys[i]]):
result_list.append(keys[i])
これで result_list を出力すると、以下のようになります。
[2, 2, 5, 5]
前回、前々回と素因数分解をやってきましたが、ライブラリを使うと一瞬で出来てしまいますね。
もちろん、自身でロジックを組むことも大切ですが、こういったライブラリを使って作業を短縮することも大切です。
少しでも知識を増やして、簡単にロジックが組めるようになっていければいいなと思っています。
【Python】【22】素因数分解してみよう②
【記事の目標】
任意の数値(n)を素因数分解する。
【作業手順】
1.任意の数値(n)を素因数分解してみよう
2.結果を確認してみよう
1.任意の数値(n)を素因数分解してみよう
素因数分解は難しいですが、私が思う手順は以下かと思います。
①任意の数値(n)を素数で割り算して、余りが 0 になるものを見つける
②余りが 0 になった素数を結果リストに格納し、任意の数値(n)に割り算の結果を格納する
③任意の数値(n)が 1 になるまで、①②を繰り返す
④結果を出力する
こちらは私のイメージですので、考え方はいろいろあると思います。
それでは、事前準備をしましょう。
計算上で使う任意の数値(calc_n)を生成し、任意の数値(n)を設定。
素因数分解の結果を格納するリストを生成。
calc_n = n
prime_factorization_list = []
計算結果が 1 になるまで繰り返し処理をするため、while文を使用します。
while calc_n != 1:
で作成した素数リストを繰り返して、
①任意の数値(n)を素数で割り算して、余りが 0 になるものを見つける
②余りが 0 になった素数を結果リストに格納し、任意の数値(n)に割り算の結果を格納する
③任意の数値(n)が 1 になるまで、①②を繰り返す
この部分をロジック化しましょう。
for i in range(0, len(result_list)):
if calc_n % result_list[i] == 0:
prime_factorization_list.append(result_list[i])
calc_n = calc_n / result_list[i]
これで、素因数分解が出来そうですね。
任意の数値(n)を 100 として、処理を実行してみましょう。
予想では、 2 × 2 × 5 × 5 = 100 なので、2, 2, 5, 5 と出てきそうですね。
実施結果は以下です。
[2, 5, 2, 5]
結果数値はあっていますが、リストの順番が気に入らないのでソートしましょう。
prime_factorization_list.sort()
これで結果が綺麗になりました。
[2, 2, 5, 5]
100 を素因数分解できました。
前回に引き続き、素因数分解をやってきました。
前回作成した素数リストを使って、素因数分解までできましたね。
今回は「割り算の結果の余りが 0 になるまで」という条件で処理を行いましたが、「その素数で割り切れなくなるまで」という条件で処理を行うと、最後のソートは必要ないかもしれませんね。
考え方が様々あるように、実現方法も様々あるので、自分の分かるやり方でやってみるのが一番ですね。
【Python】【21】素因数分解してみよう①
【記事の目標】
0から任意の数値(n)までの素数を抽出する。
【作業手順】
1.エラトステネスの篩のロジックを組んでみよう
2.任意の数値までの素数を抽出してみよう
1.エラトステネスの篩のロジックを組んでみよう
素数を見つけたい、そんなときは「エラトステネスの篩」ですね。
まずは、任意の数値までの配列を用意して、先頭にFALSEを、以降にTRUEを設定します。
今回の場合は配列は 0 番目から作成されるため、2番目の要素である1までFALSEを設定します。
prime_list = [False, False] + [True]*(n-1)
任意の数字(n)を 8 にしてみましょう。
するとこのリストは以下のように作成されます。
[False, False, True, True, True, True, True, True, True]
要素は9個ありますが、一番最初が 0 番目の要素であるため、
0,1,2,3,4,5,6,7,8の9要素となっています。
次に、どの数まで繰り返し調べるかを算出します。
任意の数字(n)の平方根(ルート)の小数点以下を切り捨てした整数の値に 1 を加算した数まで調べます。
target = math.floor(math.sqrt(n)) + 1
任意の数字(n)を 8 とすると、
math.sqrt(n) は 2.8284271247461903
math.floor(math.sqrt(n)) は 2
math.floor(math.sqrt(n)) + 1 は 3
となります。
これで繰り返し処理をさせる最大の数字は 3 となりました。
ここで注意です、0 と 1 はすでにFALSE(素数ではない)ため、以降の処理は 2 から算出した最大の数字まで処理します。
では繰り返し処理を書いていきましょう。
for i in range(2, target):
i は 2 から target (今回の場合は 3 )まで繰り返します。
処理の先頭で、すでにFALSE判定されているものはスキップするようにしましょう。
if not prime_list[i]:
continue
素数でないと判断するために、2 から最大の数(今回の場合は 3 )まで 2 倍した数にFALSEを入れていきます。
for j in range(i * 2, n + 1, i):
prime_list[j] = False
今回は任意の数字(n)を 8 としているため、このロジックでは以下のように数字にFALSEを入れていきます。
i = 2 のループ処理
1 回目:j = 4 であるため、4 にFALSEを設定
2 回目:j = 6 であるため、6 にFALSEを設定
3 回目:j = 8 であるため、8 にFALSEを設定
i = 3 のループ処理
1 回目:j = 6 であり、すでにFALSE設定されているため、処理スキップ
処理終了
この通り、4, 6, 8 にFALSEが設定されました。
処理後のリストは以下のようになります。
[False, False, True, True, False, True, False, True, False]
ここでTRUEになっている要素の数字を取り出すと、素数の一覧になりますね。
result_list = []
for i in range(n + 1):
if l[i]:
result_list.append(i)
これで、 result_list を出力すると、
[2, 3, 5, 7]
となり、 8 までの素数を抽出できましたね。
2.任意の数値までの素数を抽出してみよう
先ほどのロジックを関数にして呼び出してみましょう。
def eratosthenes(n):
prime_list = [False, False] + [True] * (n - 1)
target = math.floor(math.sqrt(n)) + 1
for i in range(2, target):
if not prime_list[i]:
continue
for j in range(i * 2, n + 1, i):
prime_list[j] = False
return prime_list
n = 8
l = eratosthenes(n)
result_list = []
for i in range(n + 1):
if l[i]:
result_list.append(i)
では n = 11 にして動かしてみましょう。
結果予想では、先ほどの 8 で実施した結果に 11 が追加されているイメージですね。
以下、実行結果です。
[2, 3, 5, 7, 11]
予想通り、任意の数字(n)までの素数が取得できましたね。
忙しくて久しぶりの記事投稿になりました。
急に素因数分解がしたくなって、ロジックを組んで遊んでいたので、遊んでいました。
こういった数学の処理をロジックに起こしてみるのも、ロジックを書く練習になると思いますので、試しにやってみても良いかもですね。
【Unity】【1】環境構築
気になったのでUnity触ってみます。
私の端末はWindowsなので、Windowsの手順で実施します。
【記事の目標】
Unityの起動
【作業手順】
1.Unity Hubのインストール
2.Unity IDの作成
3.Unity HubへSign Inして、Unityのインストール
4.日本語化しよう
5.Unityを起動しよう
1.Unity Hubのインストール
以下、URLにアクセスしてUnity Hubをダウンロードしましょう。
アクセスしたら、Unity Hubをダウンロードからインストーラをダウンロードしましょう。
ダウンロードしたインストーラを起動して、インストールしていきましょう。
インストール先フォルダを指定して、インストールしましょう。
2.Unity IDの作成
インストールしたUnity Hubを起動しましょう。
アカウントを持っていませんので、アカウントの作成をしていきます、
メールアドレス、パスワード、ユーザー名、ユーザー姓名を入力して「Create a Unity ID」をクリックしましょう。
届いたメールから、「Link to confirm email」を押して、メールの認証を行います。
3.Unity HubへSign Inして、Unityのインストール
ではSign Inしましょう。
「Sign In」ボタンを押すと、ブラウザが少し開き、Unity Hub側でInstall画面が開きます。
では、Unity Editorをインストールします。
「Install Unity Editor」をクリックしましょう。
「Agree and get personal edition license」をクリックしましょう。
Install Completeと出たら、インストール完了です。
4.日本語化しましょう
では、インストールしたUnityにモジュールを追加しましょう。
日本語にチェックを付けて、Continueをクリックします。
インストールしていきましょう。
日本語が追加されていればOKです。
5.Unityを起動しよう
ProjectsでNew projectをクリックしましょう。
作りたいCoreを選んで、プロジェクト名を決めて、「Create project」をクリックしましょう。
作成したプロジェクトを開いてみましょう。
少し時間が掛かりましたが、開けましたね。
今回は起動までです。
どういったものが作れるのか、すごいワクワクしています。
少しネットで調べて、簡単なものが作れるようチャレンジしてみます。
【Python】【20】iniファイルのデータを読み書きしてみよう
【記事の目標】
iniファイル(設定ファイル)への書き込みと読み込みをする。
【作業手順】
1.ConfigParserをインポート
2.iniファイルを作成してみよう
3.作成したiniファイルからデータを読み込んでみよう
1.ConfigParserをインポート
今回はpythonの標準ライブラリのConfigParserを利用するため、インストールは不要です。
import configparser
これで、ConfigParserが利用できるようになりました。
2.iniファイルを作成してみよう
まずは、ConfigParserを利用できるようにします。
config = ConfigParser.ConfigParser()
今回は以下のようなiniファイルを作成してみましょう。
では、最初のセクションである first からコードを書いていきましょう。
section1 = 'first'
config.add_section(section1)
config.set(section1, 'test', 'firsttest')
config.set(section1, 'num', '111')
同じように、2つ目のセクションである second のコードも書いてみましょう。
section2 = 'second'
config.add_section(section2)
config.set(section2, 'test', 'secondtest')
config.set(section2, 'num', '222')
これで、中身の設定は完了です。
最後にファイル名を設定して、ファイルを書き出してみましょう。
with open('blog_setting.ini', 'w') as file:
config.write(file)
これで main.py と同じ階層に blog_setting.ini が作成されます。
では、実行してみましょう。
実行完了後に、blog_setting.iniが出来上がっていると思います。
開いてみると、先ほど作ろうとしていた通りの内容が書き込まれていますね。
3.作成したiniファイルからデータを読み込んでみよう
最後は、「2.」で作成したファイルを読み込んでみましょう。
ConfigParserを利用できるようにするところまでは一緒です。
import configparser
config = configparser.ConfigParser()
では、先ほどのファイルを読み込みましょう。
config.read('blog_setting.ini')
first のセクションを取得してみましょう。
section1 = 'first'
print(config.get(section1, 'test'))
print(config.get(section1, 'num'))
second のセクションも同じように取得します。
section2 = 'second'
print(config.get(section2, 'test'))
print(config.get(section2, 'num'))
これで先ほどの値が取得できます。
では、実行してみましょう。
firstのtestとnum、secondのtestとnumが順番に出力されていますね。
今回は設定ファイルの書き込みと読み込みをやってみました。
私の場合はjavaでしたが、不動の変数を設定ファイルに退避して、環境ごとにプログラムを修正せずに対応できるようにするためによく使っていたのを思い出します。
結構簡単に読み書き出来ますので、皆さんも試してみてください。
巷で流行っている病にかかってしまい、更新が遅れてしまいました。
皆さんも体には十分気を付けてください。
【Python】【19】Tkinterを利用してみよう
【記事の目標】
Tkinterを利用してデスクトップアプリを作成してみよう。
【作業手順】
1.Tkinterをインポート
2.画面の設定をして、画面を開いてみよう
3.画面に項目を置いてみよう
4.閉じるボタンを作ってみよう
1.Tkinterをインポート
今回はpythonの標準ライブラリのTkinterを利用するため、インストールは不要です。
以下のように記載し、インポートしましょう。
import tkinter
これで、Tkinterが利用できるようになりました。
2.画面の設定をして、画面を開いてみよう
簡単な画面設定を行って、画面を開いてみましょう。
まずは tkinter.Tk() を呼び出して、変数に格納しましょう。
root = tkinter.Tk()
これで root という変数に何も設定されていない画面の情報が格納されました。
では、この画面にタイトルを設定してみましょう。
root.title('テストアプリ')
これで、表示されるウインドウの名称が テストアプリ になりました。
最後に、画面のサイズを設定してみましょう。
root.geometry('800x600')
これで、表示されるウインドウは 800x600 のサイズで表示されます。
※ここで指定している「x」はローマ字の小文字のエックスです。気を付けましょう。
設定が完了したので、画面を起動する行を追加します。
root.mainloop()
では、実行してみましょう。
空っぽのウインドウが表示されましたね。
タイトルも テストアプリ になっていますね。
3.画面に項目を置いてみよう
画面の表示はできたので、次は、項目を置いてみましょう。
項目の設定は、「2.」の最後の root.mainloop() の前に追加しましょう。
まずはラベルですね。
label = tkinter.Label(text='テストラベル')
label.pack()
1行目でラベルを作成し、2行目で画面に配置しています。
全体のコードは以下になります。
import tkinter
root = tkinter.Tk()
root.title('テストアプリ')
root.geometry('800x600')
label = tkinter.Label(text='テストラベル')
label.pack()
root.mainloop()
では実行してみましょう。
何もなかったウインドウに テストラベル が表示されていますね。
ラベル以外もありますので、自分が作りたいアプリに応じて使い分けていきましょう。
4.閉じるボタンを作ってみよう
最後に閉じるボタンを作りましょう。
右上の「×」ボタンではなく、自作の「閉じる」ボタンですね。
まずは、閉じるボタンを作りましょう。
quit_btn = tkinter.Button()
quit_btn['text'] = '閉じる'
次に、閉じるボタンを押したときの処理を書きましょう。
閉じるボタンを押した時に行いたい処理は、画面を終了させることですね。
quit_btn['command'] = root.destroy
この設定で、押した時に root を終了させてくれます。
root は画面全体を表していますので、画面自体が終了することになります。
最後に、画面にこのボタンを配置しましょう。
quit_btn.pack()
全体のコードは以下になります。
import tkinter
root = tkinter.Tk()
root.title('テストアプリ')
root.geometry('800x600')
label = tkinter.Label(text='テストラベル')
label.pack()
quit_btn = tkinter.Button()
quit_btn['text'] = '閉じる'
quit_btn['command'] = root.destroy
quit_btn.pack()
root.mainloop()
では、実行してみましょう。
テストラベルの下に、閉じるボタンが表示されていますね。
閉じるボタンを押すとウインドウが閉じられたと思います。
今回は、Tkinterを利用してデスクトップアプリを作成してみました。
自分だけのオリジナルアプリを作成する第一歩ですね。
様々な項目を配置して、入力したり、ボタンを押した時に処理をしたりして、オリジナルアプリを作ってみてください。