見出し画像

PyCharmでPython学習中。夜のSNS禁止はやるべきことに集中できる環境

ChromeにnoteやTwitter XやYouTubeへのアクセス可能時間を制限するアドオンを入れてから、夜10時以降にほとんどnoteを書けなくなった。(例外的に許可することは可能)よほどのことがない限りこの例外を使ってnoteに投稿することはしなくなった。

(約 5,500文字の記事です。)


夜思いつくアイディアは、いいものなのかどうか

夜寝る前にnoteに書きたいアイディアはかなり浮かんでくるものの、寝て起きて今になったらほとんど忘れてしまったw おそらくどうでもいいことがポップアップしてきたのだろうが、寝て起きて忘れるってことはその程度だったのだろう。

そしてもしnoteに日記を付けていれば1記事1時間は消えていた。その分だけ睡眠時間が減ったわけだが、夜10時を過ぎているので「ま、いっか」で睡眠+1時間確保なわけなので、やはり意味があったと思う。3日間もまともな日記を書かなかった=1日1時間余計に寝ることができた、という意味では、note日記を書かないことで1時間の睡眠を確保できたので「書かないことに意味があった」とも言える。

その分だけ、書きたい記事に時間をしっかり使えるとも言える。


Python学習中。オブジェクト指向の章へ

Python学習もObject-Oriented Programming, OOPの章へ。クラスだとかメソッドだとか出てくる、あのややこしい奴ね。

そしてrepelitというブラウザベースのオンラインPython環境からPyCharm Pro体験版へ。無料のCommunity版よりも予測変換が秀逸で1行丸ごと予測してくれるツワモノ。なので体験期間が終了してもProを継続して使う予定。

なんで1行丸ごと予測できるのか意味不明。どういう仕組みなんだ……?しかもオンライン環境なしでPC内環境のみで実現させているという意味不明なテクノロジー。


PyCharmに慣れてきた

PyCharmは3DCGにおけるBlenderとかMayaみたい。最初は色んなボタンや項目があって面食らう。だが少しずつ教材と共に触っていくと,教材が少しずつ便利機能を紹介してくれる。また自分で公式サイトを見たりChatGPTから教わったりして少しずつPyCharmの便利さが分かってきた。やはりプログラミング言語を学ぶ上でIDE環境のサポート機能は強力だ。

今回はPython1本でとことん突き詰めたいのでPyCharmが私にピッタリなのだろう。まだまだVisual なんちゃらとかを使わなくてもよさそう。というかPython限定ならばPyCharmが一番いいらしい。知らんけど。初心者の今の時点でIDEを検討するのは分不相応なのでとことんPyCharm Proをしゃぶりつくそうと思っている。

早くPySideを使って、PyAutoGUIを使ってWindowsアプリを作りたい。それがそもそもの目的&モチベーション。

日本語IUと英語UIでは設定内容が個別&設定UIが異なる

これは罠だった。日本語UIで設定した内容があったのだが、英語UIに切り替えたら別の設定になっていた。どうやら言語UIごとに設定内容が個別に保存されているらしい。またインスペクションのUIが日本語UIと英語UIで異なる。う~ん、どういう実装だ?初めて見たよ、言語ごとにUIが変わるソフト。普通は英語フォントが日本語フォントに差し替わるだけという実装がほとんどだが、まさかチェックボックスの位置などが変わるとは思わなかった。

またUI切り替えにはPyCharm再起動が必要だが、それだけで切り替え可能なので今はとりあえず教材が英語なので英語UIで利用中。困ったら日本語UIにしみてみるという運用。言語だけじゃなくてレイアウトも微妙に変わるというのがどうにも引っかかるので英語UIをベースにする予定。



相変わらずChatGPT先生が炸裂中

PythonのみならずPyCharmなどに関する謎も深まるばかり。これは何だ?あれは何だ?どうしてエラーなの?などなど、もしかしたらPyCharm Pro版特有の問題だったりするかも、となるとGoogle検索でもなかなか見つけられない問題もある。そんな時にはChatGPT先生に質問するとほぼ解決する。

だんだんと「これはGoogleで解決できそう」「これはすぐにChatGPTに効いた方が早そう」という分かれ目が分かってきた。定型的、形式的、ぱっと見で答えが出てきそうな質問はGoogle検索でいい。だがケースバイケースのような「固有の現象に関わる問題点」についてはChatGPTがスパッと答えてくれることが多い。学習データの中に「Python初心者アルアル、PyCharm初心者アルアル」データが含まれている場合にはスパッと答えてくれる。これは逆にGoogle検索では見つけにくい。

ChatGPTで感動的なまでの鮮やかな問題解決に出会うたびにnoteに感動日記を書き起こしたくなる衝動がある😍だが時間の無駄になるので抑えているが、本当に、鮮やかにChatGPTはGoogle検索では時間のかかる答えをスパッと教えてくれる。Python学習では、本当に頼もしい家庭教師だ。

「これって何?」という質問ができるのがいい

Google検索だと「探したい物の固有名詞」を探し出さないと検索できないというジレンマがある。だがChatGPTだと人に聞くように「これこれこういうものがあるのですが、これは何ですか?どんなときに使いますか?どんな役に立ちますか?参考例を教えて下さい。」と聞ける。例えば最近の例だとこれ。

PyCharm初心者です。コーディング中に電球アイコンがポップアップ表示されるのですが、これは何ですか?

インスペクションという機能らしい。だが知らなくてもChatGPTに質問できるのがGoogle検索との違い。そんな感じ。ChatGPTはその固有名詞とその機能、どんな利便性があるかなどを丁寧に教えてくれる。他にも例えば、

関数定義した上の行に「1 usage」と出るのだがこれは何?消せる?どんな意味?何の役に立つの?

などという聞き方もできる。これはさすがにGoogle検索だと答えに辿り着くのに数分はかかる。だがChatGPTならば日本語でOKでしかも数秒後に答えが分かる。凄い!

他にも例えば、

PyCharm初心者です。Python 3.10を使っています。練習で新規プロジェクトごとにPython 3.10の実行ファイルと実行環境ファイル群がHDDのフォルダに増産されます。プロジェクトごとにPython環境をPyCharmがコピーするメリットは何ですか?私はできれば無駄にPython環境の複製を作りたくないのです。1つの環境を使い回すことはできますか?その設定方法は?

などというように,本当に人に質問するように聞ける。そして丁寧な答えが返ってきた。結局、Python学習中で大したソースコードを書かないうちは、1つ作ったテスト用のPython環境を明示的に指定して無駄にファイルのコピーを作らないでいく作戦を採用。


3割くらいは平気で嘘をつくがw

逆にPyCharmの設定関連の答えは30%くらいの確率でしらっと嘘をつくw 
その設定項目、ないんですけど?となる。やはりマイナーな情報については精度が悪い。Pythonというプログラミング言語やトラブルシュートについては膨大な情報源があるだろうからかなり正確だが。


どんどん増える知識はUpNoteにメモ&どんどん枝分かれ整理術

最初はPython学習メモという1つのメモだが、気が付けば色々とメモが増えて枝分かれしてきた。

  • 今学習中のメインのメモ

  • ある程度ジャンルが固まったので「OOP」「正規表現」など別メモに移植

  • メインメモにその別メモへのリンク貼り付けして目次化

  • PyCharm専用メモ

  • PyCharm設定変更履歴

などなど気が付けば25個のメモに枝分かれ中😱縦に長くなったり分野がある程度固まったらどんどん別メモに切り出し、必要なメモにメモ用リンクを貼ればワンクリックで相互に移動可能。

UpNoteの使い方の詳細は私の有料マガジンにある知識で全てカバーできています。実際に使いながら記事を書いていますし、新たな知見もマガジンに随時追加しています。自分で使って育てて、ついでに売るスタイル😍

さすがにここまでくると「あれ~、確かこのキーワード、UpNoteにメモしたところまでは覚えているのだけれど、どこだっけ?」が頻発する。それでもUpNoteはEvernoteよりも遥かに検索しやすい。1つのキーワードについて複数メモや1メモ内の複数箇所を高速で黙視確認できるから便利。その点も有料マガジンでカバーしています。


主要なメモにはアイコン画像を添付すると楽しい😍

最初は文字だらけの殺風景なUpNoteだったが、タイトルの下くらいに小さなアイコン画像を添付するとノートブックの見た目が楽しくなる。また主要なメモを探しやすくなる。

ただしあまりにもアイコン画像にこだわると無駄に時間を吸い取られるのでほどほどに。あくまでも自分自身で見分けが付きやすいようにするためだけなので、あまりアイコン作りに熱中しないようにw

Adobe ExpressやCanvaなどでサムネやアイキャッチ画像にはまりやすい人は特に注意w


何だか色々話がとっちらかってきたののでこの辺でまとめます。


プログラミングはIDEで楽に入力できるようになってからが楽しい

print()で地道にコンソールと対話しているうちはつまらない。だがオブジェクト指向プログラミングなどで実践的な練習に入ってくるとIDEが便利だし入力補完も強力。そしてできることがどんどんリッチになっていくのでここからが楽しくなってくる。でも地味な組み込み関数やPythonの特徴などを抑えないといきなりここに来ても目が点になる。

プログラミング言語も自然言語と一緒で、ある程度の知識量が溜まって、できることを自由に組み合わせられるようになってきてからが楽しい。なのでそこに辿り着くまでの地味な学習と理解の繰り返しの蓄積、これがまずは必要。そうするとようやくブレークスルーできるようになる。

なのでプログラミングも言語学習なので、ある程度は地道な理解学習と暗記学習の積み重ねになる。

ただしAIやChatGPTが登場したことでコーディングの補完の精度も上がり、今まで通り「である必要はない」とも感じている。

何のために、それをやるのか?(逆にやらないべきか?)

今までのレガシーなスタイルだとプログラミング言語は「タイピングしてナンボ」というスパルタな面があったと思う。しかも学習ソースが本しか無かった時代、自分でキーボードをタイピングしないと動作確認ができなかったので、いやおうなしにタイピングが必要だった。

だが時代は変わり、AI補完で1行スパッとTABキー一発なことも増えた。

何のためのタイピング?何のためのコーディング?ここを私は今見直している。

タイピングは手段であって目的ではない

何のためにキーボードを叩くのか?これを深く考える必要がでてきたと思う。

  • 覚えるために打つ?>暗記カードや暗記アプリでよくね?全部打たなくてもよくね?AIでの補完が効くなら部分的タイピングでよくね?

  • 構文を覚える?>インスペクタが注意してくれるのでそれに従って徐々に覚えることになるので、タイピングしながら覚える必要なくね?(人は慣れる)

  • 関数を覚える必要なくね?>速度重視のプロの現場ならいざ知らず、個人開発ならばその都度ChatGPTに効いて「即使えるコード」をコピペ整形で実装すればよくね?(自分の知識以上の効率的なソースコードが手に入るので)

  • タイピングによる細部を詰めるよりも、ChatGPTを使ってコードをつぎはぎしつつ、教材などでケーススタディーを通じて「アプリ全体で成し遂げたい全体の流れや設計思想、アイディア、実装手順」や「古典的なアルゴリズム」の引き出しを増やすほうがプログラマとしての成長が早いのでは?

なので時間配分としてあまりタイピング作業に時間をかけるメリットはないような気がしている。この点がレガシーなプログラミング学習とAI時代の学び方の違いになるかも知れない。


たまにAdobe Expressでサムネ作りw

せっかくなので、5分で作成。やはり息抜きにアイキャッチ画像作りはいい趣味かも知れない。Adobe Express学習も復活させたいなぁ。


今回の創作活動は約1時間(累積 約3,824時間)
(1,083回目のnote更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonでお買物をするとその購入額の1~3%ほどのお小遣いが私に寄付されます。誰が何を買ったという情報は私には通知されませんのでご安心下さい😊 以下のリンクを経由して頂ければ紹介商品以外のご購入でもOKですよ~。

2年前に1.4万円台で買ったこのキーボードが今や約2万円とは……😱



読んでくれてありがとう。気長にマイペースに書いてます。この出会いに感謝😊