#はじめに
2020年3月、新型コロナウイルスの感染拡大により通っていた学校が休校になりました。外出自粛もあり、プログラミングを始めることに決め、今に至ります。
#前提 2020年3月までのプログラミング歴
2017年頃に親からScratchをやってみないかと尋ねられ、Scratch1.4をやったのが始まりでした。しばらくしてScratch2.0に移行しました。
本などは特に使わず、「習うより慣れろ」の形で続けていました。NHK_for_school「ワイワイプログラミング」の「Why!?大喜利」に何回か応募し、何回か入賞したりもしました。一時期はゲームよりのめり込んでいました。
しかし、Scratchに投稿された完成度の高いプロジェクトで遊ぶことのほうに熱中してしまい、Scratchでプログラミングすることは少なくなっていました。
その後、「10才からはじめるプログラミング図鑑 たのしくまなぶスクラッチ&Python超入門」という本を使ってPythonをやるようになりました。しかし、学校が忙しいのもあり、少しやってはやらなくなり、また1から初めてすぐやらなくなる、というのを数回繰り返していました。
#学校が休校になりPythonを始める
みなさんもご存知の通り、安倍元首相が全国の小中学校などに休校にするよう要請したことにより、自分が通っていた学校も休校になりました。
宿題はあるものの時間を持て余すようになり、そういえばやってみようと、前述の「10才からはじめるプログラミング図鑑」を使ってPythonを始めました。
数ヶ月かけ、その本を終わらせました。その本はオブジェクト指向の説明のない初心者向けのものでしたが、コンソールを使って遊んだりしていました。
#親のすすめによりProgateを始める(Python,HTML&CSS,Javascript)
皆さんご存知のProgateです。親から「これをやってみたら?」と誘われ、有料プランで始めてみました。
最初Pythonのレッスンをやっていたのですが、最初のうちは前述の本でやった内容なので、少し飛ばしてオブジェクト指向(クラスや継承)についてのレッスンをやりました。
スライドに従ってコードを書くことはできましたが、自分でクラスを使ってコードを書こうとするとできませんでした。要するにオブジェクト指向がなんのことか理解できませんでした。オブジェクト指向を使うメリットもよく分かりませんでした。
そのあと「これからの時代はインターネットだな」という根拠のわからないことを考え、HTML&CSS、Javascriptを始めました。レッスンは一通り終わらせましたが自分で作りたいものがなかったので学ぶだけでこのときは終わりました。
HTML&CSSコースは道場編(仕様書だけ渡されて、自分で作り上げる)をやりましたが、HTML&CSSの書き方を殆ど覚えておらず(paddingとmarginの違いもわからなかった)、意気消沈しました。
JavascriptもNode.jsをやってみましたがちんぷんかんぷん、やめてしまいました。原因は「作りたいものないけど役に立ちそうだから学んでみよう」という理由だと思います。平たく言うとモチベーション維持ができませんでした。
ちなみにHTML&CSS、Javascriptのお話はまた出てきます。
#Unityをやってみるが...
ゲームを作りたい!という思いがとても強かったわけではありませんが、Unityを使ってみたかったのでこのとき使っていた家族共用のWindowsにUnityをインストールしてみました。
ワクワクして起動させますが....
長い。
起動が長い。
苛立ちました。
このときはよく分かりませんでしたがこのWindowsは買って数年は経っている、メモリも4GB のものです。スペックが小さかったのかなと思います。
ですがUnityが起動してしまえば程々には動いたのでドットインストールの無料動画を使って一つシンプルなゲームを作ってみました。
ここでC#に初めて触れました。C#はさっぱりだったので別に学ぼうと考えました。Progateにはなかったのでpaizaラーニングに登録し、無料版でC#をやりました。最初に
//C#
Console.WriteLine("Hello World!");
というのをやるとき(超基本)よくCとWとLを大文字にするのを忘れました。行末に;を入れるのもよく忘れました。
#python3
print("Hello World!")
Pythonのシンプルさに感激しました。
(ちなみにこの後Javascriptをばっかり触ったあとにPythonをやると何回も行末に;を入れそうになったのは別のお話)
Unityの話に戻ります。
Windowsでの起動の遅さにしびれを切らし、Untyはこれ以降やっていません。またゲーム作りたくなったら考えるかもしれませんが。
C#も基本をさらったところで終わりました。(筆者は多少飽きっぽいです)
#パソコンをWindowsからChromebookへ
このとき使っていたWindowsは家族の共用パソコンでした。親もこのパソコンを使用していたため、また自分のプログラミングする時間が増えそうだったので、パソコンの移行が決まりました。
移行したのはChromebookです。3月から5月の学校の休校によりオンライン授業が始まる可能性があったため、親が購入しました。こちらのパソコンも家族共用ですが、メインのパソコンはWindowsのため、今は自分が95%ほど独占して使っています。
とりあえずPython使いたかったので(このころ一番マトモに書けたのがPython)Pythonの実行環境を入れようとしました。親の助けも借りて調べますがChromeOSのためなのか、対応しているものがあまりありませんでした。
最終的にAndroidアプリが使えるChromebookの特長を活かし、Playstoreから「Pydroid3」というIDEをダウンロードしました。日本語入力ができませんでしたが、それは他のメモアプリに入力したものをコピーアンドペーストすることで対応しました。
しばらくPythonのみメインで使っていたのでこのまま続きました。
#ネット情報をもとにsqlite3を使ってアプリを作る
アプリというよりソフトという方がしっくりきますが。
PythonとTkinter(これ以外GUIが使えなかった)、sqlite3(データベース)を使いました。
Python3,Tkinter,sqlite3でGUIアプリ(家計簿ソフト)を作りたい
こちらのサイトを参考にさせてもらいました。
自分は日記や読書記録をつけているのですが、それらをタグ付けしてデーターベースに保存し、検索できるソフトを作りたかったので、こちらのサイトをもとに、家計簿の要素のところを変更したりして、データベースソフトを作りました。
写経みたいに行っていましたが、Tkinterの使い方を知ることができました。
しかし、
日本語入力ができなかったため実用化するのは諦めました。技術の練習ということで。
#Linux導入、Kivyを学ぶ
Chromebookはベータ版ですがLinuxを導入できます。これからプログラミングする上でLinuxのほうが良いと思ったのでインストールしました。Debianがインストールできました。
このときCLIツールを初めて触りました。(ターミナル)妙に興奮しました。
ターミナルに慣れるためにProgateの「コマンドライン」レッスンを受けました。cd
やls
などの基本的なコマンドを学びました。現在は「こんなコマンドないかな」とGoogle検索しては実行しています。
Atomエディタを公式サイトからインストールしました。VScodeと悩みましたがこちらにしました。
ちなみにですが2020年11月現在のAtomの状況はこちら。
パッケージ
autoclose-html(HTMLの閉じタグを自動で挿入)
autocomplete-python(Pythonの自動補完)
color-picker(RGBなどで色の設定が可能)
japanise-menu(メニューなど日本語化)
language-kivy(PythonのGUIライブラリKivyのハイライト)
language-kotlin(Kotlinのハイライト)
minimap(コードを縮小したスクロールバーみたいな)
script(コード実行)
x-terminal(Atom内でターミナルを開く)
テーマ
インターフェーステーマ:Seti
シンタックステーマ:Atom Dark(デフォルト)
Atomも日本語入力できません。Linuxだからかもしれませんが。
Kivyを学びます。
Kivyをインストールするまでに悪戦苦闘しました。
pipが使えないので、pipenvという仮想環境を入れて、そこにCythonを入れた後Kivyを入れました。
Python Kivyの使い方① ~Kv Languageの基本~
Python Kivyの使い方② ~電卓を作成する~
Python Kivyの使い方③ ~WebAPIとの連携(リクエストの送受信から結果のリスト表示、複数画面の遷移まで、)~
こちらのサイトを参考にしました。
見た目はKivyのほうが好きですね。ですがいまいちKv languageの使い方がまだ慣れていません。今度Kivy使って自分用にアプリ作ろうと思っています。日本語の情報は少なめですが使いこなせるようになりたいです。
#再びHTML&CSS、JavaScriptを使ってツールを作る
もともとは、Atomエディタが日本語入力できないので日本語を使いたい度に、
1.GoogleKeepを開く
2.日本語を入力
3.マウスで文章を選択してコピー
4.Atomへ戻ってペースト
というのをしていました。が、これが面倒くさいと感じるようになりました。
「入力してボタンを押すだけでコピーできたら良いのに.....」
PythonでPyperclipというライブラリがあるの発見し、それを利用しようと思いましたがいちいちPythonプログラムを実行するのも面倒くさいなと考えました。
「そうだ!Web上に作ればすぐ使える!」
自分はプログラミングしているときは調べ物や何かのために必ずGoogleChromeが立ち上がっているので、自分専用のWebアプリのようなものを作ろうと思いました。
Progateを再び使ってHTML&CSSの基礎の基礎とJavaScriptの基礎をサラッとやりました。
後はネットで調べて調べました。そのうち
「目の休憩をするために30分と60分のタイマーを作ろう」
「Todoリスト的な編集可能なのを作ろう」
と思い、これらを合わせて一つのシンプルなWebアプリ(と呼べるのか?)にまとめました。
これらを作るときに参考にした記事
クリック一つでクリップボードにコピーする機能(HTMLとJavaScriptのみで実現)
あなたがまだ使っていないかもしれないHTML5の便利機能10選
Pure JavaScriptでカウントダウンタイマーを実装する
[ブラウザをテキストエディタっぽく使うサンプルを作ってみたら意外に単純にできますた]
(https://blog.56doc.net/Entry/508/)
このときにGoogleFontの使い方やHTMLの使い方も覚えることができました。
自分用に作ったものなのでここに公開するほどではないと思います。内容が知りたい方は上記の参考にさせていただいた記事を御覧ください。自分はこれらをベースに作りました。
#C言語をやる
この人いろんな言語に手出しているな、と思った方いるかも知れませんが。実際ここまでで少しでもやった言語は
HTML&CSS(これをプログラミング言語にカウントするかは微妙ですが)
JavaScript
Python
SQL(プログラミング言語にカウントするかは微妙ですが)
C#
です。このなかでC#は今は使っていません。でもJavaScriptと結構文法が近かった記憶があります。
C言語をやり始めました。
printf("Hello World!");
f何であるんだろうと思いました。
標準入力もめんどくさいと感じてしまいました。(比較対象はPythonです)
マクロやポインタもいまいち理解できていません。
#defineは定数みたいだなー、と勝手な解釈をしています。(正しい説明ではないと思います)
一方、C言語がC言語の後に生まれた殆どの言語に影響を与えていることが痛感できました。
例えば文末に;をつけるのはJavaScriptやC#でもそうです。for文もほとんど同じでした。
このままC言語をやってみようと思います。
#そして今
Webアプリとして作りたいものができたので、ProgateでNode.jsについて再び学んでみようかなと思っています。Flask(Pythonのフレームワーク)でやることも考えましたが、フロントエンドとバックエンドを統一したかったのでNode.jsにしました。
Reactもやるかもしれません。まだ分かりませんが。
Kotlinを使ってみようとして、SDKMANとKotlin,Javaをインストールしました。AndoridStudioをインストールしたいですがメモリ容量が怪しいのでインストールできていません。
vimの練習を始めています。
個人的に言語の仕組みに興味があるので、いろんな言語の文法だけでも知って比較してみたいですね。
あと意味があるか分かりませんが、プログラミング言語のコードを入力したら自動でどの言語か判定する、というのをPython使って作ってみたいです。
最後まで読んでいただきありがとうございました。