何もない状況から低コストでプログラミングを学ぶ方法を考えてみた。(Mac編)

# Background 
- [全国の小中学生に提供する27万8000円のパソコンのスペックが低すぎて批判殺到！](https://kogusoku.com/archives/26623)
    - [痛いニュース](http://blog.livedoor.jp/dqnplus/archives/1997626.html)
    - [NewsPicks](https://newspicks.com/news/4592859)

のニュースを見て高い！！！
と思ってしまいました。

コメントでリース代の話が出てますが、壊れやすいのはマウスキーボードくらいで本体まではそこまでではないと思います。ソフト代含めて10万くらいじゃねと思ったりしました。スペックを問題視する人がいますがWordかExcelを開くか軽量級の開発環境があるだけだったらこれで十分な気がします。このPCでyoutuberの動画を頻繁に見る必要性がないので。

本体が壊れそうな想定としては学校自体がヒャッハーなのか、学生自体にレベル5の特殊能力があってマシンと相性が悪いとかぐらいでしょうか。

<img src="https://i0.wp.com/jumpmatome2ch.biz/wp-content/uploads/2017/12/o0640054313142320573.jpg?zoom=2&resize=592%2C502" width=50%>

# Motive

で、学校で学んだことを復習したい！
と思う学生がいると思うのですが、この失われた３０年で格差社会となったために中には家庭的な事情でお金がないひとが結構いるのではと想定されます。

少なくとも慢性的に科学分野では予算不足だけではなく開発者もいない状況です。
特に人工知能は思っている以上に分野が広いので、専門的な数学があるのがベストなのですが文系的なアプローチから乱入して今ある数値計算をツールとして最低限扱えればいいのかなと思っています。

また、研究しなくても情報系にあまり関わりのない業種でもスキルとしてあった方が良いと思っています。
必須ではないですが、プログラミングを学ぶメリットの一つとしては７人必要な作業を3人まで減らすことや作業時間短縮などの作業自動化による効率化ができるので普通に良いはずです。

*AIで仕事が奪われる*
というひとがメディアでは結構います。
特にブームになった数年前はかなり言われていました。

しかしながら、AIでできることとできないことを考えるとできないことの方が多いです。
もしこの段階で成熟していればお掃除ロボにとってかわって清掃業者が別の職種に移っているのではと思っています。でもまだいます。:robot:

そのため、少なくとも10年くらいはAIはまだ学習中なので多少の自動化をしても今までやってきた作業の負担が軽減するだけで、給料低下や失業する心配はなく、メリットの方が大きいです。

それで、
格差社会からちょっと抜け出して安定した給料を得たい！
と思っているならば、
:smoking::beer::chocolate_bar::tv::iphone::video_game::slot_machine::race_car::soccer::baseball::basketball::fishing_pole_and_fish::microphone::tent:
にはあまり使わずに数万円くらいためて自分のスキル・学習に投資に使ってみてほしい:bangbang:

ここでは何もない状況からプログラミングを学ぶ方法を考えてみました。

# Actor

対象者は以下の通りです。

1. 中卒・高卒で情報科学に疎いひと
2. 一回もPCを持ったことがない未経験者(スマホしかないひとが多いみたい)
3. 定年退職した後の趣味にしたい

そもそも、qiitaの存在すら知らない場合はどうしよう:thinking:

# Plan

シンブルに学びたい場合は、

- OS:Mac
- 言語:Python

が一番良い組み合わせだと思います。

なぜなら、ターミナルというアプリひとつでプログラムが出来てしまうからです。
<img width="５０%" alt="other.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/fd72f665-06a6-25c7-20d8-74f9277ea38a.png">
<img width="５０%" alt="terminal.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/09f67642-a0dd-cba5-536e-00ac71a78e13.png">

で、アプリを実行すると、、、

<img width="50%" alt="tarminal_blank.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/b11db199-88a6-f1c7-261d-6269adf1ad66.png">

こんな画面が出ると思います。(デフォルトは背景色は白です。)

で何もしないで、`python`と打つと

```bash
$ python
Python 2.7.16 (v2.7.16:413a49145e, Mar  2 2019, 14:32:10) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
```

とメッセージが出るのでこれでプログラムが打てます。

試しに円の面積を出してみます。

公式は、

```math
S = \pi \times r^{2}
```

っすね。

面積計算用の関数を作ってみると、、、
<img width="730" alt="terminal_python.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/8cc254c6-a2ee-9b5a-1bbb-7a431c7aef99.png">

といった感じで半径が３だった場合の面積が計算されました。

[KEISAN 円の面積](https://keisan.casio.jp/exec/system/1161228790)
で計算すると、、、
<img width="50%" alt="circle.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/dd0767dc-e35a-3e17-b43c-493b4be18117.png">

合ってますね。
あとは参考書(1000~2000円)を買って写経(書いてあるコードをそのまま書き写す)すれば良さそうです。

### Why Mac?

その時のトレンドもあって2000年代はPCはWindows一択だったのですが、最近はMacを勧めます。
将来的にWord・Excel(VBA)・PowerPointを使う機会があればいいのですが、サーバサイドでの開発をしてみたい場合は先ほどのterminalひとつでアクセスして開発することを考えるとMacの方が相性が良いからです。
大抵のサーバOSはLinux系でMacとの親和性が高いです。

### Why Python?

先ほどの通りターミナルひとつでプログラムができることもひとつの理由なのですが、他にも

- 実行がコマンドひとつでできる
- 文字列処理が他の言語より容易
    - 少なくともC++よりは良い
- 標準でリスト・辞書が使える
- パッケージが豊富
    - 何かしたいなと思ったら結構できます。
- Pythonコードが書ければRuby・JavaScriptもなんとかなる

などがあります。

# Price

新品のMacを買おうとすると少なくとも約10万くらいするのですが、学習のみの用途でターミナルだけ使いたい場合はフリマサイトで
*5千円~2万円*
と中古で売っているもので十分です。
重量が重く、最新のOSに更新することはできないですが2007年発売のものでも問題ないです。

コメントでバッテリーがすぐ切れるといった問題がありますが、自宅か近所のカフェ・コンビニで学ぶ分には良いと思います。また、動作が重いといったものだったらこのPCにはECサイトなどで買い物しないなどの個人情報をなるべく入力しないようにすれば問題ないと思います。

よくあるフリマサイト
- [メルカリ](https://www.mercari.com/jp/search/?sort_order=&keyword=Apple+Macbook&category_root=&brand_name=&brand_id=&size_group=&price_min=5000&price_max=20000)
- [ラクマ](https://fril.jp/s?query=Apple%20Macbook&min=5000&max=20000)
- [PayPayフリマ](https://paypayfleamarket.yahoo.co.jp/search/apple%20macbook%20?page=1&open=1)

# PostScript

- Pythonを学ぶ時の本・サイトなど
- Mac以外で低コストで学ぶ方法
- このままだとPythonのバージョンが古いままなので、新しいものにシフトするには

と書くこと多いです:expressionless:

なぜ、見出しが英語かと言いますと単純に使っていないと忘れるのと雰囲気だけ意識高い系になれると思ったからでそれ以上の意味はないです。