🇲🇦

【プログラマー向け】実務を経験する前に最低限やっておくべきこと 5選

2022/12/17に公開
1

はじめに

今回の記事では、あくまで個人の独断と偏見に基づいて、プログラミング初心者向けに実務を経験する前に最低限やっておくべきことを5つ紹介する。

1.GitHub

GitHubとは、世界中の人がプログラムやデータを保存したり、公開したり、評価したりできるSNSサービスである。GitHubは今や企業がアプリケーションを開発する際には必要不可欠だ。

企業など複数のプログラマーでアプリケーション等を開発する際には、同じファイルに対して同時に作業することがよくある。そのため、修正した箇所や進捗状況がわかりにくくなっている。GitHubはこのような問題を解決するために開発された。

それ故に、実務ではGitHubを扱えることが必須になる

GitHubで最低限身につけておきたい知識は以下の通り。(Qiita記事「実務に入る前にやっておいた方がいいこと6選」参照。)

  • ディレクトリ:簡潔に言えば、ファイルの集合体のこと。GitHubではGitと連携してディレクトリをGitHub上にアップロードする。このアップロードされたファイルのことをリポジトリと呼ぶ。
  • リモートリポジトリ:簡潔に言えば、個人のローカルマシン上にないリポジトリ。
  • ローカルリポジトリ:個人がローカルマシン上で作業するために利用するリポジトリ。
  • ブランチ:名前は履歴を枝分かれさせることに由来。例えば、古いバージョンと新しいバージョンを同時に保存したい時に役立つ。

初心者が最初にやるべきことは、自分の書いたソースコードをGitHubにアップロードすることである。

より詳細なGitHubの使い方に関しては、以下のQiita記事・文献が非常に参考になる。

https://qiita.com/nnahito/items/565f8755e70c51532459

https://qiita.com/ueki05/items/5c233773e3186989bfd3

https://gihyo.jp/book/2014/978-4-7741-6366-6

余談だが、GitHubでは学習・開発に役立つ情報を掲載しているリポジトリが数多く存在する。GitHubは情報収集でも非常に重宝する。詳細は私の過去記事で書かれているので、時間があれば以下の記事も確認してほしい。

https://zenn.dev/nameless_sn/articles/important_10_github_repositories

2.数学の集合

集合に関する知識は、SQLやJavaScriptなどのプログラミング言語を扱う上で非常に重要になる

文科省によると、高校数学(数学A)で集合を学習する。高校時代にこれで挫折した経験がある人も少なくないのではないだろうか。

データを分析したり、的確に条件分岐を表現したりする上では集合の知識が欠かせない。これだけ述べてもわからない。以下に具体例を使って考察する。

集合の図

例えば、以下のようなゲームのキャラクターに関するデータがあるとする。

# キャラクターセット。ゲームの有名なキャラクター
character_set = {"Mario", "Kirby", "Pac-Man", "Luigi", "Link"}

# 任天堂キャラクターの集合。
nintendo_set = {"Mario", "Kirby", "Luigi", "Link"}

# マリオシリーズに登場しないキャラクターの集合。
not_mario_set = {"Kirby", "Link", "Pac-Man"}

上記のプログラムでは日本のゲームの有名なキャラクターの集合体をまとめている。これを以下の図にしてまとめてみよう。

ここで、高校数学の集合の概念を使って上図を説明する。

  • 全集合:キャラクターの集合
  • 部分集合:任天堂キャラクターの集合と、マリオシリーズに登場しないキャラの集合。
  • 補集合:上図で考えると、キャラクターの集合の中で任天堂のキャラクターの集合を取り除いた部分。(パックマンだけ)数学では、上図のパックマンだけの集合を任天堂キャラの補集合と呼ぶ。
  • 和集合:上図で考えると、赤枠の部分と青枠の部分で囲っているものをあわせた集合。
  • 積集合:上図で考えると、赤枠の部分と青枠の部分が重なり合っている集合。(リンクとカービィの部分)

ここで、補集合という考え方を使うと、全キャラクターの集合の中から任天堂のキャラクターの集合を引くだけで、任天堂キャラクターの集合を求めることができる。

補集合は、すべてのデータから欲しい情報を取り出す上で非常に参考になる。

ド・モルガンの定理

上図を使って、任天堂キャラクターでもなくマリオシリーズに登場しないキャラクターの集合を考える。(赤枠と青枠で囲っている部分がない部分)

この赤枠と青枠で囲っているものを合わせた集合は、さきほど求めたいものとちょうど逆の集合になっていることがわかる。これにより、赤枠と青枠の和集合の補集合で求められる。これに該当するキャラはないので、空集合となる。

ここで、ド・モルガンの定理を表記すると以下の通りになる。

\bar{A} \bigcap \bar{B} = \bar{(A \bigcup B)}

Aの補集合とBの補集合の積集合は、AとBの和集合の補集合。上図で考えると、赤枠で囲まれていない部分と青枠で囲まれていない部分が重なっている部分。

\bar{A} \bigcup \bar{B} = \bar{(A \bigcap B)}

Aの補集合とBの補集合の和集合は、AとBの積集合の補集合。上図で考えると、赤枠と青枠で重なり合っている部分を除いた部分。

このように補集合やド・モルガンの定理を使うことで、限られたデータの中から欲しい情報を取り出せる。

集合の知識に慣れるためには、とにかくSQLやJavaScriptなどのプログラミング言語でたくさん書くしかない。いくら知識をなんとかして覚えてもその使い方がわからないならなんの価値もない

集合(SQL・数学の場合)を理解する上でおすすめの書籍を以下に2冊紹介する。

▼数学の基本を学び直したい時

https://kanki-pub.co.jp/pub/book/details/9784761230593

▼SQLで数学の集合を表現したいとき

https://book.impress.co.jp/books/1121101090

https://gihyo.jp/book/2015/978-4-7741-7301-6

特にインプレス社発行の『スッキリわかるSQL入門 第3版 ドリル256問付き!』はSQLを理解するための問題もセットでついていて、自分の理解度をチェックできるので非常にオススメ。

3.英語

次に、英語に関する基礎知識(最低限でもリーディングスキル)を身につけておこう。なぜならば、プログラミング・エンジニアリング関連の情報は日本語よりも英語のほうが圧倒的に多いからである。その決定的な証拠として、私たちプログラマーが開発で好んで使うプログラミング言語やフレームワーク等の公式ドキュメントのほとんどは英語で書かれているからである。英語を読めるだけでもインプットできる情報は一変する。

これは個人差や記事によるものの、必要な英語のスキルは高校1年生レベルで事足りる。

英語の勉強方法は数多く存在するが、プログラマー向けにオススメする英語の学習方法は以下の2つである。

  1. 海外のYouTubeで学ぶ
  2. 洋書を購読する(詳細は後述)
  3. 使用しているスマートフォンやパソコンのデフォルト設定を英語に切り替える

1.の方法で、私の過去記事でプログラマー向けのオススメのYouTubeを紹介している。どの動画を見るべきかわからない人は最初にこの記事で紹介しているチャンネルの動画から視聴することを強くオススメする。

https://zenn.dev/nameless_sn/articles/recommended_youtube

私含めて、どうしても英語を耳で理解できない人は以下のQiita記事にその対処法が徹底解説されている。

https://qiita.com/yowatsuyoengineer/items/7d77035bb725c34d79d8

3.の方法は、どうしても英語を学ぶ時間が足りない人に非常におすすめの方法である。自分が普段使っているもののデフォルト設定を思い切って英語にしてみよう普段英語に接することは、非常に地味だが英語力を高める上では非常に効果的である。自分が使用している機器のデフォルト設定を英語にする方法は以下の記事を参照してほしい。

4.読書(ソフトスキル優先)

読書は実務に入る前に絶対にやってほしいことの1つである。読書は体系的かつ効率的に知識を得る上では最も有効な方法だからだ。

あくまで一個人の見解に過ぎないが、読書をするメリットは以下の通り。

  • 語彙力を増やせる。
  • エンジニアリングや日常生活に役立つヒントを得られる。
  • 読書を通じてアウトプットすることで、新しい学びを得られる。

技術書を除いて、実務に入る前に読んでおきたい本のジャンルはソフトスキルや洋書に関する本である。理由はそれぞれ以下の通り。

  • ソフトスキル:思考術、コミュニケーション術や文章術など。どの業界でも応用できるスキル。ソフトスキルは円滑に開発を進める上では必要不可欠。
  • 洋書:英語を文章で理解する力を身につけるため。

私が実践している読書の方法は過去記事にて紹介しているので、詳細はそちらを確認してほしい。

https://zenn.dev/nameless_sn/articles/reading_technique_article

技術書

読むべきおすすめの日本語の技術書は、私の過去記事で紹介しているのでそちらを確認してほしい。

https://zenn.dev/nameless_sn/articles/books-for-past-me

ソフトスキル

ソフトスキルを鍛える上で読んでおくべき書籍を以下に紹介する。詳細を紹介すると記事が冗長になるので、詳細はリンクをクリックして確認してほしい。

コミュニケーション

思考術

その他(時間術・マインドセット)

洋書

洋書で読んでおくべき書籍のジャンルは以下の通り。

  • 実務で扱う言語・フレームワーク、ソフトスキルに関する書籍
  • ソフトウェア設計の原則を学べる書籍

この両方の特徴を踏まえて、絶対に読むべき洋書を3冊表示する。

  1. Factfulness: Ten Reasons We're Wrong About The World - And Why Things Are Better Than You Think (English Edition)
  2. Design Pattern
  3. A Philosophy of Software Design, 2nd Edition (English Edition)

特に1.の書籍はベストセラー『FACT FULNESS』の原本だ。既にこの書籍を買っている人は是非読んでみてはどうだろうか。日本語版の書籍と英語版のものを両方照らし合わせることで、「どの英文がどの日本語訳に該当するのか」を確認できる。

5.規則正しい生活&食事

規則正しい生活と食事も、実務を経験する前に絶対に身につけるべき習慣である。

では、「規則正しい生活と食事」は一体何を意味しているのだろう?Zenn記事「【ガイド】優秀なプログラマーになるための10のメソッド」には以下のように書かれている。

体調を崩すと日々の生産性やパフォーマンスに悪影響を与える。これだけ言ってもあいまいなので、体調を適切に管理する具体的な方法を以下に示す。

  • 決まった時間に起き、決まった時間に寝る
  • ジャンクフード・菓子パンを食べない
  • 食物繊維・タンパク質多めの食事を摂る
  • 毎日入浴する
  • 週3~4回、30~40分程度運動する
  • 3時間以上座らない

上述の内容はあくまで一個人の見解に過ぎないが、最低限やるべきことは睡眠時間の確保である。睡眠時間を削ると日々のパフォーマンスに甚大な悪影響を与えてしまう。良質な仕事に良質な睡眠は必要不可欠である。

あくまで個人差にもよるが、どんな日でも絶対に睡眠時間は、7~8時間確保しよう。余談だが、私の場合は21~22時に就寝して5~6時の時間帯に起床するという習慣を大学時代から継続している。

更に余談になるが、夜はSNSをチェックしたり、NETFLIXやYouTubeで動画を見まくったりするなどどうしても時間を浪費しがちである。夜に起きている時間をできるだけ短くすることが大事。最良の方法は夜の時間帯にSNSにアクセスしない環境を作ること

私の場合は、スマートフォンにTwitterなどのSNSアプリをインストールしていない。これで無意味に時間を浪費する癖がなくなった。

おわりに

今回の記事では、初心者向けに実務を経験する前にやっておくべきことを、個人の独断と偏見で簡潔に解説した。

  • GitHub
  • 数学の集合
  • 英語
  • 読書(ソフトスキル優先)
  • 規則正しい生活&食事

本記事が、今後プログラマーとして活躍しようとしている初心者の道標になれば非常に幸いだ。

余談

ネット記事で数学の概念を丁寧に解説できる人の凄さを十分に理解できた。マジで難しい。

参考サイト

https://qiita.com/yukimuraryofu/items/638cb528a4ca2a5c4c90

https://qiita.com/toshihikoyanase/items/7b07ca6a94eb72164257

https://www.mext.go.jp/a_menu/shotou/old-cs/1322525.htm

GitHubで編集を提案

Discussion

マサハルマサハル

はじめまして。非常に興味深く読ませていただきました。
一つ教えていただきたいのですが、
▼数学の基本を学び直したい時
の項目のリンクが切れていまして、書籍の題名がわかりませんでした。
もしよろしければ、コメントまたは修正なりで教えていただけると幸いです。