Translate

2020年1月20日

超初心者のPythonプログラミング(その1)

はじめてのPython ipynb - Colaboratory

1分でPythonの学習を始める! | 象と散歩 で Googleが提供するクラウドでのPython実行環境、Google Colaboratory を紹介しました。PCでもモバイル端末でもブラウザ(Chromeを推奨)が使える環境とGoogleアカウントさえあれば簡単にPythonの勉強が始められます。

データサイエンティストとして活躍するためには、データクレンジングやデータ加工をするためにPythonでプログラムが書けると便利ですし、そのままPythonでデータ分析もできます。

また、論理的思考を鍛えるためにプログラミングを勉強しようという方にも、Python は文法が簡単なので最適なプログラム言語だと思います。。そして、前述したように Google Colaboratory を使えば、ソフトウェアのインストールなども必要ないので気軽に始められます。

何れにしても、バリバリのプログラマーを目指すわけではないので、エキスパートになる必要はまったくなく、最低必要減の知識を身に付ければ十分です。先ずは、Pythonってどんなプログラム言語なのかを学んでいきましょう。

このブログの中では、 プログラミングの基礎として、下記について何回かに分けて説明をしていこうと思います。あとは実践の中で知識を深めていってください。今回は、1~2の変数と四則演算までの説明となります。

  1. 変数とは?
  2. 演算子(四則演算)
  3. データを格納する
    1. 配列
    2. 二次元配列
    3. 集合型
    4. 辞書型
  4. 条件分岐(IF分と比較演算子,論理演算子)
  5. 繰り返し文(forループ, whileループ)
  6. 関数

Goolge Cloabで新規ノートを作成する

Python3の新しいノートブック - Colaboratory

メニューから “ファイル” → “Python 3の新しいノートブック” を選択します。

Python3の新しいノートブック - Colaboratory

これで、新しいノートブックが開いてPythonのプラグラムを書く準備ができました。

Python3 ノートブック - Colaboratory

ひとつのコードセルに書いたプログラムは同時に実行されます。左上にある『+コード』をクリックすると、現在のセルの下にコードが追加されます。またセル中央の上部でマウスオーバーすると同じようにコードを追加のアイコンが現れます(下図参照)。こちらは、現在のセルの上にコードセルが追加されます。

またセル中央の下部でマウスオーバーすると、現在のセルの下にコードを追加するアイコンが出現します。

プログラムを書くcodeセル - Colaboratory

これで、Pythonプログラミングの勉強の準備は完了です。


0. Pythonの文法

Pyhonはとてもシンプルなプログラミング言語です。

  • Pythonのプログラムは、原則1行に1命令
    1行に複数の命令を記載する場合は、;(セミコロン)で繋げる
  • # で始まる行はコメント
    プログラムと同一行の後ろに # でコメントを記載することも可能
  • if, for, while で実行するプログラムはインデント(字下げ)する

と、いうのがプログラムを実行する上での最低限のルールですが、PEP (Python Enhancement Proposal:Python拡張提案)にて美しい(わかりやすい)プログラムの書き方が提案されているので、少しPythonのプログラムに慣れたら pep8-ja 1.0 ドキュメント を参照してみましょう。


1. 変数とは

変数はプログラミングをする上では必ず使うものなのでしっかり覚えましょう。

なぜプログラムで変数を使うかといえば、例えば、1+1 の答えは、2でしかありませんが、a+b とすると、a と b に様々な数値を代入することで、式を変えずに答えを変えることができます。この a, b が変数です。変数には、数値以外にも文字も代入することができます。


変数名

aとかbといった小文字ひと文字でなくても、Result, Result_1, Result_2 など英大文字、アンダースコア、数字が使えますが、数字は先頭には利用できません。

しかし、Pythonが使っているキーワード(予約語)は、変数としては使えません。例えばNoneに1を代入しようとすると、"SyntaxError: can't assign to keyword" とエラーとなります。

予約語を変数として使おうとするとエラーに

また print などを変数として割り当ててしまうと、命令としてのprintが使えなくなり面倒なことになります。

Google Colaboratory のノートブックでプログラムを書くと、「あなたが書きたいプログラムはこう?」と推奨してくれる機能があります。例えば先頭一文字pを入力すると、pass, pow, pprint, print, property が候補としてあがるので、これらの文字列を変数として使うのはやめましょう。

サジェスト機能で変数に使えない文字列を確認

もし間違って割り当ててしまったときには、

del 変数名

として、変数の定義を削除します。


変数に数値や文字列を代入する

変数に数値や文字を代入するには"="を使います。プログラムでは=記号は、計算結果を表す記号ではなく代入のための記号です。

  • =(イコール)は代入を表す
  • 文字列は、'(シングルクォーテーション)若しくは、"(ダブルクォーテーション)で囲む

また、文字列+文字列は、文字列の結合を意味します。

下記のプログラムを実行してみましょう。a + b の結果を c に代入して、結果を表示するプログラムです。a と b に代入している数値を変更して色々と試してみましょう。

print() は、()の中を表示する命令です。

a = 1        # 変数 a に 1 を代入
b = 2.5      # 変数 b に 2.5 を代入
c = a + b    # 変数 c に a+b の計算結果を代入
print(c)     # 変数 C の中身を表示

変数に数値を代入して計算する - colaboratory

文字列を変数に代入する

続いて変数に文字列を入れてみます。

a に Hello, b には World! を代入して、a と b の文字列を結合した結果を c に代入します。文字列の足し算は、結合を意味します。前述したように文字列は ‘(シングルクォーテーション)か “(ダブルクォーテーション)で囲みます。

下記のプログラムを実行してみましょう。

a = 'Hello,'    # a に Hello,を代入(シングルクォーテーションで囲む)
b = 'World!'    # b に World!を代入(シングルクォーテーションで囲む)

# 文字列 + 文字列は、文字列を結合するという意味になります。
c = a + b       # c に a の文字列と b の文字列を結合した結果を代入
print(c)        # c を表示

変数に文字列を代入して結合する - colaboratory

因みに文字列の中で ‘(シングルクォーテーション)を使いたい場合は、 ”(ダブルクォーテーション)で全体を囲み、逆に”(ダブルクォーテーション)を使いたい場合は、‘(シングルクォーテーション)で全体を囲みます。

下記のプログラムで確認できます。

# ' を文字列に含みたい場合は " で全体を囲む
# " を文字列に含みたい場合は ' で全体を囲む

print('Hello, "Python" World!')
print("Hello, 'Python' World!")

Pythonで文字としてシングルクォーテーション、ダブルクォーテーションを使う

変数の有効範囲

変数に代入した値は、Google Colabotaryでは、

  • ノートブックを閉じる
  • 別なノートブックでプログラムを書く
  • 暫く放置してセッションが切れる

まで、ずっと有効です。

厳密には、グローバル変数とローカル変数というのがありますが、いまの時点では、前に代入した値が残っていると思ってください。


2.演算子(四則演算子)

次は、四則演算子についてです。加算(足し算)については、変数の例で示しましたが、減算(引き算)、乗算(掛け算)、除算(割り算)、べき乗については下記の記号を使います。

四則演算 記号
加算 +
減算 -
乗算*
除算 /
商を求める //
余を求める %
べき乗 **

割り算では、商と余を求めることができます。べき乗では、二乗であれば**2、10乗であれば**10のように書きます。

では実際にプログラムで確認してみましょう。下記のプログラムでは、print文の中で計算を実行しています。

a = 5
b = 3

# aとbを足す(加算)
print(a + b)

# aからbを引く(減算)
print(a - b)

# aとbをかける(乗算)
print(a * b)

# aをbで割る(除算)
print(a / b)

# aをbで割った商を求める
print(a // b)

# aをbで割った余りを求める
print(a % b)

# aのb乗
print(a ** b)

Pythonで四則演算 - Colaboratory

最後に

これで、変数を説明して変数を使った計算までができるようになったと思います。

最後に読みやすいプログラムについて追記しておきます。今回のサンプルプログラムは、下記のように読みやすくするためにところどころ半角スペースを入れています。

a = 1      # 変数 a に 1 を代入
b = 2.5    # 変数 b に 2.5 を代入
c = a + b  # 変数 c に a+b の計算結果を代入
print(c)   # 変数 c の中身を表示

しかし、下記のようにすべての半角スペースを削除したとしても実行結果は同じです。

a=1#変数aに1を代入
b=2.5#変数bに2.5を代入
c=a+b#変数cにa+bの計算結果を代入
print(c)#変数cの中身を表示

どちらも3.5という答えを求められますが、どちらのプログラムが見やすいですか?

img alt="可読性に優れたプログラム" height="378" src="https://lh4.googleusercontent.com/QW6mUmW1HSuCcYU9d_yc50NiL9CHNwKzfvewjWU1QlPSyhBiYQefLC2OJ1KafSNeH35Z72uIDRslVOZfTTb9JYH-dIcUcx_bTF1-zbDqVRweKprA-I9q9ryEgPesaq17wNnnamiLkI6l_mgWz0VNMw=w640-h378" title="可読性に優れたプログラム" width="640" />

これが見やすいプログラムを考えるということです。

2020年1月13日

Amazon Echo で立体音響を楽しむ

Echo(第2世代)でステレオ化

Amazon Music Unlimited アマゾン ミュージック アンリミテッド

Amazon Echo(第3世代)が発売されたためか、年末年始のセールで激安となっていたので思わずAmazon Echo(第2世代)を2台購入してしまいました、、、。

寝室の音響を改善したいという建前と、360℃スピーカーをステレオで聴いてみたいという本音が購入目的です。既に Amazon Echo Plus を使っていますが、BGMには十分な音質で音楽の大量消費に貢献してくれています。

しかし、Echo(第2世代)に搭載されているスピーカーは、Echo Plus(第2世代)、Echo(第3世代)と比べると一回り小さなものが使われています。

Echo(第2世代)
Echo(第3/4世代)
Echo Plus(第2世代)
スピーカーサイズ 2.5インチウーファー
0.6インチツイーター
3.0インチウーファー
0.8インチツイーター
3.0インチウーファー
0.8インチツイーター

先ずは、モノラルで Echo(第2世代)とEcho Plus(第2世代)で同じ曲を聴き比べてみると、音の抜け具合(クリアさ)は ”一聴瞭然” です。特に低音の響き具合では圧倒的な差があります。


Echoシリーズのステレオ化

続いて、Echo(第2世代)をステレオペア接続してみます。

Echo のステレオ化は、互換性がある端末同士でなければなりません。下表以外のEcho端末の互換性については、Amazon.co.jp ヘルプ: ステレオペア対応のEcho端末 を参照してください。

Echo端末 ペア可能な端末
Echo(第2世代) ・Echo(第2世代)
・Echo Sub
Echo(第3世代) ・Echo(第3世代)
・Echo Plus(第2世代)
・Echo Sub
Echo Plus(第2世代) ・Echo(第3世代)
・Echo Plus(第2世代)
・Echo Sub

2台のEcho端末をステレオペアリングするには、Alexaアプリが必要です。詳細の手順はビデオでも説明されているので Amazon.co.jp ヘルプ: 対応するEcho端末でスピーカーセットを作成する を参考にしてください。

ステレオペアリング

設定終了後、

Alexa, 音楽をかけて

と言えば、立体音響ワールドの扉が開きます。アレクサが選んできたのは、坂本龍一の音楽図鑑でした。

音質の貧弱だった Echo(第2世代)ですが、ステレオ化してみると、

「かなりいい感じ!」

低音のなさは変わりませんが、寝室に設置するので低音を響かせる必要はありません。

左右からの音の広がりで、音の抜け具合がとてもよくなりました。またモノラルで慣れていた360℃スピーカーが奏でるステレオの音は、右半球側頭葉を心地よく刺激し、とても新鮮に聴こえます。Echo(第2世代)の音質の悪さを十二分にカバーしてくれるどころか、リビングに設置している Echo Plus(第2世代)もステレオ化したいという欲求にかられてしまいました。


Echoでステレオ化するメリット

Echoでステレオ化する最大のメリットは、2台のEchoを離して設置することができる点です。端末間を配線して繋ぐ必要がないので、電源さえ確保できれば、2台を十分に離した場所に設置できます。寝室の対角線上に2台のEchoを設置しましたが、360℃スピーカの特性も相成り、部屋全体が音に包まれます。


Echoでステレオ構成にするなら

今回は、Echo(第2世代)でステレオ構成にしてみました。しかし、これからEchoの購入を検討するのであれば、Echo Plus(第2世代)と同音質で安価な Echo(第3世代)Echo(第4世代)がベターな選択だと思います。2台購入しても 24,000円弱という値段で、音楽をより楽しめる環境がつくれます。


Echoプランの落とし穴

Amazon Music Unlimited のEchoプランについては、Amazon Music Echo プランで音楽を120%楽しむ方法 | 象と散歩で書きましたが、月々380円で6,500万曲もの楽曲を楽しむことができるお得なプランです。

但し、Echoプランには

  1. 1つのEcho端末でしか使えない(Echoプランを申し込んだ端末)
  2. スピーカーセット(2台でステレオ化)は利用できない

という制限があります。

Echoプラン
注: Amazon Music Unlimited Echoプランでは、1つのEcho端末とEcho Subをステレオセット(サブウーファーペア)として設定した場合、使用可能です。Amazon Music Unlimited Echoプランでは、スピーカーセットやマルチルームミュージックはサポートされていません。

リビングに設置しているEcho Plus(第2世代)に互換性のある Echo(第3世代)を加えてステレオ化したいという衝動にかられましたが、Echoプランを個人プランにアップグレードしないとステレオ化はできません。

冷静に考えてみると、リビングの Echo Plus(第2世代)は、Amazon Music Echo プランで音楽を120%楽しむ方法 | 象と散歩で書いたように、エレコム Bluetooth オーディオレシーバー LBT-AVWAR700 を使ってコンポからステレオで音が出せますし、Sony サウンドバー HT-S350 からもステレオ再生できます。

メリットは然程ないよね、自分、、、。

また、マルチルームミュージックで再生しているときも同じでしたが、スピーカーセットでステレオ化している場合も、

Alexa, この曲いいね

と、サムアップしようとしても

「いまは、何も再生されていません」

と冷たく返され、お気に入りに追加できません。


音楽の世界を広げよう

Alexa, 音楽をかけて

とアレクサにお願いをすれば適当に音楽をかけてくれますが、気に入らなければ

Alexa, 別な曲をかけて

といえば、

「もちろんです。では、Amazon Music から XXXX をおススメします」

と、違うプレイリスト、ステーション、アルバムなどに切り替えてくれます。

気に入った曲があれば、

Alexa, この曲に似た曲をかけて

といえば、

「わかりました。では、どうぞ」

と謙虚な回答と共に、再生されている曲に似た楽曲を探してくれます。

また、普段聴いている音楽の傾向から ”今週のディスカバリー” というプレイリストが作成されているので、

Alexa, 今週のディスカバリーをかけて

といえば、新しい音楽を見つけられるかもしれません。

Amazon Music Unlimited アマゾン ミュージック アンリミテッド
2020年1月5日

鉄瓶で飲む珈琲もまた美味なり

空間鋳造の鉄瓶EggとCorea Gold Filter C240

鉄瓶を愉しむ | 象と散歩 で鉄瓶について触れましたが、空間鋳造の鉄瓶 Egg を使い始めてから2年が経ちます。鉄瓶で沸かしたお湯はとても口当たりがよく、白湯(さゆ)のままでも美味しく飲めますが、抹茶、緑茶だけではなく珈琲との相性もとてもよいです。

鉄瓶で沸かしたお湯が美味しくなる理由は、

鉄瓶で沸かしたお湯は、鉄の成分がナトリウムやカルシウム、カルキ(塩素)をほぼ除去してしまうので、今まで飲めなかった水道水が魔法のようにまろやかでおいしくなり、使えば使うほどお湯がおいしくなります。

と、あります。

水道水を美味しい白湯にする方法は簡単です。グツグツと沸騰した状態で5分間は火を付けたままにしましょう。


鉄瓶の錆び具合

鉄瓶を購入するにあたって気にしたのは錆についてです。南部鉄器では、鋳型から取り出した仕上げ前の鉄瓶を 800 - 1000度で真っ赤になるまでじっくりと蒸らし焼きをし、鉄瓶の内部に黒さび(酸化被膜)を作ることで錆を防ぐ「金気止め(かなきどめ)」・「釜焼き」という伝統的技法があります。

後は、鉄瓶で繰り返しお湯を沸かすことで湯垢(ゆあか)が付着して錆びにくくなるといいます。で、実際に2年間利用した鉄瓶の内側はこんな状態になりました。

空間鋳造 鉄瓶 Egg 内部状態

内部には紫色と緑色のラインができていて綺麗です。下の方は白っぽくなっていますが、ところどころ茶色い斑点が見えるのは錆です。特に手入れはしていませんが、あまり錆ないんだというのが実感です。

鉄瓶の使用上の注意を払ってきたのは、

  • 鉄瓶が熱いうちにお湯を空ける
  • 空焚きをして内部を乾かす
  • 洗わない

この3点だけです。

流石、日本の伝統技術です。鉄瓶の購入するのであれば、高い技術力を誇る日本産のものを選択した方が、高価でも、長く使え、結果的にお得な買い物になるのではないかと思います。

空間鋳造のEggも買って後悔しない逸品だと思いますが、鉄器の及源鋳造株式会社 - OIGEN(オイゲン)愉しむをたのしむ【公式】 のラインアップには、1万円で購入できる鉄瓶もあります。


ステンレスボトルで保温

シンプルなデザインが気にってインドで購入した MILTON thermo bottle(700ml)をポット代わりに使っています。

MILTON TERMO STEEL は、インドのHAMILTON社が製造する18/8規格のステンレスを使った二層構造のウォーターボトルです。空間鋳造のEggが0.9ℓで、八分目の水で湯を沸かし5分間煮沸させると湯量が若干減るので。700mlのボトル(写真左)がちょうどいい感じです。

MILTON THERMO STEEL 700ml / 500ml

性能的にも6時間の保温で80℃が保てる優れものです。

残念ながら日本では購入できなそうですが、Amazonでコスパの高い Amazonベーシックのステンレスボトル(750ml)がありました。

Amazonベーシック ウォーターボトル ステンレス製 750ml

デザインはシンプル!容量はピッタリで、保温も6時間とポットとしても十二分な性能です。


美味しい珈琲を飲もう

さて、ここからが本題の鉄瓶で沸かしたお湯で美味しい珈琲の入れ方についてです。以前は紙フィルターを使っていましたが、いまは、金属フィルター(金メッキ)の Cores Gold Filter を使っています。

金属フィルターを使うと紙のフィルターでは吸収されていた珈琲の油分などを含めて珈琲本来の味わいをダイレクトに感じさせてくれます。

Cores Gold Fileter C240を愛用していますが、いまは、丸山珈琲との共同開発したC246BKが最新となっています。

美味しい珈琲の入れ方

✔ 鉄瓶で湯を沸かす
✔ フィルター、サーバーをお湯で温める
✔ 珈琲カップに湯を注ぐ
✔ 粗挽きの珈琲粉を使用(1杯8g)
✔ 少量のお湯で珈琲を蒸らす(30-40秒)
✔ ゆっくりと満遍なくお湯を注いで粉を膨らませる
✔ 珈琲が下に落ちたら次のお湯を注ぐ
✔ カップの湯を捨て水気をふき取ってから珈琲を注ぐ

金属フィルターは紙フィルターよりも目が粗いため、珈琲豆は中~粗挽きにします。鉄瓶は珈琲ポットのように少量のお湯を注ぐことができるので、珈琲粉全体にお湯がいきわたるように、ゆっくりとお湯を注いで珈琲粉を膨らませます。珈琲が落ちたらまた湯を注いで、これを繰り返し、二杯分で3分ぐらいの時間をかけると、美味しい珈琲ができあがります。

美濃焼 ぶるー浪漫 デミダスカップ

珈琲も鉄瓶で沸かしたお湯を使った方が断然美味しいです。日本の伝統技術である鉄瓶で沸かしたお湯で珈琲をいれ、和洋折衷を愉しみましょう。

アクセス上位(過去7日間)