PythonとColaboratoryでクリスマスツリーを描いてみた

# メリークリスマス！！

```
　　　　　　　　　　　　　　★
　　　　　　　　　　　　　★★★
　　　　　　　　　　　　★★★★★
　　　　　　　　　　　★★★★★★★
　　　　　　　　　　★★★★★★★★★
　　　　　　　　　★★★★★★★★★★★
　　　　　　　　★★★★★★★★★★★★★
　　　　　　　★★★★★★★★★★★★★★★
　　　　　　★★★★★★★★★★★★★★★★★
　　　　　★★★★★★★★★★★★★★★★★★★
　　　　★★★★★★★★★★★★★★★★★★★★★
　　　★★★★★★★★★★★★★★★★★★★★★★★
　　★★★★★★★★★★★★★★★★★★★★★★★★★
　★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
　　　　　　　　　★★★★★★★★★★★
　　　　　　　　★★★★★★★★★★★★★
　　　　　　　★★★★★★★★★★★★★★★
　　　　　　★★★★★★★★★★★★★★★★★
　　　　　★★★★★★★★★★★★★★★★★★★
　　　　★★★★★★★★★★★★★★★★★★★★★
　　　★★★★★★★★★★★★★★★★★★★★★★★
　　★★★★★★★★★★★★★★★★★★★★★★★★★
　★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
　　　　　　　　　★★★★★★★★★★★
　　　　　　　　★★★★★★★★★★★★★
　　　　　　　★★★★★★★★★★★★★★★
　　　　　　★★★★★★★★★★★★★★★★★
　　　　　★★★★★★★★★★★★★★★★★★★
　　　　★★★★★★★★★★★★★★★★★★★★★
　　　★★★★★★★★★★★★★★★★★★★★★★★
　　★★★★★★★★★★★★★★★★★★★★★★★★★
　★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
                            ■
                            ■
                            ■
                            ■
                            ■
WWWWWWWWWWWWWWW　　　メリークリスマス！！　　　WWWWWWWWWWWWWWW
```

# コード

```python
# ツリーのパラメータ定義
top = 15      # 1段目の高さ
others = 10   # 2段目以降の高さ
step = 3      # 段の数
tree = 5      # ツリーの根の■の数

# 一番上の部分を作る
for i in range(1, top + 1):
  space_num = top - i
  start_num = 2 * i -1
  for j in range(space_num):
    print("　",end="")
  for j in range(start_num):
    print("★",end="")
  print()

# 二段目以降の部分を作る
for k in range(1, step):
  for i in range(top + 1 - others, top + 1):
	  space_num = top - i
	  start_num = 2 * i - 1
	  for j in range(space_num):
	    print("　",end="")
	  for j in range(start_num):
	  	print("★",end="")
	  print()

# ツリーの根の部分を作る
for i in range(tree):
	for j in range(2 * top - 2):
		print(" ",end = "")
	print("■")

# メッセージ表示
print("WWWWWWWWWWWWWWW　　　メリークリスマス！！　　　WWWWWWWWWWWWWWW")
```

# きっかけ

先日、Qiitaでも著名で自然言語処理の第一人者、かつ**「[今シンガポールにいますLineBot](https://qiita.com/youwht/items/014aa6e69657c5070593)」**、**「[てきとりす](https://qiita.com/youwht/items/ab960d33e0e281b269a6)」**など数々のクソアプリも開発している**@youwht**さんが**「[コピペで簡単実行！キテレツおもしろ自然言語処理 PythonとColaboratoryで身につく基礎の基礎](https://www.amazon.co.jp/dp/4798170267?tag=shoeishacom-22)」**を出版されました。

![B09JZ32G7W.01._SCLZZZZZZZ_SX500_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/c8c86253-2db3-955b-4b79-ab312cc639ef.jpeg)

私も早速この本を購入し、**自分でもなんかやってみよう！**と思い、この記事を書くに至りました。
こちらの書籍の第1章に、**1行で愛を作る**コードが書かれています。

```python
print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0else' ') for x in  range(-30, 30)]) for y in  range(15, -15, -1)]))
```
![heart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/1eb2d7cf-7c9e-c16b-1679-0cdb8c765e83.png)

私の場合、1行とは行きませんでしたが、この書籍の「はじめに」に書かれている

> 映画に出てくるスーパーハッカーは、黒と緑の画面を見つめながら「よーしいい子だ」「ビンゴ！」とかやっていますがあれはフィクションです。実際のプログラマーの多くは、Google検索や過去に書いたコードからサンプルをコピペしてちょっと書き換える、という作業をしています。

と同様に、**[ググって見つけたコード](https://www.codetd.com/ja/article/12457692)を自分なりに改変**してクリスマスツリーを完成させました。
（なのでコードに関してはいろいろツッコミどころがあると思いますが・・）

# Google Colaboratoryを使ってみる

**[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)**を使えば、ブラウザからクラウド上の環境を使ってPythonのコードを動かすことが可能です。
PCにPythonをインストールするなど環境構築をする必要ありません。Googleアカウントさえあればすぐに始められます。超絶便利で、しかも無料です。

https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

上記にアクセスしたら、まず「ノートブックを新規作成」をクリックします。
Googleアカウントでログインしてない場合は、ここでログインが求められます。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/24d266f2-a35f-3f86-a9dd-b1422cd04bb3.png)

すると下記のように、コードを書くことができる画面が出てきました

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/9e2fc824-0509-9c0d-d059-0dd6008b7d97.png)

ここで、冒頭で紹介したクリスマスツリーを描くコードをコピペします。

そして左にある実行ボタンをクリックします。
（画面を開いて最初に実行する際は、バックグラウンドでサーバを起動しているため5～10秒程度待たされます。2回目からは一瞬で実行できます。）

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/390b44bf-fb4d-d2f9-93b4-4714c3c2ed00.png)

すると出力結果が出てきました。
なお、コードの冒頭で定義しているパラメータの数字を少しイジるとツリーの形が変わります。

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/cb115243-d260-180c-4945-81530655fc9f.png)

こんな感じで簡単に使うことができます。
私の過去の記事**「[機械学習初心者がテレビゲームの売上データセットを使って回帰モデル・分類モデルを作成してみた](https://qiita.com/hamham/items/eb1a1f276631bb9334aa)」**でも、Google Colaboratoryを使っています。

# さいごに

ということで、**[KDDI Engineer&Designer Advent Calendar 2021](https://qiita.com/advent-calendar/2021/engineer-designer)**の24日目、クリスマスイブにちなんだ投稿でした。