どうも、テックキャンプ受講中 てぃかし です。
テックキャンプ (旧テックエキスパート)の50日後の経過報告です。(当時は「テックエキスパート」という名称でした。)
いよいよチーム開発がスタートします。
チームの決まり方やチーム開発までに学ぶことなどについて書いていきます。
前回の記事はこちら
【テックキャンプ】制作物 納期に注意! プログラミングスクール経過報告
テックキャンプの40日後の経過報告です。 テックキャンプでは、制作物を2つ作ることになります。 1つ目にチャットアプリ(ChatSpace)を作ることになるのですが、実はそれには納期があります。 今回 ...
続きを見る
〜当サイト限定!最大6万円分お得!〜
※TECH CAMPアンバサダーからの紹介が最もお得です。アンバサダーから紹介してもらいたい方はこちらのアンバサダー特典の記事をご確認ください。(下記特典より4万円分お得)
アンバサダー経由ではなく、紹介コードを使って割引にしたい方は、紹介コード【m0t2ki】を入力してください。TECH CAMP エンジニア転職を受講される方は、現金1万円がもらえます。無料カウンセリング当日のお申し込みの場合は、さらに1万円OFFとなります。「TECH CAMP プログラミング教養」を受講される方は受講料が5%OFFとなります。
紹介コードを利用する方は以下から登録ページに移動し、紹介コード欄に「m0t2ki」をご入力ください。
紹介コード:m0t2ki
※紹介コードの 0(ゼロ)の入力間違いにご注意ください。o(オー)ではありません。コピーして貼り付け推奨。
上記割引とは併用できませんが、TECH CAMP アンバサダー経由の紹介なら5万円分のAmazonギフト券がもらえます。無料カウンセリング当日のお申し込みの場合は、さらに1万円OFFとなります。
TECH CAMPアンバサダーの詳細は下記の記事をご確認ください。
テックキャンプアンバサダーから紹介を受けてAmazonギフト券5万円分もらう手順
今回は、このような希望を持っている人向けの記事です。 テックキャンプ(TECH CAMP)受講を検討している方に朗報です。 この記事を読んでいる人は、テックキャンプを最もお得に受講することができます! ...
続きを見る
今回の内容は下記の目次の通りです。
テックキャンプ 50日で学んだこと
受講から40〜50日で学んだことは下記の内容です。
- 個人アプリ
- モデリング
- リファクタリング
- 例外処理
- 情報セキュリティ
- チャットアプリ理解度テスト(jQuery)
- チーム開発
それぞれについて書いていきますね。
個人アプリ
チャットアプリ(ChatSpace)の制作が終わった人は、個人アプリの制作に進みます。
チーム開発まで1週間空いていたので、1週間、個人アプリの制作に取り組めました。
僕はチャットアプリ提出直後、風邪でダウンしてしまったので、制作時間もほぼありませんでした。
なので、個人アプリはチーム開発スタート時は未完成でした。
([追記]チーム開発終了後、タスク管理のアプリケーションを作成しました。)
個人アプリを披露する会があったのですが、良い感じのアプリを作っている人もちらほらいました。
お気に入りの服やアクセサリーの画像を掲載できるサイトとか、
天気予報が見れるサイトとか、
今まで学んだことをしっかり活用して作っている人もいました。
モデリング
やりたいことをプログラムに落とし込むために必要な工程の一つが、モデリングです。
例えば、猫を飼うことを擬似体験できるゲームがあったとします。
猫には、「性別」「種類」といった データ があって、「鳴く」「食べる」といった 振る舞い をします。
作りたいものに合わせて現実の「猫」から必要なデータや振る舞いを選択することを「モデリング」あるいは「抽象化」と呼びます。
プログラムを作る際にこのモデリングは必須の作業となります。
リファクタリング
プログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することを「リファクタリング」と呼びます。
チーム開発では、複数の人が協力して、コードを記述しますが、自分勝手にコードを書いていくのではなくて、他人にも自分が書いたコードをわかりやすく見てもらう必要があります。
そこで、リファクタリングという考え方が必要になります。
RailsにはMVCという考え方があって、「Model - View - Controller」に役割を分けることができます。その役割はこんな感じです。
・Controller
リクエストに応じて適切な処理を呼び出す
・Model
ビジネスロジック(データ処理)を行う
・View
表示処理を行う
これらについてコードを記述していきますが、モデルの書くべき処理をコントローラに記述してしまったり、コントローラに書くべき処理をビューに記述してしまったりすることで、どこにコードが記述されているのかがわかりづらくなり、見通しが悪くなります。
そのようなことを改善していくのがリファクタリングです。
例外処理
例外処理とは、例外が発生した場合に実行する処理のことを指します。
例えば、オンラインゲームでチケットを消費して、プレイするゲームがあるとします。
そのゲームに障害が発生して、お詫びに「全ユーザーに補償のチケットを10枚発行する」ということをするときに、途中でなんらかのエラーが発生してしまうと、チケットを発行する処理が止まってしまいます。
その結果、チケットを受け取れたユーザーと受け取れなかったユーザーに分かれてしまいます。
そうなったら、不都合、不公平ですよね。
そこで活躍するのが例外処理です。
具体的には発生した例外を捕捉し、例外が起こった際に呼び出されるrescueという条件節を使います。
エラーが発生した場合の処理をrescueの中に書きます。
このrescueを使って、例外が起こった時に、
そのまま全ユーザーにチケットを発行する処理をするか、
全ユーザーにチケットを発行しなかったことにして処理を中止することにするか、
というように、エラーが発生したときの対処が可能になります。
情報セキュリティ
情報セキュリティと言っても、色々あります。
今から書くことはユーザーとしても、エンジニアとしても注意すべきことです。
xss
まず、表示処理に伴う問題です。
xss(クロスサイトスクリプティング)という、外部からの入力に対しての脆弱性を突いた攻撃と対策に関して学びました。
xssは、外部よりスクリプトを埋め込まれて、クッキーを盗まれたり、JavaScriptによる攻撃を受けてしまう攻撃です。
例えば、
- 悪い人Aがあるサイトに悪意のあるスクリプトを埋め込みます。
- Aはそのサイトに誘導する罠サイトを用意します。
- AはBに罠サイトに誘導するようなメールを送ります。
- Bは罠サイトにアクセスして、悪意のあるスクリプトが埋め込まれたサイトにアクセスする。
- Bのブラウザ上で、Aが埋め込んだスクリプトが実行される。
- このような手順で攻撃を受けてしまい、クッキーが盗まれたり、ウイルスに感染したりします。
このXSSを防ぐにはHTML生成時に意味を持つ特殊文字列を文字参照によりエスケープさせます。
SQLインジェクション
SQL呼び出しに伴う脆弱性。
SQLインジェクションという、アプリケーション側のSQLの呼び出し時のセキュリティ不備を意図的に利用する攻撃です。
CSRF
次に「重要な処理」に伴う脆弱性です。
CSRF(クロスサイトリクエストフォージェリ)という、ユーザーにとって重要な処理を勝手に行ったことにしてしまう攻撃手法です。
重要な処理とは、例えばこんなことですね。
- 利用者のアカウントによる物品の購入
- 利用者の退会処理
- 利用者のアカウントによる掲示板への書き込み
- 利用者のパスワードやメールアドレスが変更
セッションハイジャック
セッション管理の不備により生じる、セッションハイジャックとは名前の通り、なんらかの方法を用いて正規利用者ではないものが他人のセッションIDを乗っ取る攻撃手法です。
正規利用者の個人情報閲覧、送金や物品購入、なりすましメールの送信やSNSへの犯罪予告など正規利用者への被害はとても大きくなります。
ChatSpace理解度テスト(jQuery)
チャットアプリの制作でjQuery使っていきましたので、その理解度テストです。
内容としては、簡単に書くと、
- Ajaxによる投稿
- 入力文字数のカウント
などに関する問題が出ましたね。テスト形式で実装していくという感じです。
テックキャンプ のチーム開発
最終課題のチーム開発では、アジャイル開発と呼ばれるモダンな開発手法を、スクラムを用いてチャレンジします。
メルカリのコピーサイトを開発します。
アジャイル開発と呼ばれるモダンな開発手法で、スクラムを用いて開発を進めていきます。
ここで出てきた、「チーム開発」「アジャイル開発」「スクラム」については、次回の記事で深掘りしていきたいと思います。
チームは新たに編成されます。
テストの成績などで決まるそうなので、テストの結果が良くない人が固まってチームが破綻するといったことはほぼないかと思います。
Githubで開発の資材を共有しながら進めるので、チームでのGithubの使い方も学ぶことが多いです。(※Githubは、プログラムコードなどを保存、公開、共有することができるWebサービスです。)
チーム開発が始まって1週間が過ぎたところですが、感想は、
やっぱり難しいですね。
1週間でやったことは、DB設計、ビューの制作です。
DB設計はみんなで考えながらやりました。
DBはあとあと何度も変更するのは難しいので、最初にチームの認識を合わせるためにきっちりとやっておくべきだと思います。
あと、Githubをチームで使っていくことになるので、チームでの使い方も話し合いました。
テックキャンプのチーム開発に限らず、これは現場のエンジニアの方々もしっかりやっておくべきことだと思います。
次回予告
次回は、チーム開発後半ということで、チーム開発ではどんなことをしていくのかをもう少し深掘りしてお伝えします。
未経験の方はもちろん、エンジニアの方にも参考になるような内容にしたいと思っていますので、興味のある方はぜひご覧ください。
今回はここまで。次回は60日後の経過報告です。お楽しみに!
TECH CAMP経過報告の次の記事はこちら
【テックキャンプ 】チーム開発のアピールポイント〜TECH CAMP 体験記〜
テックキャンプ (旧テックエキスパート)の60日後の経過報告です。(当時は「テックエキスパート」という名称でした。) 今回の記事では、テックキャンプ(TECH CAMP)のチーム開発で得られる知識や技 ...
続きを見る
動画でご覧になりたい方は、ぜひYouTubeの方もチェックしてください。
------------------------------
〜当サイト限定!最大6万円分お得!〜
紹介コード【m0t2ki】を入力して、TECH CAMP エンジニア転職を受講される方は、1万円OFF。無料カウンセリング当日のお申し込みの場合は、さらに1万円OFFとなります。「TECH CAMP プログラミング教養」を受講される方は受講料が5%OFFとなります。
紹介コードを利用する方は以下から登録ページに移動し、紹介コード欄に「m0t2ki」をご入力ください。
紹介コード:m0t2ki
※紹介コードの 0(ゼロ)の入力間違いにご注意ください。o(オー)ではありません。コピーして貼り付け推奨。
TECH CAMPアンバサダー経由の紹介で5万円分のAmazonギフト券がもらえます。(上記割引とは併用不可)
※本記事の内容は2019年11月中旬にYouTubeで公開した内容とほぼ同じです。