学部・研究科Faculty/Graduate school | 情報科学部Faculty of Computer and Information Sciences |
添付ファイル名Attached documents | |
年度Year | 2023 |
授業コードClass code | J3002 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 秋学期集中/Intensive(Fall) |
曜日・時限Day/Period | 集中・その他 |
科目種別Class Type | |
キャンパスCampus | 小金井 |
教室名称Classroom name | |
配当年次Grade | 1 |
単位数Credit(s) | 2 |
備考(履修条件等)Notes | |
他学部公開科目Open Courses | |
他学部公開(履修条件等)Open Courses (Notes) | |
グローバル・オープン科目Global Open Courses | |
成績優秀者の他学部科目履修制度対象Interdepartmental class taking system for Academic Achievers | |
成績優秀者の他学部科目履修(履修条件等)Interdepartmental class taking system for Academic Achievers (Notes) | |
実務経験のある教員による授業科目Class taught by instructors with practical experience | |
SDGsCPSDGs CP | |
アーバンデザインCPUrban Design CP | |
ダイバーシティCPDiversity CP | |
未来教室CPLearning for the Future CP | |
カーボンニュートラルCPCarbon Neutral CP | |
千代田コンソ単位互換提供(他大学向け)Chiyoda Campus Consortium | |
選択・必修Optional/Compulsory | 選択 |
カテゴリー(2022年度以降入学者)Category (2022~) | |
カテゴリー(2021年度以前入学者)Category (~2021) | |
カテゴリーCategory | 専門教育科目 専門科目 |
【Outline (in English)】
In many IT systems, including smartphone games and apps, it's not only rely on client-side software such as web browsers, iOS, or Android apps but also server-side software. For instance, the use of server-side software, which stores user information in databases, is essential.
Software engineers who develop server-side software are known as backend engineers. These jobs are in high demand across various industries and business types.
In this lecture, we'll learn about the Go programming language. Go is widely used in server-side development across diverse enterprises, ranging from rapidly growing startups to large companies, in areas like from gaming to business SaaS. It's also adapted in well-known open-source software (OSS) like Kubernetes and gVisor.
The main goal is to learn the basics of Go and enhance practical skills through exercises. However, the aim isn't just to learn the syntax and usage of the programming language.
The course will be taught by active software engineers working for a startup. He has experiences in hiring and training new graduates at large company.
Thus, we are going to start by understanding what is a software engineer, and what the skills are required for a backend engineer, before diving into the technical learning.
【Default language used in class】
日本語 / Japanese
【授業の概要と目的(何を学ぶか) / Outline and objectives】
スマホゲームやスマホアプリを始め、多くのITシステムでは、WebブラウザやiOS、Androidアプリだけでは成り立たず、データベースにユーザ情報を保存したりとサーバーサイドのソフトウェアも必須となっている。
サーバーサイドのソフトウェアを開発するソフトウェアエンジニアは、バックエンドエンジニアと呼ばれ、業界や事業内容を問わず非常に需要の高い職種となっている。
本講義では、急成長をしているスタートアップからメガベンチャー、ゲームから業務SaaSまで、幅広い企業規模や事業のサーバーサイドの開発言語として、そしてKubernetesやgVisorなどの著名OSSに活用されているプログラミング言語Goを学ぶ。
Goを基礎から体系的に学び、演習を通じてより実践的な実装力を身につけることを主目標とする。しかし、単にプログラミング言語の文法や活用方法を学ぶことだけを目標としない。
企業で働く現役のソフトウェアエンジニア、そしてメガベンチャーで新卒採用および新卒研修を担当した経験を持つ講師から、そもそもソフトウェアエンジニアという職業とは何か、バックエンドエンジニアに必要とされているスキルは何かを理解した上で学習に取り組む。
【到達目標 / Goal】
ソフトウェアエンジニアおよびその中の業種の1つであるバックエンドエンジニアがどのような職業なのか知り、バックエンドエンジニアとして必要なスキルとは何かをイメージできるようになる。
Goの言語仕様や開発方法を正しく身につけ、コマンドラインツールやWebアプリケーションを構築できるようになる。
【この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連) / Which item of the diploma policy will be obtained by taking this class?】
情報科学部ディプロマポリシーのうち「DP3-1」と「DP4-3」に関連
【授業で使用する言語 / Default language used in class】
日本語 / Japanese
【授業の進め方と方法 / Method(s)】
(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
講義資料(スライド)を使って解説し、それをもとに演習やグループディスカッションを行う。最終課題については授業内で成果発表を行う。
【アクティブラーニング(グループディスカッション、ディベート等)の実施 / Active learning in class (Group discussion, Debate.etc.)】
あり / Yes
【フィールドワーク(学外での実習等)の実施 / Fieldwork in class】
なし / No
【授業計画 / Schedule】
授業形態 / methods of teaching:オンライン/online
※各回の授業形態は予定です。教員の指示に従ってください。
回 / No. | 各回の授業形態予定 / methods of teaching | テーマ / Theme | 内容 / Contents |
---|---|---|---|
第1回 | オンライン/online | ソフトウェアエンジニアについて知ろう/Goの学習を始めよう | ソフトウェアエンジニアやバックエンドエンジニアについて、Goの概要、開発環境の構築、公式ドキュメントの読み方、Goの活用事例、Goコミュニティ |
第2回 | オンライン/online | Hello, Worldを表示しよう/Goクイズメーカーを作ろう | プログラムの動かし方、main関数、変数、制御構文(if、for、switch)、標準パッケージ |
第3回 | オンライン/online | ポーカーゲームを作ろう | 組込み型、コンポジット型(配列、スライス、マップ)、ユーザ定義型 |
第4回 | オンライン/online | メモリ機能つき単位変換ツールを作ろう | 関数、メソッド、ポインタ |
第5回 | オンライン/online | 家計簿プログラムを作ろう | 標準出力と標準エラー出力、ファイル操作、プログラムの終了、CSV、文字列処理、課題1の出題 |
第6回 | オンライン/online | 画像変換ツールを作ろう | 自作パッケージの作成方法、サードパーティ製パッケージの利用方法、Go Modules |
第7回 | オンライン/online | 勉強会カレンダーツールを作ろう | 日付の処理、抽象化、インタフェース、テストの必要性、単体テスト、テスタビリティ、効果的なテストの書き方 |
第8回 | オンライン/online | 画像チェックツールを作ろう | エラー処理の必要性、エラー処理の基本、実践的なエラー処理 |
第9回 | オンライン/online | ポーカーゲームをGUIアプリにしよう | Go製のゲームエンジンであるEbitengine™の使い方を学ぶ |
第10回 | 対面/face to face | 勉強会検索サイトを作ろう | HTTPクライアントを使う方法、HTTPサーバを構築する方法、テンプレートエンジン、データベースへの接続 |
第11回 | 対面/face to face | 勉強会検索サイトをインターネットに公開しよう | インターネットからアクセスできる形でWebアプリケーションをデプロイ、公開する方法、課題2の出題 |
第12回 | 対面/face to face | 画像変換ツールを効率化しよう | ゴールーチンとチャネル、syncパッケージ、ゴールーチンのスケジューラ |
第13回 | 対面/face to face | 最終課題演習 | 最終課題を制作するにあたってアイデアを練る、講義で学習した内容を元に自由にソフトウェアを制作する |
第14回 | 対面/face to face | 成果発表 | 最終課題の成果発表を行う |
【授業時間外の学習(準備学習・復習・宿題等) / Work to be done outside of class (preparation, etc.)】
授業時間内に終了しなかった課題や演習は授業外で行うことを想定する。本授業の準備・復習等の授業時間外学習は、各週につき4時間を標準とします。
【テキスト(教科書) / Textbooks】
担当教員が作成した講義資料を配布する。
【参考書 / References】
https://go.dev/
https://tenn.in/go
https://docs.microsoft.com/ja-jp/learn/paths/go-first-steps/
改訂2版 みんなのGo言語、2019年、定価2,398円
エキスパートたちのGo言語 一流のコードから応用力を学ぶ、2022年、定価3,278円
【成績評価の方法と基準 / Grading criteria】
課題1:20%、課題2:20%、最終課題:60%で評価する。
【学生の意見等からの気づき / Changes following student comments】
特になし
【学生が準備すべき機器他 / Equipment student needs to prepare】
情報科学部 貸与Note PCの利用を前提とする
【その他の重要事項 / Others】
特になし