たまこんブログ

学生×プログラミング→2020年3月ブログ開設!趣味の一環でPythonでつくったゲーム や自分が読んで役に立った 本、知識などを紹介しています!

16進数と2進数とPython

f:id:tamakon3:20200517222531j:plain

日常生活で使われているUSBメモリーや、SDカードなどの容量が16Gや、8G、スマホのギガなども16GBなどで、区切りのいい10GBなどありません。これは、2進数や16進数が関係していると思われます。また、2進数と10進数はPythonやドット絵などを作るときなどにも使われており、僕が改めて知っておきたいと思ったので書くことにしました。ここで色々まとめておきます。

 

 

10進数とは

10進数とは0-9までの記号を使って数字を表す。9の次は10となって一つ桁があがる。

使用例 お金、年齢、テストの点数など

2進数とは

2進数とは0と1で数を表す。

2進数だと良い例 ドット絵、単純な判断データ、ON/OFFの情報、コンピュータのプログラムなど

16進数とは

16進数は1-9とA-Fで15までの数を表す。2進数をみやすくしたもの。

16進数だと良い例 色コードの表現、2進数の桁を減らして表現できる、コンピュータの中で2進数は見にくいので人間が見やすいように16進数を使う。

2進数,16進数、10進数変換表

10進数 2進数 16進数
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 10000 10

 ※256までの変換表を一番下に貼っておきます。

 

また、はてなブログで表を挿入させるときに使ったサイトを貼っておきます。

www.itjigoku.com

 まとめ

実は下の表を見ると8、16は1000,10000と、きりが良い数字になっていることから8GB、16GB,32GBなどの製品しかないのです。また、識者によるとプログラミングにおいて2進数と16進数は大切だと言っていたので復習してみました。

 

256までの変換表(プログラム有り)

Pythonで変換表をつくる際に使ったプログラムをのせておきます。

for i in range (1,257):
  h=hex(i)
  strh=h[2:]
  b=bin(i)
  strb=b[2:]
  print(i,strh,strb)
10進数 16進数 2進数
1 1 1
2 2 10
3 3 11
4 4 100
5 5 101
6 6 110
7 7 111
8 8 1000
9 9 1001
10 a 1010
11 b 1011
12 c 1100
13 d 1101
14 e 1110
15 f 1111
16 10 10000
17 11 10001
18 12 10010
19 13 10011
20 14 10100
21 15 10101
22 16 10110
23 17 10111
24 18 11000
25 19 11001
26 1a 11010
27 1b 11011
28 1c 11100
29 1d 11101
30 1e 11110
31 1f 11111
32 20 100000
33 21 100001
34 22 100010
35 23 100011
36 24 100100
37 25 100101
38 26 100110
39 27 100111
40 28 101000
41 29 101001
42 2a 101010
43 2b 101011
44 2c 101100
45 2d 101101
46 2e 101110
47 2f 101111
48 30 110000
49 31 110001
50 32 110010
51 33 110011
52 34 110100
53 35 110101
54 36 110110
55 37 110111
56 38 111000
57 39 111001
58 3a 111010
59 3b 111011
60 3c 111100
61 3d 111101
62 3e 111110
63 3f 111111
64 40 1000000
65 41 1000001
66 42 1000010
67 43 1000011
68 44 1000100
69 45 1000101
70 46 1000110
71 47 1000111
72 48 1001000
73 49 1001001
74 4a 1001010
75 4b 1001011
76 4c 1001100
77 4d 1001101
78 4e 1001110
79 4f 1001111
80 50 1010000
81 51 1010001
82 52 1010010
83 53 1010011
84 54 1010100
85 55 1010101
86 56 1010110
87 57 1010111
88 58 1011000
89 59 1011001
90 5a 1011010
91 5b 1011011
92 5c 1011100
93 5d 1011101
94 5e 1011110
95 5f 1011111
96 60 1100000
97 61 1100001
98 62 1100010
99 63 1100011
100 64 1100100
101 65 1100101
102 66 1100110
103 67 1100111
104 68 1101000
105 69 1101001
106 6a 1101010
107 6b 1101011
108 6c 1101100
109 6d 1101101
110 6e 1101110
111 6f 1101111
112 70 1110000
113 71 1110001
114 72 1110010
115 73 1110011
116 74 1110100
117 75 1110101
118 76 1110110
119 77 1110111
120 78 1111000
121 79 1111001
122 7a 1111010
123 7b 1111011
124 7c 1111100
125 7d 1111101
126 7e 1111110
127 7f 1111111
128 80 10000000
129 81 10000001
130 82 10000010
131 83 10000011
132 84 10000100
133 85 10000101
134 86 10000110
135 87 10000111
136 88 10001000
137 89 10001001
138 8a 10001010
139 8b 10001011
140 8c 10001100
141 8d 10001101
142 8e 10001110
143 8f 10001111
144 90 10010000
145 91 10010001
146 92 10010010
147 93 10010011
148 94 10010100
149 95 10010101
150 96 10010110
151 97 10010111
152 98 10011000
153 99 10011001
154 9a 10011010
155 9b 10011011
156 9c 10011100
157 9d 10011101
158 9e 10011110
159 9f 10011111
160 a0 10100000
161 a1 10100001
162 a2 10100010
163 a3 10100011
164 a4 10100100
165 a5 10100101
166 a6 10100110
167 a7 10100111
168 a8 10101000
169 a9 10101001
170 aa 10101010
171 ab 10101011
172 ac 10101100
173 ad 10101101
174 ae 10101110
175 af 10101111
176 b0 10110000
177 b1 10110001
178 b2 10110010
179 b3 10110011
180 b4 10110100
181 b5 10110101
182 b6 10110110
183 b7 10110111
184 b8 10111000
185 b9 10111001
186 ba 10111010
187 bb 10111011
188 bc 10111100
189 bd 10111101
190 be 10111110
191 bf 10111111
192 c0 11000000
193 c1 11000001
194 c2 11000010
195 c3 11000011
196 c4 11000100
197 c5 11000101
198 c6 11000110
199 c7 11000111
200 c8 11001000
201 c9 11001001
202 ca 11001010
203 cb 11001011
204 cc 11001100
205 cd 11001101
206 ce 11001110
207 cf 11001111
208 d0 11010000
209 d1 11010001
210 d2 11010010
211 d3 11010011
212 d4 11010100
213 d5 11010101
214 d6 11010110
215 d7 11010111
216 d8 11011000
217 d9 11011001
218 da 11011010
219 db 11011011
220 dc 11011100
221 dd 11011101
222 de 11011110
223 df 11011111
224 e0 11100000
225 e1 11100001
226 e2 11100010
227 e3 11100011
228 e4 11100100
229 e5 11100101
230 e6 11100110
231 e7 11100111
232 e8 11101000
233 e9 11101001
234 ea 11101010
235 eb 11101011
236 ec 11101100
237 ed 11101101
238 ee 11101110
239 ef 11101111
240 f0 11110000
241 f1 11110001
242 f2 11110010
243 f3 11110011
244 f4 11110100
245 f5 11110101
246 f6 11110110
247 f7 11110111
248 f8 11111000
249 f9 11111001
250 fa 11111010
251 fb 11111011
252 fc 11111100
253 fd 11111101
254 fe 11111110
255 ff 11111111
256 100 100000000

 

Google ColaboratoryでPythonを動かしてみた

Google ColaboratoryでPythonが動きますが、実際にどのように動くのか試してみました。

 Google Colaboratoryとは

f:id:tamakon3:20200513223312p:plain

 Google ColaboratoryとはGoogleアカウントさえあれば無料でPythonをダウンロードしていなくても、web上で動かせることができるPython実行環境です。意外とPythonのインストールに手間がかかってしまうので、その手間を省いてすぐにプログラムを書けるというのは一つのメリットです。また、Googleが用意した便利なGPUが無料使えます。研究用だとGPUは500万くらいするのがありますが、ここでは無料です。また、プログラミングの共有が簡単にできるため、ペアプログラミングなどが容易にできます。

colab.research.google.com

GPUとCPUの違い

GPUの主な役割は3Dグラフィクスなどの画像描写に必要な計算処理でCPUの役割はコンピュータ全体の計算処理です。例えて言うと、学校のあるクラスの中で成績が平均90点で運動等もすべてできる優秀な子がCPUで、足の速さだけで言えば世界クラスの速さで優秀な子よりも速いがそれ以外は何もできない子がGPUです。

実際に使ってみる

 Google Colaboratory全体の編集画面はこんな感じです。

f:id:tamakon3:20200513223557p:plain

簡単な計算プログラムも実行してみました。

f:id:tamakon3:20200513212534p:plain

実行すると

f:id:tamakon3:20200513213344p:plain

ちゃんと実行できます。また、IDLEだとプログラムを実行するショートカットキーはF5キーですが、Colaboratoryでそのようなキーがあるのか調べたところ「⌘/Ctrl + M」と書いてありましたが、僕のMacでは実行できませんでした。

 

次にこの前作ったfizbuzゲームをいれてみます。しっかり動きますね。

 

tamakon3.hatenablog.com

 f:id:tamakon3:20200513214344p:plain

また、GooglePythonなどが学べる新しい講座「Google IT Automation With Python Professional Certificate」を発表し、オンライン教育サービス「Coursera」で提供されている。PythonやGit、ITオートメーションを学ぶ初心者レベルの6講座のプログラムで、誰でもPythonを扱えるようになっています。

 最後に

Google Colaboratoryは色んな可能性があるので、これから使って気づいたことがあったらこの記事に追記していこうと思います。

 

 

 

 

 

実用的ロボット製作会社のボストン・ダイナミクス社

f:id:tamakon3:20200509203324p:plain

Robots | Boston Dynamics

四足歩行ロボットや作業ロボットなどをつくっているBoston Dynamics(ボストン・ダイナミクス)社とはどのような会社なのか、気になったので調べてみました。

 

Boston Dynamics社とは?

ロボット開発を手掛けるアメリカの企業です。ボストン・ダイナミクス社の開発するロボットは高度な機動力、知性を備えている最先端ロボットです。実際の現場で使われることをシミュレーションしているため、意地悪なことをあえてやってます。

www.youtube.com

また、ロボットに関する世界的な専門学者クラスの経験と技術を持っており、新しいロボットを開発するのに最高の環境が揃っているといえます。

 

四足歩行ロボットSpot

f:id:tamakon3:20200509211357p:plain

上の画像の黄色い四足のロボットがSpotです。

このロボットは荒地や階段をすいすいと進み、屋内の作業に最適な動きができます。

www.youtube.com

また、アームやガスセンサーなどをつけることでドアの開け締めなどといった様々なことができるようになり作業できる幅が格段とあがります。

そして今年このSpotのSDKが発表されましたSDKとはSpotの開発に携わった人以外のプログラマーでも扱いやすくするために簡易化された関数群などのことです。

 

二足歩行ロボットAtlas

f:id:tamakon3:20200509213514p:plain

 アトラスは非常に俊敏な移動と軽やかな動作をし、人間が中に入っているかのように動くことができます。

www.youtube.com

また、Atlasの部品は3Dプリンターでつくられており、非常に軽量で跳躍や宙返りに必要な強度をもっています。将来は人型ロボットが私達の色んなところで活躍するかもしれません。

 

運搬ロボットHandle

f:id:tamakon3:20200509215115p:plain

Handleは倉庫内でダンボールを運搬、トラックからの荷降ろしなどの作業をするロボットです。現在使われている運搬ロボットはルンバみたいなロボットにダンボールをのせて動きますが、Handleは自ら動いてベルトコンベアにのせるため、人間が作業に入ることを最小限にすることができます。

www.youtube.com

また、リーチは3mと大きいですが、移動の際はコンパクトな形に折りたたんで倉庫内や施設移動をすることができます。

 

まとめ

f:id:tamakon3:20200527153338j:plain

BstonDynamics社は高度な技術と実用的なロボットを開発している会社です。

公式サイトの求人のところをみると様々なエンジニアを求めています。(Pythonもあった)この機会にプログラミングをしてみてはいかがでしょうか。

 

公式サイト

www.bostondynamics.com

人気急上昇中!プログラミング言語Pythonとは!?

近年、AI技術の進歩などによりプログラマーの需要が急増しています。私たちの日常にも少しずつ顔を出しているAI技術ですが、その中で急激に人気を伸ばしているプログラミング言語Pythonについて紹介していきたいと思います。

f:id:tamakon3:20200506202130p:plain

日経XTECより


https://xtech.nikkei.com/atcl/nxt/column/18/01068/111100001/

 

 

Pythonとは?f:id:tamakon3:20200506201300j:plain

フォトファビアンGrohsUnsplash

 Pythonとはプログラミング言語の一つで、文法がシンプルで作業効率とコードの信頼性を高めることを重視してデザインされています。また、Pythonは活用の幅が広く、教育、機学習、データ収集など様々な使い方があります。身近なところで言うと YouTubeDropboxInstagramなど私達が一度は触れたことのあるものばかりです。また、AI技術は漫画でも風刺されています。手塚治虫氏の著書、火の鳥未来編でもダニューバーとハレルヤというAIが出て来ています。

tezukaosamu.net

 

 

Pythonホームページ

www.python.org

 

名前の由来

Pythonという名前は作者であるグイド・ヴァン・ロッサム氏が「空飛ぶモンティ・パイソン」というイギリスのコメディ番組のファンだったからです。この番組は同時代の件や哲学などをネタにし風刺のきいた知的な番組で多くの欧米文化に影響を与えました。

ja.wikipedia.org

また、パイソンにはニシキヘビという意味もあります。なので、Pythonのアイコンなどはニシキヘビのロゴが使われています。

f:id:tamakon3:20200507084750p:plain

 

 Pythonの将来性

f:id:tamakon3:20200506232346j:plain

Photo by Fabian Grohs on Unsplash

結論から言うと、Pythonの将来性は高いです。また、海外でのPython人気は非常に高、人材不足なので今からはじめるのに有利な条件となっていますそして現在、日本もPythonエンジニアが少ないです。そこで、Pythonを使う企業が日本でも増えている中、今Pythonをマスターしておくのはとても有利ということになります。

Pythonを実際に使っている企業

日本だと以下の企業などで使われています。

ヤフー株式会社

about.yahoo.co.jp

楽天株式会社
corp.rakuten.co.jp
株式会社バンダイナムコオンライン

www.bandainamco-ol.co.jp

 このように大手企業でもPythonエンジニアを求めていますが、日本でのPythonの普及は進んでおらず、Pythonエンジニアは希少であるため給料が高いです。また、Pythonでのプログラミングができると世界のどこへ行っても求められる人材となることができます。まだまだ需要のある分野なので今からやっても遅くはありません。

 

Pythonの特徴

f:id:tamakon3:20200507092231j:plain

Photo by Chris Ried on Unsplash

大まかに説明すると次のようになります。

構文がシンプルで少ない

Pythonは学びやすいことも特徴です。他言語と比べるとPythonの構文は非常にシンプルな構成です。また、覚えなければならない構文も少ないため、初めてプログラミングを学ぶ方には非常におすすめです。

ライブラリが豊富

ライブラリとは汎用性が高いプログラムをひとまとまりにしたもので、Pythonには機械学習や深層学習で使えるライブラリが数多く用意されています。このためエンジニアにとって使いやすく作業効率が格段に上がります。

 

試行錯誤がやりやすい

 Pythonはプログラムを書いたらすぐに実行できる「インタープリタ言語」です。簡単に実行ができるため初心者にも、新しいものを生み出すエンジニアにも向いています。また、C言語javaなどはプログラムを実行ファイルに一度変換しないといけないため手間がかかります。なので実行速度が早いと言うのは一つの利点です。

 

今からはじめたい方

今からプログラミングをはじめるという方はPythonがおすすめです。まだまだ伸びる分野ですし、何より世界中でPythonエンジニアが求められています。ここではPythonについて紹介しましたが、実際に何からすれば良いかをわかりやすく書いた本を紹介しておきます。

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ 

 

 

tamakon3.hatenablog.com

 

ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython 

 

 

tamakon3.hatenablog.com

 

Pythonスタートブック[増補改訂版] 

 

現実世界でAIがどのようにつかわれているのか

業界別!AI活用地図 8業界36業種の導入事例が一目でわかる 

 

fizzbuzzゲームの応用

この記事で紹介している本から学んだことを応用してゲームを作ってみました。
本で紹介されているゲームとは逆のルールとなっています。



tamakon3.hatenablog.com

  • 目次

ゲームルール

  • fizとbuzの数字を当ててください。
  • 3〜10までの数字の間にあります。
  • 初級から上級までの難易度が選べます。
  • 50個数字が出ますので、その中から推測してください。

実行する

ここにソースを貼り付けるとPythonがなくても実行できます。
colab.research.google.com

プログラム解説

import random                       #ランダムモジュールを読み込む
def fizbuz():
    while True:                     #無限ループ開始
        fiz=random.randint(3,10)    #fizを乱数でつくる
        buz=random.randint(3,10)    #buzを乱数でつくる
        key=0                       #keyの値を0にする
        level=1                     #levelに1を代入する
        print("fizとbuzを当てください!fizとbuzは3から10の間です")
        print("難易度を入力してください。1は初心者、2は中級者、3は上級者、0で終了")    #難易度を入力させる
        level =input()
        level=int(level)
        if(level==1):               #1が入力された時の処理
            start_number=1
        elif(level==2):             #2が入力された時の処理
            start_number=50         
        elif(level==3):             #3が入力された時の処理
            start_number=100        
        elif(level==0):             #0が入ると無限ループを終了させる
            print ("終了します")
            break
        else:                       #それ以外が入力された時の処理
            print("入力が間違っているので、初心者スタートです")
            start_number=1

        for i in range(start_number,start_number+50):   #fiz,buz表示のループ
            if i%fiz == 0 and i%buz==0:  #iをfizとbuzで割ったあまりが0ならば
                print ("フィズバズ")                             
            elif i % fiz==0:             #iをfizで割ったあまりが0ならば
                print("フィズ")                          
            elif i % buz ==0:
                print("バズ")
            else:                         #fizでもbuzでもなければ、iを表示
                print(i)
              
        print("fizを入力してください")       #クイズモード開始
        key =input()                      #key入力を受け付ける  
        key=int(key)
        if(key==fiz):                     #押されたキーがfizだったら
            print ("正解です")  
        else: 
            print("ハズレです")

        print("fizは",fiz,"です")
                                          #buzを聞く
        print("buzを入力してください")       
        key =input()
        key=int(key)
        if(key==buz):                     #buzだった時の処理
            print ("正解です")   
        else:
            print("ハズレです")

        print("buzは",buz,"です")
fizbuz()

fizzbuzzゲームとは
ja.wikipedia.org

[書評]ゲームセンターあらしと学ぶプログラミング入門こんにちはPython

この書の著者はすがやみつる、「ゲームセンターあらし」のキャラクターが出てきて初心者でもできるようにプログラミングを噛み砕いて紹介している本になっていて、プログラミングの入門書「こんにちはPython」は現在Amazon.co.jpのプログラミング部門で5位となっています。

 「ゲームセンターあらし」とは

ja.wikipedia.org

そして過去に大ブレイクしたゲーム漫画「ゲームセンターあらし」は現在コロコロコミック公式サイトで無料で公開されています

corocoro.jp

 そんな噂の本を読んでみて感じた事を紹介します

 

 

 1.基本中の基本から漫画が進む

最初から簡単なプログラミングを打つという感じではなく、なぜPythonを使うのか

なぜプログラミングをするのか、というとこから始まっています。

Pythonを使うメリット

  • 文法がシンプルでわかりやすい
  • オープンソースなので無料で誰でも使える
  • Windows,Mac,LinuxなどのOSでも使える
  • 将来、高い給料がもらえる

など

そうして、Pythonをダウンロードする手順に繋がります。また、そこからあまり他のPython入門書ではみられないパソコンのキーボード入力に慣れるといった基礎中の基礎も話の中に入っていてパソコンをあまり触ったことない方でも進められるようになっています。

 

 

2. 初心者でもわかりやすい噛み砕いた説明

この書の中でプログミングをしていき、その中で起こりやすいミスやエラー、演算子、についての簡単な説明がされています。

これにより、なぜここでこれを使うのかといった疑問が解消される流れになっています。また、自分でつくるゲームの楽しさを実感できるような話の内容です。

例 比較演算子やif文、for文などの説明

 また、最初から最後までを通して3個のシンプルなゲームをゲームを作れるようになっています。また、その中で改良できる点や音の出し方など細かいところも書かれているのでよりレベルアップしたゲームをつくることができます。そして、プログラミングができれば作ったゲームを発展させたりも自由自在ということに気づけます。

 

3.こんな人におすすめ!

本書は、入門書の中の入門書となっているためプログラミングをしたことない学生、

大人におすすめです。この本を読んでから、他のPython入門書にいくと、より理解して

プログラミング学習を進められると思います。

 

今回紹介した本はこちらです

ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython 

 

 

 

ゲームセンターあらし第一話

 

コミック

 

 

 

 

 

フリーアイコン配ります

プレゼント

フリー画像として作ったのでよかったら使ってみてください

 

ぼくの顔に良く似ていると評判なので、スマホのロック画面にすると幸運upするかもしれません!知らんけど

また、zoomのバーチャル背景としても使えますよ!

 

 

 

アイコン

f:id:tamakon3:20200430221842p:plain

f:id:tamakon3:20200430221845p:plain

f:id:tamakon3:20200430222000p:plain

f:id:tamakon3:20200430221849p:plain

 

f:id:tamakon3:20200430221852p:plain

f:id:tamakon3:20200430221856p:plain

f:id:tamakon3:20200430223409p:plain