テックキャンプ修了しました!

テックキャンプを勉強期間を終え、就職できたので卒業証書もらえました!

テックキャンプの感想や私の就職までのステップをまとめました!

自己紹介

私は、主婦33歳の3人育児中のオンライン夜間休日コース89期生のフジフジと言います。 今回はテックキャンプについて語るよ!

卒業から3ヶ月でやっと修了か!長かったねー

そうなんですよ!自分の引っ越しが絡んで、就職サポーターさんが最後頑張ってフォローしてくれました! 育児に引越しに就活に必死でしたよ!w

カリキュラムの受講卒業後、引越しの荷ほどきやら、保育園探しやらで1ヶ月まともに勉強できませんでした! そんな私ですが3ヶ月でSEの就職に至りました!

そんなテックキャンプでの勉強や体制が気になる方への情報提供や選択肢の一つになればと思い、今回書き残します!

テックキャンプに出会うまで

私は地方公務員でした。旦那さんと結婚するため退職しましたが、将来に不安がありました。当時は、見知らぬ土地で、友人もいない、手に職があるわけじゃなく、育児をしていたらいつの間にか歳を重ね33歳に。。。
そんな中でマコなり社長のツィッターを知り最初は「◯◯◯◯のおすすめ雑貨ランキング10」などしか見ていなかったのですが、そこで配信者のマコなりさんが提供しているシステムエンジニアの受講サービスを知りました!
パソコンが苦手ではないけど得意でもない私でしたが、マコなりさんの紹介するシステムエンジニア

  • PC1つでなんでもできる!
  • どこでも仕事ができる
  • 年齢制限がない

強く興味を持ったのがこの原点です。

テックキャンプ受講申し込み

とは言っても受講費用は安いものではありませんでした。 実際その金額を支払うには勇気が相当いると思います。 (ちなみに私は割引きキャンペーンのタイミングでもう押し込みをしました!その後もっとお安くキャンペーンをしていて悔しくなりましたが仕方ない!見ないほうがいいw)

ですが、2週間は「自分に合わない!」という理由でも解約OKなので合わないかもわからない。。。と思う人には解約制度もあるのでおすすめです! 実際2週間で辞めた人もオンラインなので正確にはわからないけど半分消えてた。

テックキャンプ受講開始

向き不向き

向いてる人:自分で学習を進める意欲が保てる人
向いてない人:スケジュール管理が出来ない人

学習環境

まずMacのPCが必要です!規定のスペックは学習するタイミングにより変わると思うのでHPで確認することが必要です。

  • パソコン
    私はmacbook pro2020の16GBを買いました!正直そんなにメモリいらないかも。。。と思ったのですがいいのが欲しくて妥協しないで買いました!23万飛んだ!!w 結局うちの就職先では自前のPCを使えないので自宅で学習するだけになりそうです。メモリそんなにいらなかったよ!私みたいな人は8GBで十分では?

  • PCスタンド 他にはマコなり社長がお勧めしてた人間工学に基づいたPCスタンド!高さの位置が変えられるしアマゾンで2千円代で買えたので これは絶対あったほうがいい!ないと長時間の作業は首が下向きで痛い!

  • Macブルートゥースキーボード

  • マウス
    スタンドに乗せるのでキーボードとマウスは私には必須

  • モニター
    これはぜっっ対あったほうがいい!とても助かりました! 大画面で作業しつつ、ビューをMacで確認してました。 最初こそそんなに画面開かないかもしれないけどアプリ作り出したら画面足りなすぎ!!!

勉強する環境を整えることがまず必要だと思います!
全部じゃなくてもやっぱり勉強の時間は有限だから!
うちは勉強時間の確保に、子供を保育園に「就職のための学習」を理由に預けました。土曜日の保育は旦那さんに協力してもらいました。 意外と旦那さんだけだとキッズ3人の対応はカオスで、ちょいちょいフォローしてたけどどうにかやってました!!

学習

オンライン夜間コースは週25時間以上の確保がルール!もし確保できていない場合は別の週で早期挽回のスケジュール調整が必要です。 カリキュラムに沿って基礎を進め、テストやソースで簡単な機能実装やアプリを作成します!

土曜日(夜間休日コース)

土曜日8時間強制参加!(朝10時から夜20時まで)
私は子供を旦那さんに任せて勉強! 土曜だけ朝会、ドリルの後、1時間に1回同期メンバー数人とアウトプット!最初自分が何言ってるか(理解できてなくて)わかんない時もあったw

メンター(カリキュラム内の質問先)

私個人のおすすめの点メンターさん! 勉強面でのフォローしてくださる方々!!(複数人) 本当にここのメンターさんのレベルが高い!!!!! 某スクールのデザインコースオンラインを修了経験しているのではっきり言えます!

  • 返答が明確でわかりやすい
  • まず質問の内容を肯定してくれる!
    「この点によく気づけましたね!素晴らしい!」的な!!
  • 最後質問の終了時にやる気を上げてくれるコメントをいつも返してくれた!
    「質問の仕方がとてもわかりやすいです!」とか「質問頂けてありがとう!」とか

メンターさんいなかったら私のやる気続かなかったよ!(ほんとに!)

本当に全員が優しいのにスピーディー回答で神対応でした!

ライフコーチ(プライベートな相談からメンタル面までのケア担当)

担当ライフコーチがイケメンでビデオ通話正直恥ずかしかったー(何を気にしてるんだw) 私は勉強以外に時間取れないからスッピンだしw(それくらい勉強に命燃やしてたのです)

定期的な面談をして困ったことや精神面をフォローしてくれてました! 基本スケジュール管理は自分で行いますがサポートしてくれました !

最終課題アプリ:メル○リと似たフリマアプリ作成

フリマアプリを勉強した内容を駆使して作成!
ベースのHTMLやCSSは提供していただいたので私は1ヶ月くらいで合格しました!
こちらは就活の時に追加実装をすればその部分についてはPRになるよ!

オリジナルアプリ:キャンプメモリーアプリ

私の企画した投稿型のアプリ キャンプ好きの私個人が欲しいアプリですw
ユーザー間で共有でき、いいね機能、お気に入り機能、コメント機能、投稿画像のイメージAjax切り替え機能、非公開機能を付けました。

就職活動

テックキャンプのバックアップ
  • テックキャンプで希望すれば卒業前から就職が決まるまでキャリアサポートアドバイザーが付いてくれる。 求人があれば応募への紹介してもらえるが、私は該当する会社がなくて紹介はしてもらえませんでした。
    ですが面接対策などは納得いくまで練習に付き合っていただき, 助かりました!
就職活動方法
  • 地方なので固定勤務の未経験SEの求人がほぼない!

  • 全国募集の登録派遣SEはあるのでそちらに応募

就職活動には、こちらのオリアプをReadME(アプリの取扱説明書みたいなもの)の他に、個人作成のポートフォリオを作成しました。 面接で視覚的にも情報が伝わりPRしやすかったです! おかげで地域に根付いた会社様に決まった!!w
(100均のA4ファイルにカラー印刷してやく10枚のポートフォリオ。そのうちアプリに関する内容は7枚)

最後に

結論、テックキャンプで勉強してよかったです。 スクールスタッフの方々には本当に感謝しております。
投資と思い踏み出した1歩でしたが、私の人生を変える大きな1歩だったと思います。 幾つになっても挑戦したい気持ちを実践していいのだと思いました。
メリットは、

  • 時間短縮:わからないことをいつまでも一人で悩む時間が非常にもったいない。

  • アプリ開発などの学習を通して実践的な開発工程を体験できる

スクールに通うことで、基礎知識もバッチリですし、勉強のクセというか、やり方が身についたと思います。
オリアプを作れたことや長い時間やり切ったことで、自信を持って就活できるのではないのでしょうか?

最後まで読んでいただきありがとうございました。
全ての人の人生が豊かになりますように。。。

MacでC#の開発環境を整える

今回は、テックキャンプ卒業後し、就活企業先で開発経験を確認されたC#について勉強することに!
せっかくなので開発環境を整えました。

開発環境の設定

参考記事 tech.pjin.jp

Visual Studio for Macのインストールを行いました! 無料でダウンロードできます!

Visual Studio for Macでプロジェクトを立ち上げる

以下の作業

  • Hello Worldプロジェクトを生成
  • 左上のモードをDebugからRelease(完成版)に変更し、▶︎を押下し、コードを実行する。
  • ターミナルで"Hello World"が表示される。 *

f:id:fujifuji123412:20210728162621p:plain

ターミナルで実行

  • vsコードを開く

  • ターミナルでプロジェクトへ移動し、実行する

% cd /Users/f******#自身のユーザー名/Projects/HelloWorld/HelloWorld/bin/Release/
mono HelloWorld.exe

=>Hello World

monoの意味は、『monoというアプリケーションを使って、exeファイルを実行してください。』という意味です。

なぜHeroku上に環境変数を設定するのか?

Herokuでの環境変数について備忘録としてまとめました。

基礎知識:

  • ローカル環境と本番環境にデプロイする際に表示したくないPWやIDはconfig/credentals.yml.encに暗号化されており、config/master.keyのコードによって解読ができます。
  • githubから第三者がcredentals.yml.encを見つけても暗号化されているため解読できない

  • 環境変数という箱を用意してmaster.keyの値を設定する。

  • master.keyファイルはデフォルトでデプロイされないように設定されている

以上のことから、
環境変数はローカル環境と本番環境とで別々に設定が必要である。

# herokuログイン後、本番環境の環境変数を設定する
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
=>#成功の場合
Setting RAILS_MASTER_KEY and restarting ⬢ herokuアプリ名... done, v7
RAILS_MASTER_KEY:  #キーの値

# 内容の確認
% heroku config
=>
CLEARDB_DATABASE_URL: mysql://~~~
DATABASE_URL:         mysql2://~~~
RAILS_MASTER_KEY:     #キーの値

Rails renderでなくredirect_toを使用して、別コントローラーのアクションにエラーメッセージを受け渡したい

今回はエラーメッセージを表示について少し深掘りました

バリデーションを設定の上、createやupdateにエラーメッセの表示には以下みたいな感じで
変数.valid?=>false//返り値
変数.errors.full_messages=>エラー文が生成される

という流れなわけですが、

def create
    @post = Post.new(post_params)
    if @post.valid?
      @post.save
      redirect_to post_path(@post.id), notice: '投稿しました'
    else
      render :new
    end
end

表示させるためにはredirect_toを使用すると新しいページに遷移するためエラーの内容が受け渡されないらしい。 つまりrenderを使用するのが基本なのだけれど,,, 私の場合render先のアクションがビュー表示のために読み込んでる変数がいくつかあって再度記述するのが嫌ーでしたw
なので redirect_toを使ってコントローラーを経由して欲しいという願望の下検討したところあるではありませんかw 参考にしたサイトさんのコメントをお借りすると”素直にflashに渡す”ということ。

ということで以下ソースがその内容です!

def create
    comment = Comment.new(comment_params)
    if comment.valid?
      comment.save
      redirect_to post_path(comment.post.id), notice: "コメントを投稿しました。"
    else
      redirect_to post_path(comment.post.id), flash: { error: comment.errors.full_messages }
    end
  end

ありがとうございました

sortでlikeの件数順に表示させる

前回の続きです 取得した投稿をlike順にしました!
userモデル、postモデル、likeモデル作成ずみ

アソシエーション
  • userモデル
class User < ApplicationRecord
 //devise省略
 has_many :posts, dependent: :destroy
 has_many :likes, dependent: :destroy
 has_many :liked_posts, through: :likes, source: :post //追記
  • postモデル
class Post < ApplicationRecord
  belongs_to :user
  has_many :likes, dependent: :destroy
  has_many :liked_users, through: :likes, source: :user //追記
  • likeモデル(追記なし 参考)
class Like < ApplicationRecord
  belongs_to :user
  belongs_to :post
  validates_uniqueness_of :post_id, scope: :user_id
end
コントローラー

今回の注目ポイント!!↓
.sort {|a,b| b.liked_users.count <=> a.liked_users.count}

ここでは sort というrubyのメソッドを使って順序を操作している。 => sortに関してはこちらを参照
a.liked_users.count、b.liked_users.count が表しているのはそれぞれ各投稿のいいね数。 すなわち、各投稿のいいね数を比較して昇順で並び替えている。

。。。らしい

def show
    if current_user == @user
      @posts = Post.where(user_id: @user.id).sort {|a,b| b.liked_users.count <=> a.liked_users.count}
    else
      @posts = Post.where(user_id: @user.id,status_id: 2).sort {|a,b| b.liked_users.count <=> a.liked_users.count}
    end
end
ビュー
<% @posts.each do |post| %>

  #省略

<% end %>

b1essk.com

sortでlikeの件数順に表示させる

前回の続きです 取得した投稿をlike順にしました!
userモデル、postモデル、likeモデル作成ずみ

アソシエーション
  • userモデル
class User < ApplicationRecord
 //devise省略
 has_many :posts, dependent: :destroy
 has_many :likes, dependent: :destroy
 has_many :liked_posts, through: :likes, source: :post //追記
  • postモデル
class Post < ApplicationRecord
  belongs_to :user
  has_many :likes, dependent: :destroy
  has_many :liked_users, through: :likes, source: :user //追記
  • likeモデル(追記なし 参考)
class Like < ApplicationRecord
  belongs_to :user
  belongs_to :post
  validates_uniqueness_of :post_id, scope: :user_id
end
コントローラー

今回の注目ポイント!!↓
.sort {|a,b| b.liked_users.count <=> a.liked_users.count}

ここでは sort というrubyのメソッドを使って順序を操作している。 => sortに関してはこちらを参照
a.liked_users.count、b.liked_users.count が表しているのはそれぞれ各投稿のいいね数。 すなわち、各投稿のいいね数を比較して昇順で並び替えている。

。。。らしい

def show
    if current_user == @user
      @posts = Post.where(user_id: @user.id).sort {|a,b| b.liked_users.count <=> a.liked_users.count}
    else
      @posts = Post.where(user_id: @user.id,status_id: 2).sort {|a,b| b.liked_users.count <=> a.liked_users.count}
    end
end
ビュー
<% @posts.each do |post| %>

  #省略

<% end %>

b1essk.com

コントローラーで取得する値をifで分岐させた話。

やりたいこと

ユーザーページ(users/show.html)で投稿記事表示の際、投稿者本人のみ公開記事を表示する。

検討

htmlでif分岐により表示を変える?
<% if current_user == @user %>
    本人の内容(非公開記事を含む)
<% else %>
  本人以外の内容(公開記事のみ)
<% end %>
htmlはそのままでcontrollerで取得するオブジェクトを調整する?
def show
    if current_user == @user
      @posts = Post.where(user_id: @user.id)
    else
      @posts = Post.where(user_id: @user.id,status_id: 2)
    end
end

whereで指定する条件は","または".where"でOKらしい

モデル.where(条件1,条件1)   
モデル.where(条件1).where(条件2)

結果

controllerで取得するオブジェクトを調整でうまくいった