大学に入って暇な人がやると技術が身につくことリスト
最近、友人から「勉強したいけど無いからやればいいかわからない」という声をよく聞くので、自分が勧める順番を書いておこうと思います。私もまだ経験が多い訳では無いのですが、これまでの先輩から聞いた話や自身の経験も交えてまとめていきます。
まずやること
分野に問わずやるべきことです。
自作PCをする
まずはPCの中身を知らないと何も始まらないと思うので、自作しましょう。
部品選定が最も勉強になります。組み立てて初期設定をするだけでも、PCという箱の中身の概要を知れると思います。
お金のない限界大学生はお金がない小中高校生のためのプログラミング入門も参考にしてください。
詳しい人と相談しながら部品選定をすると間違えることはないと思います。
最悪、自分で組んでからお店の人に相談すれば相性等を教えてくれます。
Linuxを入れる
デュアルブートしましょう。ディストリビューションとかよくわからないという人はUbuntuが無難です。
UEFIやBootloader等の存在をなんとな〜く触れて、自分が普段使っているOSのありがたみを知りましょう。
インストールの過程でSSDのパーティションやファイルシステム、マルチユーザー等の仕組みも理解できるようになります。
OSを吹き飛ばした数だけ人間は成長します。
どうしてもLinuxを入れたくない方へ
CygwinやMSYS2等の情報は古いので使わないほうが良いです。「WSL2」という方法で完全なLinuxをWindows内に構築することができます。苦行ですが頑張ってください。
開発環境を構築する
Linuxを入れたのでそのまま開発環境を作ってしまいましょう。Ubuntuならば適当にググって出てきたサイトの内容をコピペするだけでPythonの実行環境が構築できます。
エディターは、特にこだわりがなければVSCodeを入れておけば間違いないです。
Pythonを勉強する
PythonでAtCoderのA問題が解けるようになるくらいまで基礎を勉強すると良いと思います。
オブジェクト指向のお話は面倒に感じたらスキップしてしまってもいいと思います。
何かしらアプリ開発をしたい人
アプリを作ってみたいという人はこの順番をやると良いと思います。
数学や情報理論等をやりたい人はやらなくていいです。
HTML・CSSを勉強する
実用的なアプリを作るうえで一番ゆるく入門できるのがウェブ技術だと思います。
Pythonではターミナルに文字を出すだけだったのが自由にデザインを組んでマウスでぽちぽちできるようになります。
GitとGitHubの使い方を覚える
PythonやHTMLを触ってプログラマ気分を味わえたところで、複数人開発や大規模な開発に必須のツールを勉強します。直接コードを書くわけではないので苦痛ですが必ず必要です。大学でなぜこれを勉強しないのか本当にわからない。私の大学が酷いだけの可能性もある。
初学者の方が混合しがちなのがGitとGitHubです。Gitはバージョン管理のためのソフトウェアで、単体で使うことができます。GitHubは「Gitを使っているプロジェクトが置いてあるサイト」でMicrosoftが運営しているサービスのことを指します。
Gitによって、誰がいつどのファイルを変更したのかわかるようになります。
Gitをインストールする
既にLinuxが入っていればGitの導入は非常に簡単です。
Windowsの方はWSLで苦しんでください。
GitHubにリポジトリを作成して使ってみる
- add
- commit
- push
- pull
ができればいいと思います。
GitHub Studentに登録する
Microsoftをはじめとした多くの企業は学生支援を行っています。GitHub Studentに登録することで多くのソフトウェアが無料で使えるようになります。
GitKrakenでGitに慣れる
GitKrakenはGitをGUI(コマンドなし)で使うためのツールです。本来は有料のソフトですがGitHub Studentに入っていれば無料で使えます。
(余談) JavaScriptをやってみる
ここでもし時間に余裕があり、少し今までの技術で遊んでみたいと思った場合はJavaScriptも勉強して動くものを作ってみるのも楽しいでしょう。モチベーションの維持になります。
Python(Django等)と組み合わせてサーバーサイドまで書けると、既にかなりのものを自由に作れるようになっています。
開発したウェブサイトを自分でホストする
HTMLで書いたサイトを外部に公開するためのサーバーを構築します。
Linuxを適当なPCに入れて、Nginxの設定を行うと良いでしょう。
SFTPやSmaba、メール・DNS等もセットアップすると、自分の家にサーバーがあるということのありがたみが分かると思います。
Nativeアプリに挑戦してみる
FlutterやJava、Swift等のネイティブアプリ開発に手を出してみるのもいいでしょう。
ウェブとはかなり違った書き心地なので、最初は苦労するかもしれませんが慣れるとWebとは違った合理性に気づけると思います。
理論を頑張りたい人
自分は全く情報学や理論に詳しい人間ではないのであまり詳細なことは言えません…ごめんなさい。
なにかの本を完走する
入門書でもなんでもいいので、何かの本を完走すると非常に気持ちいいです。
なにもないという人のために私が実際に走った(もしくは走りたい)本を載せておきます。
- [試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】:書籍案内|技術評論社
-
systemdの思想と機能 ―Linuxを支えるシステム管理のためのソフトウェアスイート:書籍案内|技術評論社
(あとで追加します)
「〇〇を作る」みたいな本を追走すると非常に楽しいです。
数学をやる
情報学においてどの分野に進むとしても数学は必ず必要になります。
高校数学(の基礎)の復習や大学数学の予習は必ず身のためになります。
高校数学は受験で用いられるようなテクニックや複雑な問題を解ける必要は(個人的には)あまりないと考えているので、基本問題が解けるようになったら大学数学の演習を行ったほうがいいと思います。
終わり
自分の周囲で情報系に進んできたのに大学生という自由時間を適当に潰してしまっている人が非常に多いので、道しるべになればいいなと思いました。
偉そうに語りましたが、私も全く勉強や技術力が強いというわけではないので一緒に頑張りましょう。
Discussion