プログラミング始めて5ヶ月、これまでやったことを振り返る【その2】
この記事は、プログラミングやり始めて5ヶ月になって思うこと。【その1】の続きとして書いています。
プログラミングはじめて5ヶ月、ぼくは独学で勉強していたこともあって、おそらく、他の人から見ると非効率的な勉強をしてきたと思います。それでも、最近はコンピュータ周りのいろんなことがわかるようになってきたな〜と実感してます。
とりあえず、一旦これまでやってきたことを振り返って、これからやることを少し具体化してみようと思って記事を書いてます。
これまで勉強してきて、「この方法は良かったな」とか、「これはダメだったな」というようなことを書いてみたので、「これからプログラミングやろう!」という方の参考になればと思います!
1. これまでやってきたこと(羅列)
自分がこれまでやってきたことを時系列で羅列したいと思います。(結構抜け漏れがあるかも。)
・progate(HTML, CSS, Python, JavaScript)をそれぞれ三回くらいやる。
progateはやっててすごく楽しいですよね!やって良かったと思います。時々、周回は良くないって意見もあるんですが、ぼくはやりたいなら三回くらいやった方がいいと思います。ただし、1週間以上かけるのは効率悪いです。要は、周回するならスパンは短めにってところです。
・微分方程式をシミュレーションするコードを作る
この時のnoteの記事のリンクです。良かったら見てみてほしいです。実は、このコード間違ってたんですが、後々卒論で使ったのでまあOKです。コードみてみるとわかるんですが、めちゃくちゃなコード書いてますw。プログラミングは使う機会が会ったらどんどん使った方が勉強効率もモチベも高く維持できます。
あと、汚いコードとかをチェックするツールとして、flake8とかpep8っていうすごく便利なものがあるので、ググってみてください!
・UdemyでDjangoを勉強する
以下でUdemyで勉強したものを紹介するんですが、正直この順序で勉強したのは後悔しています。先にDjangoの公式チュートリアルをやれば良かったって思ってます。公式チュートリアルからやることをおすすめします。理解がかなり深まります。(というか、基本的にUdemyよりも公式チュートリアルから勉強するのがおすすめ)
ぼくはpythonに興味あったんで、最初はDjangoでなんか作ろうと思ってました。このコースは、講師の人が明るくて、内容も難しくないのでいいです。
2つ目のコースは、難しかったですが、matplotグラフをブラウザに表示させる方法とか勉強できるので、そこらへんに興味があればおすすめできます。
3個目のは、さくっとコロナの感染者数を表示するアプリが作れるコースです。APIってのを知った時は感動しました。API知らない人はとってみるといいかもです。
・微分方程式シミュレータ(Django)のデプロイ
初のアプリ公開をしました。今は公開していないですが、作り直して公開したい。ぼくはUdemyで3コースやってから自作アプリを作りましたが、1つコースとったら、その次は自作のものを作るのがいいと思います。
公式チュートリアルやってUdemyで1コースやれば、簡単なwebアプリならさくっと作れルと思います。あと、自作アプリを作ってアウトプットを挟んだ方が、知識が定着しやすいと思います。
・プログラミング言語・技術トレンドランキングを集計するwebアプリのデプロイ
2つ目のアプリです。デプロイまで割とすんなりできたんですが、コードの書き方とか、プロジェクト構造がいまいち良くないと感じてました。なので、この次はpythonの基礎的な部分を勉強したいと思い、Udemyで酒井潤さんのコースを受講しました。(酒井潤さんのコース)
・Udemyの酒井潤さんのpythonコースを使って勉強する
上のコースをやって、書いてるコードが理解できなくて挫折して、下のコースで基礎を固めて、上のコースに再トライという順でやりました。
酒井潤さんのコースは凄くおすすめで、特にpython3入門+応用のコースはPythonを動画で勉強したいという人には一番のおすすめです。
このコース受けてた時は、酒井さんが何言ってるのか良くわからないことも多かったんですが、最近になって、「あれって、こういうことだったのか!」ってことがあります。
あと、酒井さんはYoutubeでコーヒーとかマグカップの紹介動画挙げてて面白いので、みてみてください。
・掲示板アプリのデプロイ
3個目のwebアプリをデプロイしました。良くある掲示板です。
誰にも使われることのないクソ掲示板を作ってしまいました。
ちなみに、urlはこちらです。
・EDINETからXBRLファイルをダウンロードして、データベースに保存するアプリの作成
要は、有価証券報告書のデータベースを作ることをしてました。
この辺りで、プログラミング勉強開始後1ヶ月半経ってました。で、ここからなんですが、内定先の会社で勉強する内容に合わせて、Androidのアプリ開発(Java)を勉強してました。Android開発にはJavaを使ってます。
よく、Pythonは勉強しやすいっていう声を聞くんですが、ぼくは圧倒的にJavaの方が勉強しやすいと感じました。多分、Android Studioの開発環境が便利なことが大きな要因ですが、Javaの言語としての硬さ(ルールの硬さ, pythonは適当に書いても動いてしまう)も要因です。多分、Javaの方がオブジェクト思考なる者のイメージもつきやすいと思います。プログラミング難しいと感じたら、Javaからやってみるといいかもです!
・UdemyでAndroid(Java)の勉強をする。
・ITパスポートの勉強
ITパスポートの資格取得自体は、大学生なら勉強しなくても可能なレベルなので、ITパスポートの資格取得は意味ないという意見はわかるんですが、知識自体は凄く使えると思います。結構、アプリ開発しててITパスポートの知識が生きるっことはあります。プログラミングの息抜きに勉強するといいかもです。
・Androidのクソアプリを量産する
いっぱいクソアプリを作りました。(これまで40個作成)
このことからもわかるように、Androidアプリ開発は凄くとっつきやすいです。githubに1つだけコード乗っけてたので、良かったらcloneして動かしてみてください。
・Andoroidの書物でしっかり勉強する
最近:Python + FastAPI or DjangoRESTの勉強・アプリ開発をする。
最近になって、pythonの方を再開しました。理由は、APIとクライアントに分けて何か作った方が、ユーザーにとってストレスフリーなもの作れそうだし、いろんなデバイスに対応したサービスを作りたい時は、APIとクライアントに分けて開発した方がいいと思ったからです。
今は、Python+django, fastAPIとJava+AndroidStudioでプログラミングしてます。あとvue.jsを少しだけ、
・fastAPI公式チュートリアル(途中でDjangoRESTに以降)
fastAPIは凄くパフォーマンスがいいみたいで、goくらい速いとか・・・。ただ、自分はDjangoRESTframeworkを勉強してます。理由は、DjangRESTの方が作るのが楽そうなこと、fastAPIの情報が少ないことの2つです。
パフォーマンスを考えると、fastAPIを勉強してアプリを作った方がいいとは思うのですが、ぼくとしては、まず物を作ってしまうことの方が重要だと思うので、DjangoRESTを使ってます(勉強してます)。Djangoでとりあえずデプロイしてから、fastAPIを使えるようになって、デプロイし直せばいいかなと、
・DjangoRESTの公式チュートリアル
・DjangoRESTのUdemy
今は、上のチュートリアルとか、Udemyで勉強したことを元に、ちょっとしたバックエンドの方を開発中。
・周辺技術の勉強(docker, git)
「dockerとかgitみたいな付随的な技術って使いながら覚えてけばいいじゃん」って思ってたんですけど、ossの開発に興味出てきたり、awsを使ったりってところでどうもdockerとgitができた方が楽そうなので、dockerはちょっと勉強し始めました。
・リーダブルコード
現在リーダブルコードを読み進めてます。ぼくは、教科書を読むのは割と好きなんですが、小説を読むのは苦手なんですよね(というか読まない。)この本は割と小説みたいなので、苦手です。
読みやすいコードを書くって重要だな〜って思うようになって買いました。全然読み進んでないですが、読み終わったら読書感想でも書きたいところ。
2. プログラミング学習で大事だと思うこと
以上がこれまで勉強してきたこと・勉強してることです。振り返ってみて、プログラミング学習で大事だと思うことは、「現在の自分のレベルより少し上のレベル感のことをやる」ってことです。
自分のレベルって、
「将来の自分レベル = 学習効率 * 行動量 + 実力」
って感じで捉えることができると思います。で、この右辺の中で一番簡単に変えられる物って行動量だと思います。行動量を上げるためには、「面白いとおもえる」かつ、「理解できる」ってことが重要だとおいます。
この2つを上手い感じに実現できるのが、現在の自分のレベルよし少し上のレベル感のことをやるってことです。身につけた物をアウトプットしつつ、新しい物を学ぶのが一番マイルドに続けれれる状態だなと感じています。
3. これからしたいこと
・oss開発に関わりたい
・とにかく理解したい
・人に使われる物を作りたい
・Vueを使えるようにしたい
これからやりたい(というかできるようになりたい)ことを書いてみました。
1つ目はoss開発したいってところです。プログラミングが多少できるようになって、英語もできるようになって、(英語はプログラミングしてればできるようになると思います。)人のコードをみる機会も増えてきました。
ぼくは、Djangoを使うことがやっぱり多くて、DjangoRESTのコードとか見るんですが、やっぱり人のコード見ると、「すげー〜!」とか、「なるほど!」って感動するんですよね。今は自分も人に使われて、人に感動されるようなコードを書けるようになってきたいな〜と思ってます。
youtubeで調べると、関係する動画が出てきて参考にしてます。
2つ目は、とにかく理解したい。っていうまあ意味わからんこと言ってますね。
プログラミングやってて面白いことのひとつって、何をしてるか理解してコードを書くってことだと思うんですよね。人のコードをみてそういうもんだなって思いながらコード書くよりも、何が何を参照してどういう因果関係を作っているのかとか、データが参照型だからこうなる、値渡しだとこうなる・・・みたいなことがわかりながらコードかけると楽しいので、そういう理解できる下地を作りたいと思ってます。
ぼくは、東工大の経営工学系に通ってるので、多少はコンピュータサイエンスとかやったことあるんですが、ガッツリやってみたいなって思ってます。そこで、オンラインでコンピュータサイエンスの学位が取れるuniversity of the people っていうアメリカの大学に4月に就職してお金がたまったら仕事しながら通ってみようかなって考えてます。楽しそう。
3.つめは人に使われる物を作りたいていうことです。
今まで、いろんなアプリ作ってきたんですが、正直人に使われるレベルで作り込んだものは一個もないです。アプリ開発の醍醐味って人に使ってもらえるってことだと思ってます。ここらへんで、一個しっかりしたアプリ作ってみたいなって思ってます。
以上です。ありがとうございます!
この記事が気に入ったらサポートをしてみませんか?