今の時代はパソコンが使えないと仕事にならない。というぐらい「パソコンが使える」というスキルはビジネス界において重要な要素となっています。
本講座は、コンピューターの仕組みと特長を理解することで「パソコンの基礎」を学び、エンジニアとして新たな挑戦を始めようとしている「あなた」を応援するものです!
コンピューターの基本概念
ハードウェアとソフトウェアの違い
ハード(hard)とソフト(soft)の違いなので、なんとなく違いはわかるかと思います。
ハードウェアとは?
簡単に言ってしまうと、目に見えるものは全部ハードウェアです。
具体的には、ディスプレイモニタ、ハードディスク、パソコン本体、マウス、USBメモリ等です。
但し、これらは単なる物にすぎません。中身は空っぽで単独では何もできません!
ソフトウェアとは?
一方、ソフトウエアは目には見えないものです。人間に例えると知識や能力といったところですが、これらがハードウェアを制御することによってコンピューターは機能します。
具体的には、OS(Operating System)の代表格であるWindowsやiOS、アプリケーションソフトであるExcelやWordなどがあります。
実は、パソコン自体にとって重要なものがあります。それはBIOS(バイオス)です。正式には、Basic Input/Output Systemといい、略称としてBIOSと呼ばれます。
BIOSとは?
BIOSを一言でいうと、「ハードウェアとソフトウェアを繋ぐためのもの」といえます。
BIOSは、マザーボードにあるROM(Read Only Memory)の中にあります。
つまり、ハードウェアの一部なのですが、ディスプレイモニタやキーボード、マウスやハードディスクといった全てのハードウェアの情報を全て把握しているものです。
キーボードからの文字入力をイメージしてみましょう
- キーボードの「A」を押す
- OSはキーボードからの処理要求を検出し、BIOSから得たハードウェア情報を参照する
- OSはBIOSからの情報を元にキーボードから情報「A」を読み込む
- 読み込まれた情報がアプリケーションソフトに渡される
- アプリケーションソフトが必要な処理を行った後、OSに処理が渡される
- OSはBIOSから得たハードウェア情報を元にディスプレイモニタへ「A」を表示する
ちなみに、BIOSは2010年からUnified Extensible Firmware Interface (UEFI) に移行しています。
BIOSはブート機能も有しています
ブートとは、コンピュータの電源を入れ、システムを利用可能な状態にすることです。
システムを利用可能とするためにコンピュータ内でオペレーティングシステム(OS)を起動させる一連のプロセスのことをいいます。
コンピューターの役割と機能
コンピューターの役割りとしては、主に以下のものが考えられます。
データ処理と計算
数値計算や論理演算を通じて情報の処理と計算を行う
情報の保存と管理
データやプログラムの保存、整理、管理を行い、必要な情報へのアクセスを提供する
通信とネットワーキング
インターネットを介して他のコンピューターやデバイスと通信し、情報の送受信を可能にする
自動化と制御
工場や自動車などでの制御システムとして使用され、機械の動作やプロセスを自動化する
情報の解析と処理
大量のデータからパターンや傾向を分析し、有用な情報を抽出する
グラフィックスとマルチメディア
画像、音声、動画などのデジタルメディアを生成、編集、再生する
ユーザーインタフェース
ユーザーとコンピューターの間のコミュニケーションを可能にするインターフェースを提供する
人工知能と機械学習
パターン認識や学習を通じてタスクを遂行し、人間の知能に近い機能を有する
デジタル情報の基礎
バイナリ表現とビットの概念
バイナリ表現とは、「0」と「1」の組み合わせ(「on」と「off」の組み合わせ)で表現されるデータのことで、コンピューターが解読できるデータのことです。
英単語のbinary(バイナリ)は「2進数」という意味です。
ビット (bit) は、多くのデジタルにおける情報の基本単位を示します。
例えば、数値12(10進数)を「4bitでバイナリ表現」すると、『1100』となります。
バイナリ(2進数)の数え方
10進数 | 2進数 |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
バイトとデータの保存
パソコンなどのデータ容量を示す単位として、バイト(byte)が使われていることはご承知のとおりです。
1バイト(byte)は、256通りの情報を表現できる容量を意味します。
つまり、1byteは8bitのことであり、8bitのバイナリ表現でもわかるように、表現可能な情報量は256通りとなります。
1byte(8bit)のバイナリ表現
10進数 | 2進数 |
0 | 0000 0000 |
1 | 0000 0001 |
2 | 0000 0010 |
3 | 0000 0011 |
4 | 0000 0100 |
5 | 0000 0101 |
6 | 0000 0110 |
7 | 0000 0111 |
8 | 0000 1000 |
9 | 0000 1001 |
10 | 0000 1010 |
11 | 0000 1011 |
12 | 0000 1100 |
13 | 0000 1101 |
14 | 0000 1110 |
15 | 0000 1111 |
16 | 0001 0000 |
17 | 0001 0001 |
18 | 0001 0010 |
: | |
31 | 0001 1111 |
32 | 0010 0000 |
33 | 0010 0001 |
34 | 0010 0010 |
: | |
47 | 0010 1111 |
48 | 0011 0000 |
ここまで書くと、ある規則性があることに気付くと思います。
16の倍数で8bitバイナリの上位側4bitがインクリメント(₊1)されていますよね?
つまり、16×16=256通りとなります。
10進数 | 2進数 |
64 | 0100 0000 |
: | |
80 | 0101 0000 |
: | |
96 | 0110 0000 |
: | |
112 | 0111 0000 |
: | |
128 | 1000 0000 |
: | |
255 | 1111 1111 |
このことが理解できれば、以下のような数値の羅列でもその意味がだいぶ見えてきますよ。
データの保存
コンピューターの仕組みを理解する上では、アドレス(Address)という概念も重要です。
直訳すると「住所」ですが、コンピューターでも同じ意味です。
よく耳にするものに「IPアドレス」というものがあります。
IPアドレス(例 192.168.0.1)とは、インターネット上での通信相手を識別するための番号のことで相手を特定するための唯一のものです。まさに住所と言えます。
アドレスの概念が理解できれば、先ほどの数字が羅列した表も読み解けます。
左端の数値は?
- [0000000] メモリアドレス:0番地を示します
- [0000010] メモリアドレス:16番地を示します
- [0000020] メモリアドレス:32番地を示します
最上段の2カラム以降の数値は?
- [0000] メモリアドレス0番地と1番地に格納されるデータ値「0000」を示します
- [0001] メモリアドレス2番地と3番地に格納されるデータ値「0001」を示します
- [0001] メモリアドレス4番地と5番地に格納されるデータ値「0001」を示します
- [1010] メモリアドレス6番地と7番地に格納されるデータ値「1010」を示します
- [0010] メモリアドレス8番地と9番地に格納されるデータ値「0010」を示します
- [0001] メモリアドレス10番地と11番地に格納されるデータ値「0001」を示します
- [0004] メモリアドレス12番地と13番地に格納されるデータ値「0004」を示します
- [0128] メモリアドレス14番地と15番地に格納されるデータ値「0128」を示します
2列目以降:メモリアドレス16番地と17番地に格納されるデータ値「0000」…
以上より、データの8bit単位(byte)にアドレスが割り振られていることがわかります。したがって、有効データ(通常は0000以外)が存在する最終アドレスが「0ffffff」であれば、16Mbyteの容量を持つメモリからダンプされたデータと想像がつくことでしょう。
中央処理装置 (CPU) の役割
頭脳としてのCPU
CPU(中央処理装置)とは?
「CPU」とは、Central Processing Unitの略で、日本語では「中央処理装置」という意味です。
システムにおける役割は、その名のとおり、コンピューターに備わっている全ての装置を制御するための装置のことです。
これら装置を指示するのは、「プログラム」と呼ばれるもので記載された命令によって実行されます。
このことから、CPUは「プログラムを解読し、その命令に従って各装置を制御する装置」といえます。
命令の実行と処理
命令の実行(Instruction Execution)
コンピュータープログラムは、機械語やアセンブリ言語といった低水準言語の命令で構成されています。
アセンブリ言語は、コンピュータアーキテクチャの特定の命令セットに基づいており、プログラマが機械語命令に近い形式でプログラムを書くことができます。
命令の実行とは、プロセッサがメモリから取得した命令を解釈し、適切な操作を行うプロセスです。
プログラムが計算や処理を実行し、プログラムの機能が実現されます。
アセンブリ言語とは?
アセンブラ言語は、コンピューターのハードウェアの動作を直接的に記述するプログラミング言語です。
アセンブラを学べば、CPUの機能やOSの役割などが手に取るように見えてきます。
つまり、コンピューターが具体的に何を行っている(動作)のか?ということがよくわかるようになるため、基礎学習には最適なプログラム言語といえます。
アセンブラ | 機械語 | |
PUSH | BP | 55 |
MOV | BP,SP | 8B EC |
SUB | SP,4 | 83 EC 04 |
LEA | AX,[BP-2] | 8D 46 FE |
PUSH | AX | 50 |
MOV | AX,Z4 | B8 00 00 |
PUSH | AX | 50 |
CALL | scanf_ | E8 00 00 |
ADD | SP,4 | 83 C4 04 |
LEA | AX,[BP-4] | 8D 46 FC |
上の図は、機械語に対応したアセンブル言語を示したものですが、例えば、
1行名:【PUSH BP】は、BPというレジスタの値をスタックに積む。という意味。
2行目:【MOV BP, SP】は、SPというレジスタの値をBPに格納する。という意味
3行目:【SUB SP,4】は、SPー(マイナス)4の結果をSPに入れる。という意味
こんな具合に、プロセッサーの動作そのものを制御しています。
プログラマがアセンブラを学べば、プログラミングのテクニックが大いに向上することでしょう。なぜなら、コンピュータの生の動作を意識した無駄のないプログラム(実行速度が速く、サイズがコンパクトなプログラム)を高水準言語でも作れるようになります。また、プログラマでない人がアセンブラを学ぶと、コンピュータへの理解と興味が大いに深まるメリットもあります。
一方、COBOL、BASIC、Pascal、C言語、C++、Javaなどの「高水準言語」で記述されたプログラムは、コンピューターのハードウェアの知識がなくてもプログラムを作ることができ、かつアセンブラより行数が少なく効率的に作成できることが最大のメリットです。したがって、ほとんどのプログラマは高水準言語を使っています。
#include
void main()
{
int a,b,ans;
scanf(“%d”,&a);
scanf(“%d”,&b);
ans = a + b;
printf(“%d\n”,ans);
}
処理(Processing)
コンピューター処理には以下のものがあります。
- コンピューターは、データを処理して必要な情報を生成するために使用されます。
- データ処理には、計算、比較、論理演算、データの変換などが含まれます。
- CPUは、命令を順次実行することで、データを操作して処理結果を生成します。
命令の実行と処理は、コンピュータの中核的な機能であり、CPUが命令を実行してデータを処理することで、プログラムの動作や目的が達成されます。
メモリとストレージ
主記憶(メインメモリ)と補助記憶(セカンダリメモリ)の違い
主記憶装置は、コンピュータが実行中のプログラムやデータを格納するための高速アクセス可能な領域です。CPUが直接アクセスできるため、処理速度が速く、プログラムやデータの読み書きが効率的に行えます。主記憶は一時的なデータの格納場所であり、電源が切れるとデータは失われます。主記憶は、RAM(ランダムアクセスメモリ)とも呼ばれます。
補助記憶装置は、長期間のデータ保存やプログラムの永続性を提供するための領域です。ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスク(CD、DVD)、USBフラッシュドライブなどが含まれます。補助記憶装置は、主記憶よりも容量が大きく、データは電源を切っても保持されます。しかし、主記憶に比べてアクセス速度は遅くデータの読み書きに時間がかかります。
データの読み書きと保存
「データの読み書きと保存」とは、コンピューターやデジタルシステムにおいて、データを取得したり記録したりするプロセスのことを指します。
データの読み込み(Read)
データの読み込みは、補助記憶装置やデータソースからデータを取得し、コンピューターのメインメモリに移動するプロセスのことです。プログラムが実行されたり、データが処理される際に必要な情報を取得するために行われます。読み込まれたデータは、プログラムが操作したり処理したりするために使用されます。
データの書き込み(Write)
データの書き込みは、コンピューターの主記憶装置や補助記憶装置に新しいデータを保存するプロセスのことです。プログラムがデータを生成したり、ユーザーがデータを入力したりした際に行われます。書き込まれたデータは、将来的に読み取られたり処理されたりするために保存されます。
データの保存(Save)
データの保存は、データを一時的なメモリから永続的な記憶装置に移動して保管するプロセスのことです。コンピュータがシャットダウンされたり、電源が切れたりしてもデータを失わないようにするために行われます。保存されたデータは、後で再び読み込んで使用することができます。
データの転送と通信
入出力とデバイスの接続
コンピューターやデジタルシステムにおいて、データや情報が外部のデバイスとやり取りされるプロセスや方法を指します。
入出力(Input/Output, I/O)
入出力は、コンピューターが外部からデータや情報を受け取ること(入力)や、外部にデータや情報を送信すること(出力)を指します。入力はユーザーがデバイス(例: キーボード、マウス、タッチスクリーン)を通じてデータをコンピュータに提供するプロセスです。出力はコンピューターがデータや情報をデバイス(例: ディスプレイ、プリンター、スピーカー)を通じてユーザーや他のシステムに提供するプロセスです。
デバイスの接続(Device Connectivity)
デバイスの接続は、コンピューターと外部のデバイス(ハードウェア)を物理的または論理的に結びつけるプロセスを指します。コンピューターは様々な種類のデバイスと接続されることで、データの入出力や制御を行います。デバイスの接続には、適切なケーブル、ポート、インターフェース、ドライバなどが必要です。例えば、USBケーブルを使用した外部デバイスとの接続などが該当します。
データ通信とネットワーキング
「データ通信とネットワーキング」は、情報やデータを異なるコンピューターやデバイス間で送受信するプロセスや仕組みを指します。
データ通信(Data Communication)
データ通信は、異なる場所にあるコンピュータやデバイス間でデータや情報を送受信するプロセスです。データ通信は、有線または無線の通信手段を使用して行われ、データはビットやバイトの形式で送信されます。インターネットや内部ネットワーク、ワイヤレス通信などがデータ通信の例です。
ソフトウェアの仕組み
オペレーティングシステムの役割
オペレーティングシステム(OS)の役割は、コンピューターやデバイスのハードウェアとソフトウェアの間で仲介を行い、効率的で使いやすい環境を提供することにあります。
ハードウェアの管理(Hardware Management)
オペレーティングシステムは、コンピューターのハードウェア(CPU、メモリ、ディスクドライブなど)を効率的に管理すること。およびハードウェアのリソースの割り当てや制御、複数のタスクの管理などを行うことで複数のプロセスが同時に実行される環境を提供します。
プロセスとタスク管理(Process and Task Management)
オペレーティングシステムは、複数のプロセス(実行中のプログラム)を管理し、CPUの割り当てやスケジューリング、プロセス間の通信と同期を制御します。これにより、複数のタスクを順番に実行させたり、同時に複数のタスクを動作させることが可能になります。
ファイルシステムの管理(File System Management)
オペレーティングシステムは、ファイルとディレクトリを管理し、データの読み書き、保存、整理することを担います。ユーザーがファイルを作成、編集、削除するためのインターフェースを提供し、ファイルの整合性とセキュリティを保持します。
ユーザーやアプリケーションのインターフェース(User and Application Interface)
オペレーティングシステムは、ユーザーやアプリケーションがコンピュータを操作するためのインターフェースを提供します。これには、コマンドラインインターフェース(CLI)やグラフィカルユーザーインターフェース(GUI)などが含まれます。
ハードウェア抽象化(Hardware Abstraction)
オペレーティングシステムは、ハードウェアの詳細な操作を抽象化し、アプリケーションに対して最適化されたインターフェースを提供します。これにより、アプリケーション開発者はハードウェアの細かい仕様を理解していなくても開発することができます。
セキュリティとアクセス制御(Security and Access Control)
オペレーティングシステムは、システムへのアクセスを制御することでセキュリティを維持します。ユーザーやアプリケーションのアクセス権を管理して、不正なアクセスやデータ漏洩を防ぐための仕組みを提供します。
アプリケーションとプログラミング
「アプリケーションとプログラミング」とは、コンピュータ上で実行されるソフトウェアやプログラムに関連する概念です。
アプリケーション(Application)
アプリケーションは、コンピュータ上で特定の目的を達成するために作成されるソフトウェアのことを指します。例えば、ワードやエクセル、スプレッドシート、ウェブブラウザ、メールクライアントなどがアプリケーションの例です。
プログラミング(Programming)
プログラミングは、コンピューターに特定のタスクや動作を指示するための指示書(プログラム)を作成する行為を指します。プログラミングには、プログラムの設計、コードの記述、テスト、デバッグなどが含まれます。プログラミングを行うことで、コンピューターは特定の動作や機能を実行するための手順を理解して実行します。
セキュリティーとプライバシー
コンピューターセキュリティの基本
「コンピューターセキュリティの基本」とは、コンピューターシステムやデータを悪意ある攻撃や不正アクセスから保護するための基本的な概念と手法を指します。
認証とアクセス制御
ユーザーがシステムやデータにアクセスする際には、正当なユーザーであることを確認する認証手段が重要です。ユーザー名とパスワード、指紋認識、多要素認証などが使用されます。また、アクセス制御を設定して権限のないユーザーが機密情報にアクセスできないようにします。
データの暗号化
データを暗号化することで、外部からの不正アクセスによる情報漏洩を防ぎます。暗号化とは、データを不可読な形に変換し、正当なキーを持つ人だけが復号できるようにすることです。
セキュリティパッチとアップデート
ソフトウェアやオペレーティングシステムは、セキュリティの脆弱性を修正するために定期的にアップデートやパッチが提供されます。これらのアップデートを適用することで、最新のセキュリティ対策を導入することができます。
マルウェア対策
マルウェア(悪意のあるソフトウェア)からの保護は重要です。アンチウイルスソフトウェアやファイアウォールを使用して、マルウェアの侵入を防ぎ、感染を検出・駆除します。
バックアップと復旧計画
データのバックアップは、データの喪失や災害時の復旧に備える重要な手段です。定期的なバックアップと復旧計画の策定を行うことで、データの保全と業務の継続性を確保します。
ソーシャルエンジニアリングの対策
ソーシャルエンジニアリングは、人間の心理を悪用して情報を入手しようとする手法です。したがって、セキュリティ教育や訓練を通じて、このような攻撃から保護する取り組みが非常に重要です。
ネットワークセキュリティ
ネットワークセキュリティは、ネットワーク内外からの攻撃からデータと通信を守るための対策を指します。具体的には、ファイアウォール、侵入検知システム(IDS)、仮想プライベートネットワーク(VPN)などが使用されます。
データ保護と個人情報の重要性
「データ保護と個人情報の重要性」とは、個人や組織のデータを適切に保護し、個人情報の漏洩や不正アクセスから守ることの重要性のことです。
個人情報のプライバシー保護
個人情報は、氏名、住所、電話番号、メールアドレスなど、個人を特定する情報のことを指します。このような情報が漏洩すると、プライバシーが侵害されたり、詐欺や身元の盗用などのリスクが高まります。適切なセキュリティ対策を行うことで、個人情報を守り、プライバシーを尊重することが重要です。
法的規制とコンプライアンス
多くの国や地域で、個人情報の保護に関する法的規制が存在します。これらの法律や規制に適合しない場合、組織は罰金や法的な責任を負う可能性があります。個人情報の適切な保護は、法的なコンプライアンスを確保する重要な要素です。
信頼の維持
個人情報の適切な保護は、顧客や利用者との信頼関係を築くために不可欠です。情報漏洩やデータ侵害が発生すると、顧客やユーザーは組織の信頼性を失い、ビジネスに対する悪影響が生じる可能性があります。
知的財産と競争優位性の保護
企業は、自社のプロジェクト、製品、アイデアなどの知的財産を保護する必要があります。データの流出や不正アクセスにより競合他社に情報が漏れてしまうと、競争優位性が損なわれる可能性もあります。
ビジネスの継続性
データの保護は、災害やシステム障害に備えるためにも重要です。バックアップや冗長性を確保することで、データの損失や業務の中断を最小限に抑えることができます。
データ保護対策は、近年増加しているオンライン犯罪やサイバー攻撃などのリスクに対抗する手段でもあります。適切なセキュリティ対策と意識向上に努めましょう。
未来の展望とトレンド
コンピューターの進化
コンピューターサイエンスという分野が今までどのように進歩してきたのか、その歴史的な変遷や技術的な進展について簡単に振り返ってみましょう。
項目 | 内容 |
ハードウェアの進化 | コンピュータのハードウェア技術の進歩と共に進行してきました。初期のコンピュータは大きくて高価で、性能も限られていましたが、半導体技術の発展やマイクロプロセッサの登場により、小型かつ高性能なコンピュータが実現されました。 |
プログラミング言語とソフトウェアの進化 | 新しいプログラミング言語やソフトウェア開発ツールの登場により、効率的なコードの記述や複雑なアプリケーションの開発が可能になりました。高水準のプログラミング言語の登場により、プログラミングがよりアクセス可能なものとなりました。 |
アルゴリズムとデータ構造の進化 | アルゴリズムとデータ構造の研究により、計算効率の向上や問題の解決方法が進化しました。高速なソートアルゴリズムや効率的なデータベース管理システムなど、多くの技術が開発されました。 |
ネットワーキングとインターネットの発展 | インターネットの普及により、世界中の情報が瞬時にやり取りされるようになり、ネットワーキング技術の進化が重要となりました。ウェブ開発やクラウドコンピューティングの進展も、コンピューターサイエンスの進化を支えました。 |
人工知能と機械学習の台頭 | 近年では、人工知能(AI)と機械学習(Machine Learning)の分野が急速に進化し、自律的な判断や学習を行うコンピュータシステムが実現されました。これにより、自然言語処理、画像認識、自動運転など多岐にわたる応用が進展しています。 |
セキュリティとプライバシーの重要性 | コンピューターサイエンスの進化とともに、セキュリティとプライバシーの保護がますます重要となりました。サイバーセキュリティの技術の進歩や個人情報保護法の導入などが行われています。 |
まとめ
「コンピューターの仕組みと特長」を理解しておくことで、あなたのエンジニアとしての新たな挑戦は大きく飛躍することに違いありません。
なぜなら、いろんな意味でリソースの最適化は重要な要素であるためです。そのためには、コンピューターがどのような仕組みで動作するのかを学んでおくことが重要と言えます。
新たなステップを踏み出すなら、自己学習と情熱も大事です。アセンブリ言語から知識を深めておくことで、きっと、あなたを一流のエンジニアへと導くことになるでしょう。
最後に「DPro」で学んだ15名の受講生・卒業生のご意見を掲載しますのでご参考にされてください。
受講生 | 性別 | 評価 | 内容 |
2021年05月コース受講者 | 男性 | 5 | 同期に教える経験は良い経験だった。オリジナルアプリ制作で一気に成長したと感じた。たまにメンターさんのへの質問時間が長い時があるので、増やして欲しいと感じることがあった。 |
2021年05月コース受講者 | 男性 | 5 | 学んだことを習得したのはもちろんなのですが、学んでいないことでも感覚で解決策を導き出せるようになったことが一番の成果だったと思います。例えばcssやbootstrapなど、途中ほとんど触っていないが、プログラミングに慣れたのか、なぜかできる。という状況を何度か経験しました。 |
2021年05月コース受講者 | 男性 | 5 | チェリー本の発表で自分が学習した内容をプレゼンしたことは、わかってないことは話せないということを改めて実感する良い経験だった。オリジナルアプリケーション作成時に自分が欲しい値の受け渡しを自分の力でできるようになった時、コース受講前と比べて圧倒的に成長したと自信を持てるようになり、受講して良かったと思えた。 |
2021年05月コース受講者 | 男性 | 5 | 簡単なアプリであれば自力で作成できると分かった時に成長を感じました |
2021年05月コース受講者 | 男性 | 5 | エラーの解決に手間取り、オリジナルアプリの合格が遅れたことは心残りですが、確実に入学前と比べて自走力が身についたと思います。また、スキルだけではなく、お互いに高めあえる同期もできるため、おすすめのコースです。 |
2021年05月コース受講者 | 女性 | 5 | DPro上のテキストや課題への自己学習や、卒業発表会への準備を通じて、仮説ベースで問題解決のために行動する力を付けられ、DICのコースを受講して本当に良かった。一部、外国人メンターとの意思疎通がうまくいかないために、課題解決の時間がよけいかかると感じることがあったのは少し残念だった。 |
2021年05月コース受講者 | 男性 | 5 | AWSがなかなか終わらず(6日間くらいかかった)、オリジナルアプリの要件定義に早く進みたいのに進めないもどかしさが辛かった。しかし、課題への自己学習を通じて、すぐに他人に答えを求めずにまず自分の頭で考えられるようになり、最後には圧倒的な成長を感じられ、受講して良かったと感じている。 |
2021年05月コース受講者 | 男性 | 5 | チーム開発の経験を積めて良かったです。 |
2021年05月コース受講者 | 女性 | 5 | ペアプロやグループワークを通じて、人前で自分の考えを主張するコミュニケーション力をつけられたのは大きな成長だった。また、自分が人と一緒になって作業をすることが好きなんだということが改めて知れたのは良い経験だった。 |
2021年05月コース受講者 | 男性 | 5 | お互いに高めあい、切磋琢磨しあえる同期と一緒に勉強できたことは本当に良い経験でした。一方、相談人数が多い時の待ち時間をなんとかして減らせれば、もっと良いのではと思いました。 |
2021年05月コース受講者 | 女性 | 4 | プレゼンの機会は普段なかなかないですが、自分の理解を高めるための良い経験になりました。 |
2021年05月コース受講者 | 男性 | 4 | カリキュラムの内容が理解できなかった時があり辛かったですが、オリジナルアプリ制作を通じて徐々に問題解決能力を高めることができ嬉しかったです。特に、オリジナルアプリを完成させた時はとても嬉しかったですし、どのような問題であっても考え抜けば何でもできるという自信を持てたことは一番の学びです。 |
2021年05月コース受講者 | 女性 | 4 | 頑張りを後押ししてくれる環境だと知り、入校しました。 スタッフの方は皆気さくで話しやすく、丁寧にサポートして下さいました。ただ、欲を言えば、現場経験のある方も配置して欲しかったです。カリキュラム外の技術や、現場でのアプリの作成手順など、聞いてみたいことがたくさんありました(自身でも調べられますが、解釈が合っているかわからず…)。 その方が、モチベーションアップや、成長の実感に繋がると感じました。 実際に手を動かしながら学べるテキストは、とても良かったです。 |
2021年05月コース受講者 | 男性 | 4 | Rails6系で卒業課題を作ろうか検討していた時に、6の場合はエラーも自分で解決して下さいと言われ、挑戦できなかった。 コードレビューの時に出来るだけ新しいバージョンで作った方がいいと聞いていたので、挑戦したかったですが、カリキュラムはRails5で進めていたのでメンターさんの力が借りられないのであれば無理するのはやめようと諦めました。 これだけが心残りです。 しかし、これは自分の力不足であり、今後自己学習を進めてRails6系でアプリが作れるよう頑張ります! ディープロに入校し、素晴らしい環境で学べたことに感謝しています。 ありがとうございました! |
2021年05月コース受講者 | 男性 | 4 | 卒業できない人がいることは正直怖かったが、それを逆にバネにして、卒業発表会への準備や、幅広く情報交換できる人脈を通じて、スキルアップを実感できたのは良い経験だった |
スタックとは?一時的なデータの保存に使われるメモリ領域のことで、一般的には引数やローカル変数の保持に使用されます。