泡沫記

備忘録あるいは自分の背骨

2021の1月にやり始めたこと

移り気なワタクシ。Webアプリを作るんだ!と意気込んでいたはずなのだが迷走中。xv6という教育用OSの教材を再び読み始め、やっぱりC言語読めないかんわとポインタを学び、なぜかRustにも手を出して「Rust Programming Language」を読み始め、現在couseraの「From Nand to Tetris」を視聴しているという。これが終わったから次はこれと手を出せばいいのだろうけど、どれもこれも終わってはいない。同時並行で気が向いたらあれを開き、こっちを見て、それを読む。自分でもオレは一体何がしたいんだろうと思う。でも面白いなっていう感覚には忠実に動いている。ずっとOSの仕組みとかに興味はあった。「CPUの創りかた」も読んだことがある(忘れたけど)。「30日でできるOS自作入門」も手を出して挫折した。それでも関心は未だに続いている。それが今回何のきっかけか爆発したっぽい。そういや「はじめて読む486」も再開したな。今まで色々手を出してきて、ぽつりぽつりと残った点の知識が線で繋がり始めた感覚がある。ああこれってこういうことか、あの知識があったからこの文の意味もわかるぞ、なんだそういうことだったのかと、妙に楽しい。たぶんちょっと見える世界が広がったからだ。この楽しさを誰かと分かち合いたいけれど、おいそれ簡単にはできないので、ちょっと残念だなと思う。おっさんになって集中力もスタミナも衰えてきたはずなのに、前よりも追い続けられているのは、おそらくなけなしのエネルギーをひとつの方向に定められるようになったからか。しばらくしたらまた中断して飽きて放ってしまうのかもしれない。でもたぶんまたいつか再開するんだろう。そういう諦めだけは悪いから。このなかでひとつでも完走できたらオレの勝ち。

2020年振り返り

Programmingの勉強を本格的に始めたのが2018年の12月。すでに2年が経ったわけだがまだBeginnerの域を抜けず。ただPython, Django, JavaScript, React などでそれなりに知識を得たので、前に比べてマシになったはずと、自分を褒めておく。駄目だ駄目だだけではやってられん。大きな成果と言えばDjangoの理解が進んだこと。こんなことがしてみたいなとアイデアを思いついたときに、こうすればいいかとある程度の目算がつくようになった。自分でアプリを作ってそれをQiitaの記事にすることでひとつ壁を乗り越えた気がする。そういえばQiitaのある記事が10000 view超え。これも嬉しかった。単に設定方法を記事にしただけだが、Googleで検索上位になったせいかコンスタントに訪問者があり大台に乗る。別にエキスパートじゃなくても人様の役に立つことができるんだとわかった。特に初心者目線は学びはじめの頃しかできないことだからそれなりに役立ったんだろう。本当はもっと記事を量産してみたいという気持ちはあるけれども、自分の知識が追いついていないのがもどかしい。Programmingを仕事にしているなら、そこから学ぶべきことも多いだろうし成長スピードも早いんだろうなぁ、羨ましいなぁと思うが、人と比較しはじめたらどうにもこうにもドツボにはまるしかないので、自分のペースで少しずつでも学んで行こうと思う。さて2021年は浅く広くだった知識を深くしたい。何かひとつWebサービスをつくって公開すること、そのスマホアプリも作成すること、この2つを目標とする。我が進む道我のみぞ知る。

自作PCでLinux(Ubuntu) に不具合生じる

自作PCRyzen 5 3600 と NVIDIA GTX1660)にUbuntu 20.04LTSのっけて運用中だったが、どうも不具合が多い。スリープから復帰すると、ChromeVSCodeの一部が真っ黒で表示されなかったり、音声が出なくなったりする。やや不満を抱きながらも使い続けていたら、一昨日wifiが繋がらなくなって、settingをイジっても駄目、というよりwifiのsetting自体ができなくなった。こりゃアカンなと匙を投げ、再インストールを試みるも上手く起動できず諦め、Ubuntuが入っていたSSDを取り外して今に至る。原因不明。SSDが悪いのか、Ubuntuのバージョンなのか、RyzenLinuxの相性なのか、はたまたNVIDIAとの相性なのか。ひとつひとつ原因を切り分けて検証するのもめんどうなので、自作PCWindowsオンリーで使うことにする。

ThinkPad T440p は全く不具合も出ずスリープからの復帰も正常で、ド安定。この安心感がたまらなく良い。CPUのPassmarkではトリプルスコアほど速さが違うはずなのに、通常使いでは全然気にならず、アレ?自作PCもしかして宝の持ち腐れか?「そこそこ速いマシンあるもんね、こんなこともあんなこともできるもんね」という自己満足は物欲を抑える精神安定剤として役に立っているのだけれど…。ネットではProgrammingに向いたパソコンとかいってやたら高価なモノがオススメされたりしていたが、実態を知ると型落ちだろうが5年モノだろうが全然大丈夫。いやそれは未だに自分が初心者Programmerで、浅瀬でちゃぷちゃぷやっているだけ、深淵を知らないからなのかもしれないけれど。

でもMacBook Air 欲しいよね。

Webアプリをつくるときに必要な知識

Create a Twitter-like App with Python Django JavaScript and React. Full TUTORIAL - YouTube

これを視聴中。やろうと決心して1ヶ月以上経ちどこまで進んだのかというと、実はしばらく前から70レッスン前後でいったん戦線離脱。見て手を動かしてcodeを読んでわからないと喚き、ググり調べて迷走して発見し、復習し勉強しまたやりなおし…12時間では終わらんわ、3倍以上時間かかるわと自分の知識のなさを嘆いても仕方がない。ちょっとずつ前に進んでいる手応えはあるのでリベンジマッチはあり。でももうちょっと勉強する。もがきながら感じたことをメモっておく。

人のプログラミングしている様子を見ると、ツールの使い方やバグったときの対処法が見られて面白い

「あ、これってこういう使い方するんだ」「え?そうやってデバッグするんの!」「やだ、惚れちゃう」と素晴らしく勉強になる。ただバグってもあれよあれよという間に直しちゃったりして、なんでそんなことができるんだ、何でこんなコードを書いたんだ、どういう意味なんだ、さっぱりわからんと落ち込む原因にもなる。

ReactとDjangoつなげるときDjango REST Framework が必要

どうやってデータのやりとりしてるのかと思っていたら、JSON形式にしてやり取りしてるってことを学んだ。Django REST Frameworkがなぜあるのかって、データをJSON形式にするため。ググると「エンドポイント」という言葉が出てきて何なの?と疑問だったが、何のことはない、JSONが吐き出されたwebページってことで、DjangoとReactの出会いの場みたいなもんだった。

Web APIAjaxの知識が必要

XMLHttpRequestという命令?を使ってクライアントがサーバーとやりとりすることも学ぶ。最近はfetchらしいが。非同期通信という言葉も初めて知る。JavaScriptをもっとしっかり勉強しなきゃって思った。あまりにもサラッと流しすぎたなと反省。そしてJavaScriptを勉強するための環境構築で、サーバーを建てるのどうすりゃいいんだろうと悩んでいたら、python -m http.server 8000 という1行で済むことを知り驚愕。ひと昔前、LAMPだなんだかんだとやった経験がある身としては、何だコレ感が凄い。VSCodeでLive Server の機能拡張でも一瞬で済む。溜息が出る。

ReactってClassコンポーネントよりHooks使った関数コンポーネントの方が今や主流みたいだ

本家のチュートリアルをやった身としては、おいおい回り道させんじゃないよという感想。React Hooks ばっかり使ってるやないかと。そっちの方を最優先のチュートリアルにしてくれよと。そして思う。「作用・副作用」という訳語は何とかならんかったのかと。副作用というと薬をイメージしてしまってどうしても馴染めない。明治時代の作家は偉大なる翻訳家で、西洋の概念をうまく翻訳して日本に輸入し、新たな日本語を構築するのに多大なる貢献を果たしたと聞くが、プログラミングの世界も偉大なる翻訳家が必要なのではなかろうか。カタカナのままでの使用もコンセンサスがアライアンスできなくてウィンウィンにならないのでワケワカメ。

さて勉強続けよう…

Django 中級者になるために

ボチボチながら勉強し続けてDjangoの初級レベル(ある程度の仕組みがわかってコードが読めるレベル)にはなった。調子に乗ってFreeCodeCampでReactとReduxに手を出した。さらに欲が出てFlutterもちょいとかじった。が、どれもこれも中途半端。ぼんやりと理解できた気がするものの、ゴリゴリコードを書くことができるわけでもない。なんとなく行き詰まってどうしよう、やっぱりちゃんと腰を据えて勉強しなきゃ、どうすりゃいい?そうだ自作アプリが一番勉強になるって記事があったよなと、作ってみたいアプリを考える。ところが、アレがやってみたいコレがやってみたい、と希望はあるもののどうすればそれが技術的に可能なのかわからない。ここに大変大きなギャップがあって、たぶん初心者がProgrammingを挫折しがちなのは、このギャップを埋めようと四苦八苦するうちに疲れちゃって先が見えなくて心が折れて諦めてしまうからだ。自分ができることがひとつひとつ増えたら、次はこんなことが出来そうだ、あれはどうなってるんだ?とアイデアが湧いて作ってみて試して改良して経験積んでスキルアップして…と好循環で回るんだろう。だからまだまだ知識や経験を貯め込む段階なんだなと自己分析している。で、色々ググってみて次のステップアップのためにコレをやってみようかと。

Create a Twitter-like App with Python Django JavaScript and React. Full TUTORIAL GitHub

12時間以上(12:39:44)に及ぶ内容、110レッスン、すべて無料という太っ腹。こんなものタダで公開していいのか?と驚く。内容を見る限り、Django REST Framework も React もBootStrap も JavaScript も学べそうなので願ったり叶ったり。ただ覚悟を決めて取り組まないと途中で挫折しそう。学ばなきゃいけないことは腐るほどあるだろうし。 ただコレを完走できたならひと回りもふた周りも成長しているはずだ。気づいたことや学んだことをこのブログに記録する予定。さぁレッツゴー。

ThinkPad T440p も USキーボードに変更する

HHKBを使い始めると、愛機ThinkPadのキーボードも英語配列にしたくなる。Amazonヤフオクで出品されているものはどうも海外発送で時間がかかりそう。やってみたいことはすぐじゃないと気がすまない堪え性のないワタクシなので、国内発送のすぐ届くやつをと調べていたら楽天市場に良さげなものがあったので注文。やや割高になってしまったけれど時間を買ったと思って後悔しない。ブツが届いて換装自体は四苦八苦しながらも無事に終わった。感想はと言えば、ややザラついたキートップ、うち心地も若干前と違う気もするけれど、2〜3日経つと慣れた。配列はHHKBとも違うところがあり、意識して気をつけなきゃならない。トラックポイントがやや軽くなったような気もする。総じて満足。デザインがスッキリして男前が上がった?Programmingしやすいというのも多少はうなずけるが誤差の範囲。徐々に身体に染み込んでいくのを感じているが、もっと無意識にタイピングできるように慣れないと。これでデスクトップにしろノートにしろ英語配列にしたわけで、言い訳せずにProgrammingの勉強をしろってこった。それにしてもThinkPadの、いやT440pのと言おうか、メンテナンスのしやすさというのは半端ない。裏のネジをちょこっと緩めたらすぐメモリとSSDにアクセスできるし、キーボードの交換も裏を開けるまでもなく即交換可能。i7-4710MQ は6年前のCPUなのに、最新のノートパソコンと比較しても、ベンチマークはそんなに負けてない。無骨だが頼れる相棒で、いやなにこれからもよろしく。

もう一度 HHKB(英語配列)に挑戦する

ゲーミングキーボードをずっと使っていたら、慣れてしまったのか新鮮味が感じられなくなってしまったので、気分転換にもう一度HHKB(英語配列)に挑戦してみようという気持ちになる。ちょこちょこ入力ミスしてしまうのも原因。自分の手に1番合っているのは、本当は仕事場で使っている7年前のノートパソコンなんだろう。もしくは愛用のThinkPad。デスクトップのキーボードだとサイズの違いなのか微妙にズレてて入力ミスが多発するぽい。どうせミスするならいっそのこと手の動きも初期化して英語配列でもいいんじゃない?2万近く出して押入れに入れっぱなしももったいないし。と考えて再度挑戦することに。つくづく諦めの悪い男。

まずはじめにキーボードの設定を英語配列にすることから。

www.rough-and-cheap.jp

fctixはインストールしなかった。なるべくシンプルにしたかったので、そのままMozcの設定を変えて日本語入力可能にする方法はないかと探していたら

slacknotebook.com

これで日本語入力切り替えもバッチリと思ったらなぜかVSCodeに日本語入力できない。どうしようとググったら

qiita.com

単純に削除して再インストールして日本語入力可能に。英語配列に慣れるために何か練習できるサイトないかなぁと思っていたら

qiita.com

Symbol Typing

この Symbol Typing が自分の目的とすこぶる合致していて良い。何だろう。求めていた情報があっさり出てきてスムーズに事が進むというのは。年のせいにして諦める必要ないし、やっぱ言い訳に過ぎなかったんだなと。そして只今英語配列に馴染むべく修行中。