【新人SE&学生さん向けコラム】文系・超初心者向けプログラミング勉強法

2021年10月18日

基幹業務システム(主に)の開発と新人プログラマのOJTに20年ほど関わった観点から

プログラミング未経験の方(特に文系)がどのように勉強すればよいかを紹介します。

説明

結論として、いきなりプログラミング言語を学ぶのは

非常にハードルが高いため、おすすめしません。

プログラミングが中学生の科目だとすると、

それ以前に学んだ方がよい小学生の科目があり、

可能な限りそちらから学ぶことをお勧めします。

またプログラミングをするためのパソコンの環境設定にも

ITの知識が必要になることがあり、そこが高いハードルになる場合もあります。

これから紹介する内容は全体的にプログラミング以前の基礎固めであり

一見すると遠回りですが、長期的にはその方が効率的です。

経験上、新入社員SEを3年以上のスパンで見ると

しっかり基礎固めをした人の方が活躍する傾向があります。

アルゴリズム

言語に関わらずプログラミングをするために必要な基礎能力です。

どんなプログラミングであっても、

コンピュータにさせたい仕事を細分化して組み立てる能力が必要です。

例えば手でコップを掴む場合、

  • 目でコップの位置を確認する
  • コップの位置へ腕を動かす
  • 指に力を入れる

といった具合に細分化します。

(ロボットプログラミングではもっと細分化しますが)

これをアルゴリズム(手順や計算方法)と呼びます。

理系寄りの人は特に勉強しなくてもプログラミングが出来ることがありますが、

文系寄りの人はこういったところからトレーニングしないと挫折することが多いです。

遠回りに見えますが、この方が結局は近道であり、手順書を作る能力が上がる効果もあります。

この能力を上げるには次のような手段があります。

  • プログラムを作る(後述のゲームも可)
  • 他の人が作ったプログラミングを読む
  • アルゴリズム独自のトレーニングを行う

上の二つはプログラミングが出来るようになっている必要があるため、

本当の初心者はアルゴリズム独自のトレーニングをするしかありません。

私は元々もゲームでこの手の能力を上げることが出来ていましたが、

専門学校でアルゴリズムを学ぶことで、より広げることが出来ました。

その時の教材(の後継版)はこちら(うかる! 基本情報技術者 [午後・アルゴリズム編] 福嶋先生の集中ゼミ)です。

基本情報技術者とは銘打っていますが、

この作者の教材は基本的に試験突破するだけでなく

社会に通じるプログラマ・SEを育成することを重視しています。

そのため試験対策としては遠回りだったり、蛇足な部分も多いですが、

それゆえにプログラマ・SEとして生きていきたい人におすすめできる本です。

(私が会社の新人に買い与える本の筆頭です)

ゲームを作るゲーム

実をいうと筆者のプログラミングデビューはスーパーファミコンのRPGツクールです。

これはプログラム言語ではなくゲームの部品を置いていくパズルのような感覚で

スーパーファミコン上にRPGゲームを作っていくものです。

このシリーズは続編が継続されておりWindowsでプレイ可能です。

プログラム言語を覚える必要がなく、ゲーム中のガイドの通りが進めば

RPGゲームが作れるようになります。

何かしらRPGを作ってみたい人にはお勧めですが、

それ以外の人には全くお勧めしません。(値段も高いし)

もしNintendo Switchがあればナビつき! つくってわかる はじめてゲームプログラミングがおすすめです。

このゲームの中ではプログラミングの部品がノードンというキャラとして扱われており、

そのノードンを配置することによってアクションゲームを作成します。

子供でも作れるように設計してあるので初学には最適で、値段も三千円程度と手軽です。

こちらはSwitchさえあれば未経験者全般におすすめです。

ゲームではないですが、子供の教育用言語Scratchも学習しやすく効果が高いです。

基本情報技術者試験

プログラミングからは少し離れてしまいますが、

国家資格の基本情報技術者試験の勉強はしておいた方がよいです。

(試験合格は必須ではありませんが)

この試験に合格していれば仕事が出来るわけではありませんが、

システムエンジニアとして最低限、知っておいてほしいことが詰まっています。

(先輩がわざわざ教えなくても自習しておいてほしいこと)

2進数や論理演算など文系には厳しい部分もありますが、

ITの世界で生きるには乗り越える必要があります。

(逆に理系が乗り越えるべき、プロジェクトマネジメントや経営戦略のような文系寄りの部分もあります)

教材はこのシリーズ(イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室)

いつも文系さん用に買い与えています。(理系寄りの人には翔泳社のを渡してます)

この試験にはプログラミングの選択問題もあるため先にアルゴリズムの学習が先です。

プログラミングの選択はアセンブラ言語(CASLⅡ)がおすすめです。

アセンブラを使うことはほぼないですし、CASLⅡは実務では使わない架空の試験用言語です。

これも一見遠回りですが、プログラム言語の仕様が非常にシンプルで

初心者にも習得しやすいように作られています。

またアセンブラを使うことによりメモリなどのコンピュータ内部の構造の理解にもつながり、

他の言語やポインタやオブジェクト指向などの高度な機能の理解の助けにもなります。

実務で使われるという意味でJavaやPythonを選びたくなりますが、

CASLⅡを選択しておくほうが長期的には財産になります。

文系の人は当然ながら苦戦しますが、幾つかの教材も試した結果、

速習言語 CASLⅡ(CASL2) 編 基本情報技術者試験 午後 プログラミング問題対策 (速習言語シリーズ)

新人教育を実際にしている筆者さん(矢沢久雄先生)なので、

文系の人でも取り組めるような本を書いてくれます。

(実は私の新人研修にも講師としていらしてました)

元々、プログラミングが出来る人には物足りないようですが、

超初心者向けには最適ということでしょう。

終わりに

以上、主に文系の新人プログラマ向けに実際に教育として進めている内容を紹介しました。

  • アルゴリズム
  • ゲームを作るゲーム
  • 基本情報技術者試験

一見遠回りなため実践してくれる人は少ないのですが、

3年後以降を見ると実践する人の方がエンジニアとして伸びて活躍します。

確かに即効性はないですが、長期的にはこちらの方がプラスになるため

新人教育に携わるSEとして、多くの人がそういう選択をしてくれることを願う次第です。

ただ、どうしても即効性が欲しい場合は、

初学のハードルの高さを解消するためにプログラミングスクールをお勧めします。

一度、コツ(アルゴリズムなど)を掴んでしまえば幾らでも自習が出来ますが、

最初はそれをするのは非常に難しいためです。

関連記事

次の記事:目的・状況別。最初に習得したいプログラム言語

記事一覧 新人SE&学生さん向けコラム