社会人のIT学習:#1. プログラミングとDB

前回、”社会人のIT学習:企画の予算感を把握するには” の続きです。
企画の予算感を把握できるようになるための学習として、プログラミングとDBを学習するにはどうしたらいいか書きます。
(エンジニアとしてのスキルをつけるためには、ここに書かれている内容では足りないです)

 

概要

プログラミングを学ぶと、どうプログラムが動くのか、どういう機能が大変(コストがかかる)か、イメージしやすくなります。
プログラミングに必要なインプットや求められるアウトプットが分かり、また、インフラなど他項目の学習効率も上がります。
なので、最初にプログラミングをある程度学ぶのがいいと思います。

また、多くの機能では、データの保存と抽出 が処理の主要部で、DB(SQL)をプログラミングとセットで勉強することをお勧めします。

プログラミングとDB(SQL)は、最低限、実際に手を動かした方がよいと思います。
あー、こういう機能は作るのが面倒だな、とか感覚が掴めます。

では、具体的にどういう学習をしていけばいいのか、下記3ステップを推奨します。カッコは目安時間です。

 

学習ステップ

#1.1. SQLの学習 (15h)

#1.2. プログラミングの基礎的な学習 (40h)

#1.3. WEBフレームワークの基礎的な学習 (30h)

#1.1. SQLの学習

多くのWEBシステムではでDB(データベース)を用います。DBにも多くの種類がありますがまずはMySQLからでいいでしょう。(*1)
DBとやりとりする命令文がSQLです。

プログラムとDB(SQL)との関連性は、例えば、このブログについて考えると、下記のようになります。

ブログを投稿する機能
→画面で入力された内容を、DBの記事テーブルに保存する。

ブログのトップページを表示する機能
→DBの記事テーブルに保存されている中から、(下書きでなく)公開済みの記事を、新しい順に10件取得して表示する。

個別の記事を表示する機能
→DBの記事テーブルに保存されている中から、URLにある記事番号に該当する記事を取得し表示する。下書きなど、公開でない場合は表示しない。

このように、多くの機能が、DBと密接に関連します。
実際のプロジェクトでも、「DBにどういう形で保存するか」「DBにあるデータをどういう条件で取ってくるか」を考えて、それ容易かどうかで見積り額を調整をすることが非常に多いです。

弊社では、研修で下記本のレベルのSQL学習を一通りやってもらってます。

書き込み式SQLのドリル 改訂新版
https://www.amazon.co.jp/gp/product/4822296210

やさしいSQL、のような、基礎的なものでもなんでもいいです。
ポイントは、実際にSQLを書いてみて、
・こういう風に書いたらどうなるかな?
・こういうデータを取る場合はどうやって書くんだろう?
と知識をなるべく横に広げながら、テキストの内容を習得することです。
単にテキストの内容を、そのまま書いて想定どおりの結果となっても、身に付いてないと思います。
SQLは、次のプログラミング学習に必要となるので、優しい内容は身に付くまで学習しましょう。

 

(*1) DBにもいろいろな種類があり、主にパフォーマンス要件によって使うDBが変わり(あるいは併用し)、開発手法も変わってきます。
例えば処理がむちゃくちゃ速いDBや、大量のデータに強いDB、検索に優れたDBなど。
ただ、一般的には、RDBといわれるものが使われる事が多く、特にMySQLがWEBサービスでは主流です。RDB同士では少なくとも基礎学習においては大きな差異はないです。

 

 

#1.2. プログラミングの基礎的な学習

プログラミングは、さまざまな言語があり、大きく分けると、サーバで動くものと、PCやスマホなどの端末で動くものがあります。
まずはサーバで動くものからやるとよいです。
PHP、Ruby、Python、JAVA、C#、GOなど種類がたくさんありますが、どれか1つでよいです。最近はPythonやGOなどが流行っていますが、PHPかRuby(On Rails)あたりが、資料も多く学習がやりやすいと思います。Pythonもいいかも。

まずは、基礎的な文法を学びます。いろんな関数がありますが、どのみち使うときはググることが多いので、関数の名前などはそれほど覚えないでもいいです。

弊社では、下記本を新入社員にやらせてます。

やさしいPHP 第3版 (「やさしい」シリーズ)
https://www.amazon.co.jp/gp/product/4797380896/

こちらもポイントは、ただ本に書いてあることをやるだけでなく、
・こう変えたらどうなるのか?
・こういう場合はどう書くのか?
を意識しながら、ちゃんと理解してスキルを身につけましょう。でないと、見積りにいかせません。

 

#1.3. WEBフレームワークの基礎的な学習

WEBサービスを作るときには、大体の場合、WEBフレームワークを用います。WEBフレームワークとは、WEBサービスを作りやすくするために、便利な機能をセットで提供するもの、というイメージです。
Ruby on Railsが有名です。PHPだとLaravelとかCakePHPとか。年々進化してます。

弊社ではマイナーなフレームワークを使うことが多いので、独自で研修プランを組んでいます。
本で学習するなら、10日で覚えるXX、のようなのでいいかと思います。

フレームワークは、お互い、持っている機能は似ていますが、やったことがないものだと学習コストがかかります。また、自由度の高いものや処理速度を重視しているものなど、それぞれ特徴があります。
フレームワークを勉強する際は、”はじめてフレームワークを使うときはこれだけ学習コストがかかる”というのを理解すると良いでしょう。

 

次回は、

#2. ネットワーク・インフラ・サービスレベル

です。

 

 目次

 社会人のIT学習:企画の予算感を把握するには

社会人のIT学習:#1. プログラミングとDB

社会人のIT学習:#2. ネットワーク・インフラ・サービスレベル

社会人のIT学習:企画の予算感を把握するには

先日、小学生向けにプログラミング教室 ArSchool(アルスクール)をはじめました。

その縁で、社会人のスキルとして、あるいは保護者の知識としてプログラミングを知りたい、勉強したいというお話をいただくことが多くなりました。
その中で質問されたことについて、一般的な内容なので深掘りしてここで紹介します。

質問 :

Web系サービスの立案で予算感を把握できるスキルを付けたいが、どういう学習をすればよいか?


回答 :

見積りに影響を与えるファクターは、思いつくだけで下記があり、条件次第で見積りはすぐ数倍の差がでます。
(分からない用語は読み流してください)

WHAT
・サービスの機能
・サービスのUI(デザイン等)
・ネットワーク/インフラ構成
・想定アクセス数、データボリューム
・パフォーマンス要件
・セキュリティレベル
・OSやブラウザなどの対応範囲
・SEOやOGPなどへの対応範囲
・納品物

WHO
・要件定義の粒度
・作業範囲
・発注側の熱意やスキル(リテラシー)

WHEN
・開始時期、納期

WHERE
・開発場所、開発環境

HOW
・プロジェクトの進め方(アジャイル、ウォーターフォール、承認フローなど)
・テストやQCの要求レベル
・運用保守への要求レベル(CIにどこまで対応するかなど)
・対象言語などの制約
・契約形態

WHY
特になし

 

これらを学ぶにはどうしたらいいか。

1つの方法として下記学習ステップを提唱します。カッコは、想定学習時間です。

#1. プログラミングとDB (85h)

#2. ネットワーク・インフラ・サービスレベル (30h)

#3. 開発フロー、運用フロー (20h)

#4. UI・デザイン概要 (20h)

#5. 契約やその他ファクター (20h)

#6. 市場の相場感把握 (?)

 

#2〜#5が少ないのは、手を動かさずに知識だけ学ぶ前提だからです。
#3, #5は特に、実際のプロジェクト以外で実習が難しいので。。

ただ、学習時間は学べる環境と個人のスキルで大きく左右されます。
特に#2〜#5は、きちんと学べる環境にいれば、おそらくこの6割くらい。

逆に、完全に独学だと、そもそも習得できるか微妙な上に、時間も倍くらいかかるかも知れません。
特に#6は、機密保持契約などにも絡んでくるので、学習が難しいです。

 

では、続いて

#1. プログラミングとDB

を書いていきたいと思います。