diff --git a/README.md b/README.md
index a2b3fa2e0e1..67c06147128 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
# Bootcamp
-プログラマー向けEラーニングシステム。
+エンジニア向けEラーニングシステム。
## インストールと起動
diff --git a/app/assets/images/courses/nextjs.svg b/app/assets/images/courses/nextjs.svg
new file mode 100644
index 00000000000..f6ff8b48a94
--- /dev/null
+++ b/app/assets/images/courses/nextjs.svg
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/app/assets/images/courses/rails.svg b/app/assets/images/courses/rails.svg
new file mode 100644
index 00000000000..77ba3c45b94
--- /dev/null
+++ b/app/assets/images/courses/rails.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 84444df0a6f..87c5bf26e15 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -61,6 +61,7 @@ def create
logger.info "[Signup] 1. start create. #{user_params[:email]}"
@user = User.new(user_params)
+ @user.course_id = params[:user][:course_id] if params[:user][:course_id].present?
@user.course_id ||= Course.first.id
@user.free = true if @user.trainee?
@user.build_discord_profile
diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb
index b3acb69aec5..67da6c71cc1 100644
--- a/app/controllers/welcome_controller.rb
+++ b/app/controllers/welcome_controller.rb
@@ -15,9 +15,7 @@ def faq; end
def training; end
- def practices
- @categories = Course.find_by(title: DEFAULT_COURSE).categories.preload(:practices).order(:position)
- end
+ def practices; end
def tos; end
@@ -26,4 +24,8 @@ def pp; end
def law; end
def coc; end
+
+ def courses
+ @courses = Course.order(:created_at)
+ end
end
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
new file mode 100644
index 00000000000..7b18db6fa82
--- /dev/null
+++ b/app/helpers/courses_helper.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+module CoursesHelper
+ def find_course(course_id)
+ Course.find_by(id: course_id) || Course.default_course
+ end
+end
diff --git a/app/javascript/stylesheets/application/blocks/auth-form/_auth-form.sass b/app/javascript/stylesheets/application/blocks/auth-form/_auth-form.sass
index ac783ccc969..3ab1d591fcf 100644
--- a/app/javascript/stylesheets/application/blocks/auth-form/_auth-form.sass
+++ b/app/javascript/stylesheets/application/blocks/auth-form/_auth-form.sass
@@ -29,7 +29,10 @@
padding: 1rem 1.75rem
.auth-form__body
- padding: 1.5rem 1.75rem
+ +media-breakpoint-up(md)
+ padding: 1.5rem 1.75rem
+ +media-breakpoint-down(sm)
+ padding: 1.25rem 1rem
.auth-form__footer
padding: 1rem 1.75rem
diff --git a/app/javascript/stylesheets/application/blocks/form/_form-actions.sass b/app/javascript/stylesheets/application/blocks/form/_form-actions.sass
index 994f0a4db22..12869e3288e 100644
--- a/app/javascript/stylesheets/application/blocks/form/_form-actions.sass
+++ b/app/javascript/stylesheets/application/blocks/form/_form-actions.sass
@@ -15,6 +15,7 @@
padding-top: 1rem
.form-actions__items
+ gap: .75rem
+media-breakpoint-up(md)
display: flex
align-items: flex-end
@@ -29,7 +30,6 @@
flex-direction: column
.form-actions__item
- padding-inline: .375rem
+position(relative)
&.is-sub
+media-breakpoint-up(md)
diff --git a/app/javascript/stylesheets/atoms/_a-short-text.sass b/app/javascript/stylesheets/atoms/_a-short-text.sass
index 8b6a748f4cb..145a55ebaaf 100644
--- a/app/javascript/stylesheets/atoms/_a-short-text.sass
+++ b/app/javascript/stylesheets/atoms/_a-short-text.sass
@@ -35,6 +35,11 @@
border: none
border-top: dashed 1px var(--border)
margin-block: 1.25em
+ strong,
+ b
+ font-weight: 700
+ .is-danger
+ color: var(--danger)
&.is-ta-center,
.is-ta-center
text-align: center
diff --git a/app/javascript/stylesheets/atoms/_a-welcome-button.sass b/app/javascript/stylesheets/atoms/_a-welcome-button.sass
index 5a2f49bf3b8..dc992502ee2 100644
--- a/app/javascript/stylesheets/atoms/_a-welcome-button.sass
+++ b/app/javascript/stylesheets/atoms/_a-welcome-button.sass
@@ -21,3 +21,8 @@
font-size: .9375rem
&.is-signup
background-color: var(--welcome-orange)
+ &.is-disabled
+ pointer-events: none
+ background-color: var(--background-shade)
+ color: var(--muted-text)
+ border-color: var(--muted-text)
diff --git a/app/javascript/stylesheets/shared/blocks/card/_card-header.sass b/app/javascript/stylesheets/shared/blocks/card/_card-header.sass
index cdd21b4ad74..fe4bbfae1a6 100644
--- a/app/javascript/stylesheets/shared/blocks/card/_card-header.sass
+++ b/app/javascript/stylesheets/shared/blocks/card/_card-header.sass
@@ -23,6 +23,8 @@
font-size: .875rem
.card-header.is-sm &
font-size: .875rem
+ .card-header.is-lg &
+ font-size: 1.5rem
.card-header__count
font-weight: 400
diff --git a/app/javascript/stylesheets/welcome.sass b/app/javascript/stylesheets/welcome.sass
index 6c47d11918e..8cba3770566 100644
--- a/app/javascript/stylesheets/welcome.sass
+++ b/app/javascript/stylesheets/welcome.sass
@@ -8,6 +8,10 @@
@import welcome/articles/bootcamp-ad
@import welcome/articles/share-buttons
+@import welcome/course-selection
+@import welcome/course-selection-item
+@import welcome/course-selection-nav
+
@import welcome/welcome-member/welcome-member-books
@import welcome/welcome-member/welcome-member
diff --git a/app/javascript/stylesheets/welcome/_course-selection-item.sass b/app/javascript/stylesheets/welcome/_course-selection-item.sass
new file mode 100644
index 00000000000..c32ce7b8e4b
--- /dev/null
+++ b/app/javascript/stylesheets/welcome/_course-selection-item.sass
@@ -0,0 +1,28 @@
+.course-selection-item-anchor
+ position: relative
+ top: -3rem
+
+.course-selection-item
+ +media-breakpoint-up(md)
+ padding: 1.5rem 2rem
+ +media-breakpoint-down(sm)
+ padding: 1.25rem 1rem
+
+.course-selection-item__body:not(:first-child)
+ margin-top: 1.5rem
+
+.course-selection-item__title
+ font-weight: 700
+ +media-breakpoint-up(md)
+ +text-block(1.5rem 1.4)
+ +media-breakpoint-down(sm)
+ +text-block(1.25rem 1.4)
+
+.course-selection-item__action
+ margin-top: 1.25rem
+
+.course-selection-item__section
+ margin-top: 1.5rem
+ font-size: .875rem
+ +media-breakpoint-up(md)
+ +media-breakpoint-down(sm)
diff --git a/app/javascript/stylesheets/welcome/_course-selection-nav.sass b/app/javascript/stylesheets/welcome/_course-selection-nav.sass
new file mode 100644
index 00000000000..9f298d1cc82
--- /dev/null
+++ b/app/javascript/stylesheets/welcome/_course-selection-nav.sass
@@ -0,0 +1,28 @@
+.course-selection-nav
+ position: sticky
+ top: 0
+ z-index: 2
+
+.course-selection-nav__inner
+ padding-block: .5rem
+
+.course-selection-nav__items
+ display: flex
+
+.course-selection-nav__item
+ flex: 1
+
+.course-selection-nav__item-link
+ border: solid 1px var(--main)
+ background-color: var(--base)
+ +text-block(.75rem 1.4, center)
+ display: flex
+ text-decoration: none
+ height: 2.75rem
+ justify-content: center
+ align-items: center
+ .course-selection-nav__item:first-child &
+ border-radius: .25rem 0 0 .25rem
+ margin-right: -1px
+ .course-selection-nav__item:last-child &
+ border-radius: 0 .25rem .25rem 0
diff --git a/app/javascript/stylesheets/welcome/_course-selection.sass b/app/javascript/stylesheets/welcome/_course-selection.sass
new file mode 100644
index 00000000000..fcf31434aca
--- /dev/null
+++ b/app/javascript/stylesheets/welcome/_course-selection.sass
@@ -0,0 +1,12 @@
+.course-selection__descritpion
+ +media-breakpoint-up(md)
+ font-size: 1rem
+ +media-breakpoint-down(sm)
+ font-size: .875rem
+ margin-bottom: .5rem
+
+.course-selection__items
+ +media-breakpoint-up(md)
+ margin-top: 2rem
+ +media-breakpoint-down(sm)
+ margin-top: 1rem
diff --git a/app/javascript/stylesheets/welcome/_welcome-small-sections.sass b/app/javascript/stylesheets/welcome/_welcome-small-sections.sass
index cd9bddb0478..a4100112584 100644
--- a/app/javascript/stylesheets/welcome/_welcome-small-sections.sass
+++ b/app/javascript/stylesheets/welcome/_welcome-small-sections.sass
@@ -162,3 +162,12 @@
aspect-ratio: 5 / 3
+media-breakpoint-down(sm)
aspect-ratio: 3 / 4
+
+.welcome-small-section__float-image
+ float: left
+ border-radius: .25rem
+ margin-right: 1rem
+ +media-breakpoint-up(md)
+ width: 6.75rem
+ +media-breakpoint-down(sm)
+ width: 4rem
diff --git a/app/javascript/stylesheets/welcome/_welcome.sass b/app/javascript/stylesheets/welcome/_welcome.sass
index bfc4c590412..678c907ceab 100644
--- a/app/javascript/stylesheets/welcome/_welcome.sass
+++ b/app/javascript/stylesheets/welcome/_welcome.sass
@@ -1,3 +1,4 @@
body.is-welcome
color: var(--default-text)
font-family: $sans-serif
+ scroll-behavior: smooth
diff --git a/app/models/course.rb b/app/models/course.rb
index 3bad8a736d7..848c5e251a7 100644
--- a/app/models/course.rb
+++ b/app/models/course.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class Course < ApplicationRecord
+ DEFAULT_COURSE = 'Railsエンジニア'
+
has_many :courses_categories, dependent: :destroy
has_many :categories, through: :courses_categories
has_many :practices, through: :categories
@@ -8,4 +10,8 @@ class Course < ApplicationRecord
has_many :users, dependent: :nullify
validates :title, presence: true
validates :description, presence: true
+
+ def self.default_course
+ find_by(title: DEFAULT_COURSE)
+ end
end
diff --git a/app/views/articles/_ad.html.slim b/app/views/articles/_ad.html.slim
index 558292ccd5f..9cb5e1b1195 100644
--- a/app/views/articles/_ad.html.slim
+++ b/app/views/articles/_ad.html.slim
@@ -11,15 +11,13 @@ aside.bootcamp-ad
class: 'bootcamp-ad__image'
.a-short-text.is-sm
p
- | フィヨルドブートキャンプは、
- | ソフトウェアエンジニアとして就職を目指せるスキルを
- | 「プロの現場でプラス戦力として数えられるソフトウェアエンジニア」とし、
- | それを身につけることを目標とした
- | オンラインプログラミングスクールです。
+ | 就職ができるスキルを身につけるのは当然、
+ | 卒業をした時点ですでに、「現場にとって、プラスの戦力として数えられる」の実力を
+ | 身につけることを目標とした、オンラインプログラミングスクールです。
br
| プログラミング未経験からスタートして、
| HTML、CSS、Linux、Ruby、Rails、JavaScript、チーム開発を経て、
- | 自作サービスを公開するまでのカリキュラムを用意しています。
+ | 最終的に自作サービスを公開するまでのカリキュラムを用意しています。
hr.a-border-tint
.card-footer
= link_to welcome_path, class: 'a-button is-primary is-lg is-block' do
diff --git a/app/views/home/_welcome_message.html.slim b/app/views/home/_welcome_message.html.slim
index cf2798bd3bc..7b398dbd68f 100644
--- a/app/views/home/_welcome_message.html.slim
+++ b/app/views/home/_welcome_message.html.slim
@@ -53,11 +53,13 @@
| 自分の気持ちをアウトプットする場としてコミュニティを使うのがオススメです。
p
| 学習が進まなくて辛い、新しいことを知って嬉しい、プログラミングができるようになって楽しい、
- | 仕事が忙しくて学習に時間が取れなくて悲しい、ソフトウェアエンジニアとして就職できるのか不安...これから学習を進めていく上で色んな気持ちになるかと思いますが、
+ | 仕事が忙しくて学習に時間が取れなくて悲しい、ソフトウェアエンジニアとして就職できるのか不安...
+ | これから学習を進めていく上で色んな気持ちになるかと思いますが、
| 気持ちをチャットや日報を使ってアウトプットしていきましょう。
| 辛いことに対しては親身に相談に乗ってくれたり、アドバイスをしてくれたり、嬉しいことは一緒に喜んでくれたり、
| コミュニティのみんなが「あなたのプログラミングを楽しむ気持ち」を育ててくれます。
- | どんな状況でも、それを楽しめるようになれば無敵です。どんどん気持ちをアウトプットすること、これが卒業までやりきるためのコツです。
+ | どんな状況でも、それを楽しめるようになれば無敵です。
+ | どんどん気持ちをアウトプットすること、これが卒業までやりきるためのコツです。
h2
| 学習の進め方
p
@@ -65,14 +67,18 @@
| フィヨルドブートキャンプでは、学習の項目一つ一つを「プラクティス」と呼んでいます。
|このプラクティスを上から順にやっていく、というのが学習の進め方になります。
p
- | プラクティス一覧画面に移動したら、最初のプラクティスをクリックしますと、そのプラクティスでやることが書かれています。
- | まずは、ページ上部にある「着手」をクリックして、ステータスを着手中にします。そして、そのプラクティスでのやることを進めていきます。
- | 全てが完了したら、ステータスを「修了」にします。これでそのプラクティスは完了です。次のプラクティスに進みます。
+ | プラクティス一覧画面に移動したら、最初のプラクティスをクリックしますと、
+ | そのプラクティスでやることが書かれています。
+ | まずは、ページ上部にある「着手」をクリックして、ステータスを着手中にします。
+ | そして、そのプラクティスでのやることを進めていきます。
+ | 全てが完了したら、ステータスを「修了」にします。これでそのプラクティスは完了です。
+ | 次のプラクティスに進みます。
p
| 他にも色々在るのですが、現時点では以上のところだけ理解いただければ十分です。
| これから始まる「学習の進め方を知る」というプラクティスでその他の詳しい説明があります。
p
- | もし何か不明点がありましたら、現時点では komagata@fjord.jp
にメールでご連絡をお願いします。
- | 途中、「チャットを使えるようになる」というプラクティスがあるのですが、それを終えるとチャットで連絡が取れるようになりますので、
+ | もし何か不明点がありましたら、現時点では info@fjord.jp
にメールでご連絡をお願いします。
+ | 途中、「チャットを使えるようになる」というプラクティスがあるのですが、
+ | それを終えるとチャットで連絡が取れるようになりますので、
| そこから先はチャットでご質問をお願いします。
hr.a-border
diff --git a/app/views/reports/_form.html.slim b/app/views/reports/_form.html.slim
index a1519da3ea7..ce5d7a86d49 100644
--- a/app/views/reports/_form.html.slim
+++ b/app/views/reports/_form.html.slim
@@ -125,7 +125,7 @@
.a-short-text
p
| WIPとは、「work in progress」もしくは「work in process」の略。
- | 「作業中」を表すプログラマー界隈でよく使われる用語です。
+ | 「作業中」を表すエンジニア界隈でよく使われる用語です。
p
| 下書きと違って、WIPの状態でも公開されています(バグではありません😄)。
p
diff --git a/app/views/unauthorized/_about_fbc.html.slim b/app/views/unauthorized/_about_fbc.html.slim
index c3a466330f7..bc32b3e7ecf 100644
--- a/app/views/unauthorized/_about_fbc.html.slim
+++ b/app/views/unauthorized/_about_fbc.html.slim
@@ -1,9 +1,10 @@
.about-fbc
.a-long-text.is-md
p
- | フィヨルドブートキャンプは、ソフトウェアエンジニアとして就職を
- | 目指せるだけのスキルを身につけることを目標とした、
- | オンラインプログラミングスクールです。現場のソフトウェアエンジニアによる、
+ | 就職ができるスキルを身につけるのは当然、
+ | 卒業をした時点ですでに、「現場にとって、プラスの戦力として数えられる」の実力を
+ | 身につけることを目標とした、オンラインプログラミングスクールです。
+ | 現場のプログラマーによる、
| 徹底的に現場目線にこだわった、
- | 現場のソフトウェアエンジニアが考える、
+ | 現場のプログラマーが考える、
| プログラミングスクールの在るべき姿の実現に励んでいます。
diff --git a/app/views/user_sessions/new.html.slim b/app/views/user_sessions/new.html.slim
index a931c49d036..45c70930f70 100644
--- a/app/views/user_sessions/new.html.slim
+++ b/app/views/user_sessions/new.html.slim
@@ -18,6 +18,6 @@ description: 'オンラインプログラミングスクールのフィヨルド
li.auth-form-nav__item
= link_to 'トップページ', root_path, class: 'auth-form-nav__item-link'
li.auth-form-nav__item
- = link_to '参加登録', new_user_path, class: 'auth-form-nav__item-link'
+ = link_to '参加登録', courses_path, class: 'auth-form-nav__item-link'
li.auth-form-nav__item
= link_to '休会からの復帰', new_comeback_path, class: 'auth-form-nav__item-link'
diff --git a/app/views/users/_checked_campaign.html.slim b/app/views/users/_checked_campaign.html.slim
index 1cd4beccec7..dde6fb04298 100644
--- a/app/views/users/_checked_campaign.html.slim
+++ b/app/views/users/_checked_campaign.html.slim
@@ -1,16 +1,15 @@
-.form
- .form__items
- .form-item
- .block-checks.is-1-item
- .block-checks__item
- .a-block-check.is-checkbox.is-dammy
- input.a-toggle-checkbox(type='radio' checked='checked')
- .a-block-check__label.is-ta-left
- | キャンペーン適用
- .a-form-help
- p
- | #{Campaign.current_title} のお試し期間延長が適用され、
- em
- | 通常 3日間 のお試し期間が #{Campaign.current_trial_period}日間
- | になります。
- .form-item
+.form__items
+ .form-item
+ .block-checks.is-1-item
+ .block-checks__item
+ .a-block-check.is-checkbox.is-dammy
+ input.a-toggle-checkbox(type='radio' checked='checked')
+ .a-block-check__label.is-ta-left
+ | キャンペーン適用
+ .a-form-help
+ p
+ | #{Campaign.current_title} のお試し期間延長が適用され、
+ em
+ | 通常 3日間 のお試し期間が #{Campaign.current_trial_period}日間
+ | になります。
+ hr.a-border.mb-8
diff --git a/app/views/users/_form.html.slim b/app/views/users/_form.html.slim
index 142f4b6d4f4..bddcad33464 100644
--- a/app/views/users/_form.html.slim
+++ b/app/views/users/_form.html.slim
@@ -7,6 +7,11 @@
= f.hidden_field :course_id
= hidden_field_tag :idempotency_token, SecureRandom.uuid
= render 'errors', object: user
+ - if !current_user && !@user.adviser? && !@user.trainee? && Campaign.today_campaign?
+ = render 'checked_campaign'
+ .form__items
+ - if !@user.adviser?
+ = render 'users/form/course_select', f: f
.form__items
= render 'users/form/login_name', f: f
= render 'users/form/email', f: f, user: user
diff --git a/app/views/users/form/_course_practice_list.html.slim b/app/views/users/form/_course_practice_list.html.slim
new file mode 100644
index 00000000000..ad0999eaa4d
--- /dev/null
+++ b/app/views/users/form/_course_practice_list.html.slim
@@ -0,0 +1,9 @@
+- course.categories.each do |category|
+ - if category.practices.present?
+ h4
+ = category.name
+ table.welcome-table.a-card
+ - category.practices.each do |practice|
+ tr
+ td
+ = practice.title
diff --git a/app/views/users/form/_course_select.html.slim b/app/views/users/form/_course_select.html.slim
new file mode 100644
index 00000000000..84368c2b730
--- /dev/null
+++ b/app/views/users/form/_course_select.html.slim
@@ -0,0 +1,19 @@
+.form-item
+ = f.label :course_id, '選択中のコース', class: 'a-form-label is-required'
+ .form-item__groups
+ .form-item-group
+ .form-item-group__body
+ .selected-item
+ - course = find_course(params[:course_id])
+ = render 'users/form/course_selection', course: course, f: f
+ = render '/shared/modal',
+ id: 'modal-course-description',
+ modal_title: "#{course.title}コース"
+ .modal__description.is-md
+ .a-long-text.is-md.js-markdown-view
+ = course.description
+ .a-long-text.is-md
+ h3 カリキュラム一覧
+ = render 'users/form/course_practice_list', course: course
+
+hr.a-border.mb-8
diff --git a/app/views/users/form/_course_selection.html.slim b/app/views/users/form/_course_selection.html.slim
new file mode 100644
index 00000000000..468d52532ff
--- /dev/null
+++ b/app/views/users/form/_course_selection.html.slim
@@ -0,0 +1,22 @@
+.a-block-check.is-radio
+ = f.radio_button :course_id, course.id, checked: true, id: "course_#{course.id}", class: 'a-toggle-checkbox'
+ label.a-block-check__label.is-ta-left(for="course_#{course.id}")
+ span.a-block-check__name
+ | #{course.title}コース
+- if current_user
+ .form-actions
+ .a-short-text.is-sm
+ p
+ | コースの移行を希望される場合やご相談がある場合は、
+ = link_to talk_path(current_user.talk, anchor: 'latest-comment') do
+ | 相談部屋にてお知らせください
+ | 。
+- else
+ .form-actions
+ ul.form-actions__items
+ li.form-actions__item.is-main
+ label.a-button.is-md.is-secondary.is-block(for='modal-course-description')
+ | コースの内容を確認する
+ li.form-actions__item.is-main
+ = link_to courses_path, class: 'a-button is-md is-secondary is-block' do
+ | コースを選択し直す
diff --git a/app/views/users/form/_profile_job.html.slim b/app/views/users/form/_profile_job.html.slim
index 08fb87206d2..cf479f7869c 100644
--- a/app/views/users/form/_profile_job.html.slim
+++ b/app/views/users/form/_profile_job.html.slim
@@ -1,3 +1,3 @@
.form-item
= f.label :profile_job, class: 'a-form-label'
- = f.text_field :profile_job, class: 'a-text-input', placeholder: 'プログラマー'
+ = f.text_field :profile_job, class: 'a-text-input', placeholder: 'エンジニア'
diff --git a/app/views/users/form/_profile_text.html.slim b/app/views/users/form/_profile_text.html.slim
index 9934fa935e3..0a71d537530 100644
--- a/app/views/users/form/_profile_text.html.slim
+++ b/app/views/users/form/_profile_text.html.slim
@@ -1,3 +1,3 @@
.form-item
= f.label :profile_text, class: 'a-form-label'
- = f.text_area :profile_text, class: 'a-text-input is-sm', placeholder: '[株式会社ロッカ](https://lokka.jp)の代表兼プログラマー。Rubyが大好きで[怖話](https://kowabana.jp)、[フィヨルドブートキャンプ](https://bootcamp.fjord.jp)などを開発している。'
+ = f.text_area :profile_text, class: 'a-text-input is-sm', placeholder: '[株式会社ロッカ](https://lokka.jp)の代表兼エンジニア。Rubyが大好きで[怖話](https://kowabana.jp)、[フィヨルドブートキャンプ](https://bootcamp.fjord.jp)などを開発している。'
diff --git a/app/views/users/new.html.slim b/app/views/users/new.html.slim
index 4765bf1ad8e..87c3a2ca223 100644
--- a/app/views/users/new.html.slim
+++ b/app/views/users/new.html.slim
@@ -21,8 +21,6 @@
= link_to new_corporate_training_inquiry_path do
| こちらの企業研修申し込みフォーム
| からお申し込みください。
- - if !@user.adviser? && Campaign.today_campaign?
- = render 'checked_campaign'
= render 'form', from: :new, url: users_path, user: @user
hr.a-border-tint
footer.auth-form__footer
diff --git a/app/views/welcome/_about.slim b/app/views/welcome/_about.slim
index f9171d29002..94aefc5b2a6 100644
--- a/app/views/welcome/_about.slim
+++ b/app/views/welcome/_about.slim
@@ -6,7 +6,13 @@ section.welcome-section.is-about#about
| フィヨルドブートキャンプとは?
.welcome-section__description
p
- | ソフトウェアエンジニアとして就職を目指せるだけのスキルを身につけることを目標としたオンラインプログラミングスクールです。就職を目指せるスキルを弊社では「現場の人間にとって、戦力になるソフトウェアエンジニア」としています。具体的には、一人でWebサービスを作ることをゴールとした課題をやるのですが、それだけでなくチーム開発も経験できます。
+ | ソフトウェアエンジニアとして就職ができるスキルを身につけるのは当然、
+ | 卒業をした時点ですでに、「現場にとって、プラスの戦力として数えられる」の実力を
+ | 身につけていることを目標としたオンラインプログラミングスクールです。
+ br
+ | プログラミング未経験からスタートして、
+ | HTML、CSS、Linux、Ruby、Rails、JavaScript、実際の仕事と同じ形式でのチーム開発を経て、
+ | 最終的に自作サービスを公開するまでのカリキュラムを用意しています。
.welcome-section__actions
.welcome-section__actions-items
@@ -23,10 +29,10 @@ section.welcome-section.is-about#about
.welcome-small-section__inner.a-card
= image_tag('programmer.svg', class: 'welcome-small-section__icon')
h3.welcome-small-section__title
- | 現役プログラマーの
メンター
+ | 現役エンジニアの
メンター
.welcome-small-section__description
p
- | メンターはアルバイトや講師を専門にしている人ではなく、実際にコードを書くことを仕事にしている現役のプログラマーです。現場目線でのアドバイス、Rubyコミュニティの文化なども伝えていきます。
+ | メンターはアルバイトや講師を専門にしている人ではなく、実際にコードを書くことを仕事にしている現役のエンジニアです。現場目線でのアドバイス、Rubyコミュニティの文化なども伝えていきます。
.col-xs-12.col-md-4
section.welcome-small-section
diff --git a/app/views/welcome/_campaign.html.slim b/app/views/welcome/_campaign.html.slim
index 9077191f361..1d775a2f67b 100644
--- a/app/views/welcome/_campaign.html.slim
+++ b/app/views/welcome/_campaign.html.slim
@@ -21,4 +21,4 @@ section.welcome-section.is-gw
.welcome-actions__item
= link_to 'お問い合わせ・質問', new_inquiry_path, class: 'a-welcome-button'
.welcome-actions__item
- = link_to '参加登録', new_user_path, class: 'a-welcome-button is-signup'
+ = link_to '参加登録', courses_path, class: 'a-welcome-button is-signup'
diff --git a/app/views/welcome/_cases.slim b/app/views/welcome/_cases.slim
index 06c2dcf48c5..e7a16f9a740 100644
--- a/app/views/welcome/_cases.slim
+++ b/app/views/welcome/_cases.slim
@@ -10,7 +10,8 @@ section.welcome-child-section.is-cases
| ソフトウェアエンジニアとして
就職したい
.welcome-small-section__description
p
- | ソフトウェアエンジニアとして就職できるスキルを身に着けたい!スキルだけじゃなく、開発のやり方や業界の情報、ソフトウェアエンジニア友達も欲しい!
+ | ソフトウェアエンジニアとして就職できるスキルを身に着けたい!スキルだけじゃなく
+ | 開発のやり方や業界の情報、ソフトウェアエンジニア友達も欲しい!
.col-xs-12.col-md-6
section.welcome-small-section
.welcome-small-section__inner
@@ -18,7 +19,8 @@ section.welcome-child-section.is-cases
| 転職したいけど、
その前にスキルを付けたい
.welcome-small-section__description
p
- | うちのやり方ってブログの記事や勉強会で聞いた話と比べて開発方法が古い...今の会社でソフトウェアエンジニアを続けていっていいのだろうか?...転職だ!
+ | うちのやり方ってブログの記事や勉強会で聞いた話と比べて開発方法が古い...
+ | 今の会社でソフトウェアエンジニアを続けていっていいのだろうか?...転職だ!
.col-xs-12.col-md-6
section.welcome-small-section
.welcome-small-section__inner
@@ -34,4 +36,5 @@ section.welcome-child-section.is-cases
| ソフトウェアエンジニアに
ジョブチェンジしたい
.welcome-small-section__description
p
- | ソフトウェアエンジニアではなく、企画としてITに関わっていたけど、ソフトウェアエンジニアの方が楽しそう!自分もコードを書いてサービスを開発したい!
+ | ソフトウェアエンジニアではなく、企画としてITに関わっていたけど、
+ | ソフトウェアエンジニアの方が楽しそう!自分もコードを書いてサービスを開発したい!
diff --git a/app/views/welcome/_course.html.slim b/app/views/welcome/_course.html.slim
new file mode 100644
index 00000000000..74a1d7f1ebb
--- /dev/null
+++ b/app/views/welcome/_course.html.slim
@@ -0,0 +1,32 @@
+article.course-selection-item.a-card
+ .course-selection-item__inner
+ header.course-selection-item__header
+ h2.course-selection-item__title.text-center
+ | #{course.title}
+ br
+ | コース
+ .course-selection-item__action.mb-4
+ = link_to new_user_path(course_id: course.id), class: "a-welcome-button is-md #{current_user ? 'is-disabled' : ''}" do
+ | このコースを選択
+ .course-selection-item__body
+ .course-selection-item__description
+ .a-long-text.is-md.js-markdown-view
+ = course.description
+ section.course-selection-item__section
+ .a-long-text
+ details
+ summary
+ | カリキュラム一覧
+ - course.categories.each do |category|
+ - if category.practices.present?
+ h4
+ = category.name
+ table.welcome-table.a-card
+ - category.practices.each do |practice|
+ tr
+ td
+ = practice.title
+
+ .course-selection-item__action
+ = link_to new_user_path(course_id: course.id), class: "a-welcome-button is-md #{current_user ? 'is-disabled' : ''}" do
+ | このコースを選択
diff --git a/app/views/welcome/_course_practices.html.slim b/app/views/welcome/_course_practices.html.slim
new file mode 100644
index 00000000000..562840c67f4
--- /dev/null
+++ b/app/views/welcome/_course_practices.html.slim
@@ -0,0 +1,21 @@
+article.course-selection-item.a-card
+ .course-selection-item__inner
+ header.course-selection-item__header
+ h2.course-selection-item__title.text-center
+ | #{course.title}
+ br
+ | コース
+ .course-selection-item__body
+ section.course-selection-item__section
+ .a-long-text
+ h2
+ | カリキュラム一覧
+ - course.categories.each do |category|
+ - if category.practices.present?
+ h4
+ = category.name
+ table.welcome-table.a-card
+ - category.practices.each do |practice|
+ tr
+ td
+ = practice.title
diff --git a/app/views/welcome/_faq.slim b/app/views/welcome/_faq.slim
index aac78957aa9..a902f42f47c 100644
--- a/app/views/welcome/_faq.slim
+++ b/app/views/welcome/_faq.slim
@@ -26,7 +26,8 @@
| 短時間でも毎日必ず学習する場合と間が空いてしまう場合など、時間のかけかたにも影響があったりもします。
p
| 知的好奇心が求めるままに気になったこともきっちり調べる人は、時間がかかっても、
- | 就職後に仕事やソフトウェアエンジニアコミュニティで大活躍をしているので、卒業までの時間が短ければいいとは考えていません。
+ | 就職後に仕事やコミュニティで大活躍をしているので、
+ | 卒業までの時間が短ければいいとは考えていません。
p
| フィヨルドブートキャンプとしては、卒業までの時間が長くなり過ぎないように、
| 泣く泣くカリキュラムを削ったりなどもしているのですが、
@@ -133,7 +134,9 @@
| 転職は考えていないのですが、スキルアップのためプログラミングの勉強がしたいです。その場合、参加は可能ですか?
.faqs-item__body
p
- | 可能です。フィヨルドブートキャンプは就職できるためのスキルを身につけることを目標にしていますが、
+ | 可能です。
+ | フィヨルドブートキャンプは就職できるためのスキルを身につけることを
+ | 一つの目標にしていますが、
| 就職を必ずしなくてはいけないという縛りはありません。
.col-lg-4.col-md-6.col-xs-12
section.faqs-item
diff --git a/app/views/welcome/_form.slim b/app/views/welcome/_form.slim
index 9934d13953d..6308b1ac979 100644
--- a/app/views/welcome/_form.slim
+++ b/app/views/welcome/_form.slim
@@ -4,4 +4,4 @@ section.welcome-actions
.welcome-actions__item
= link_to 'お問い合わせ・質問', new_inquiry_path, class: 'a-welcome-button'
.welcome-actions__item
- = link_to '参加登録', new_user_path, class: 'a-welcome-button is-signup'
+ = link_to '参加登録', courses_path, class: 'a-welcome-button is-signup'
diff --git a/app/views/welcome/_process.slim b/app/views/welcome/_process.slim
index 7904ce19574..b7752fc6d74 100644
--- a/app/views/welcome/_process.slim
+++ b/app/views/welcome/_process.slim
@@ -18,7 +18,6 @@ section.welcome-section.is-process#process
p
| フィヨルドブートキャンプオリジナルのオンライン学習アプリに教材(プラクティス)があります。
| 卒業を目指してそれを順に進めていきます。基本的に途中のプラクティスを飛ばしたり、
- | 複数のプラクティスをつまみ食いしながら進めるのは禁止しています。
section.welcome-small-section
.welcome-small-section__inner.a-card
= image_tag('report.svg', class: 'welcome-small-section__icon')
diff --git a/app/views/welcome/_tutorials.slim b/app/views/welcome/_tutorials.slim
index b865788aa41..c7d52024006 100644
--- a/app/views/welcome/_tutorials.slim
+++ b/app/views/welcome/_tutorials.slim
@@ -1,64 +1,39 @@
section.welcome-section.is-tutorials#tutorials
.container.is-xl
h2.welcome-section__title
- = image_tag('tutorials-title.svg', alt: '一人でWebサービスを作って公開できることをゴールとしたカリキュラムを用意しています。', class: 'welcome-section__title-image')
- h3.welcome-section__sub-title
- | 現場でプラスの戦力になることが目標
+ | 選べる2つのコース
.welcome-section__description
p
- | 最終課題が「自分で考えたWebサービスを作って公開」。それに必要な、サーバの構築からバックエンド、フロントエンドも学べます。それだけでなく、オンライン上での質問の仕方、チーム開発のやり方、ペアプログラミングのやり方、ユーザー目線に立った Web サービスの考え方など、コードを書くこと以外の実践に必要なことも学べます。
+ | 「Railsエンジニアコース」と「フロントエンドエンジニアコース」の2つのコースがあります。
+ | 最初は共通のカリキュラムからスタートし、その後に専門分野に分かれて学んでいきます。
+ | どちらのコースも最終的には、自分で考えたWebサービスを作ってリリースすることを目指します。
+ | また、どちらもチーム開発を体験できるので、実践的なスキルが身につきます。
+ br
+ | コース選びに迷ったら、まずはRailsエンジニアコースを選んでみてください。入会後はメンターに相談ができるので、その時にしっかり考えましょう。途中でのコースの変更、卒業後に別コースの必要なカリキュラムだけを受講することも可能です。
+
section.welcome-child-section.is-tutorials
.welcome-small-sections
.row.is-gutter-width-24.welcome-small-sections__row
- .col-xs-6.col-md-3
+ .col-xs-12.col-md-6
section.welcome-small-section
.welcome-small-section__inner.a-card
- = image_tag('mac.svg', class: 'welcome-small-section__icon')
h3.welcome-small-section__title
- | Macの基本
- .col-xs-6.col-md-3
+ | Railsエンジニアコース
+ .welcome-small-section__description
+ = image_tag('courses/rails.svg', class: 'welcome-small-section__float-image', alt: 'Ruby on Railsのロゴ')
+ p
+ | プログラミング言語「Ruby」を用いたWebアプリケーションフレームワークであるRails(Ruby on Rails)を使ってWebエンジニアになるためのバックエンド・フロントエンドも含めた一通りの技術を学びます。
+ .col-xs-12.col-md-6
section.welcome-small-section
.welcome-small-section__inner.a-card
- = image_tag('html.svg', class: 'welcome-small-section__icon')
h3.welcome-small-section__title
- | HTML
- .col-xs-6.col-md-3
- section.welcome-small-section
- .welcome-small-section__inner.a-card
- = image_tag('css.svg', class: 'welcome-small-section__icon')
- h3.welcome-small-section__title
- | CSS
- .col-xs-6.col-md-3
- section.welcome-small-section
- .welcome-small-section__inner.a-card
- = image_tag('linux.svg', class: 'welcome-small-section__icon')
- h3.welcome-small-section__title
- | Linux
- .col-xs-6.col-md-3
- section.welcome-small-section
- .welcome-small-section__inner.a-card
- = image_tag('ruby.svg', class: 'welcome-small-section__icon')
- h3.welcome-small-section__title
- | Ruby
- .col-xs-6.col-md-3
- section.welcome-small-section
- .welcome-small-section__inner.a-card
- = image_tag('git.svg', class: 'welcome-small-section__icon')
- h3.welcome-small-section__title
- | Git
- .col-xs-6.col-md-3
- section.welcome-small-section
- .welcome-small-section__inner.a-card
- = image_tag('rails.svg', class: 'welcome-small-section__icon')
- h3.welcome-small-section__title
- | Ruby on Rails
- .col-xs-6.col-md-3
- section.welcome-small-section
- .welcome-small-section__inner.a-card
- = image_tag('js.svg', class: 'welcome-small-section__icon')
- h3.welcome-small-section__title
- | JavaScript
+ | フロントエンドエンジニアコース
+ .welcome-small-section__description
+ = image_tag('courses/nextjs.svg', class: 'welcome-small-section__float-image', alt: 'Ruby on Railsのロゴ')
+ p
+ | HTML、CSS やJavaScript/TypeScriptをつかってWebアプリケーションにおいてユーザーが直接触る部分(ユーザーインターフェース)を作るための技術を習得できます。
+
.welcome-section__actions
.welcome-section__actions-items
.welcome-section__actions-item
- = link_to '学習内容一覧', practices_path, class: 'a-welcome-button is-md'
+ = link_to 'コース内容を確認する', practices_path, class: 'a-welcome-button is-md'
diff --git a/app/views/welcome/_welcome_header.html.slim b/app/views/welcome/_welcome_header.html.slim
index fec41d88590..4b074824be4 100644
--- a/app/views/welcome/_welcome_header.html.slim
+++ b/app/views/welcome/_welcome_header.html.slim
@@ -36,7 +36,7 @@ header.welcome-header
| 紹介・言及記事
- unless current_user
li.welcome-header-nav__item
- = link_to new_user_path, class: 'welcome-header-nav__item-link' do
+ = link_to courses_path, class: 'welcome-header-nav__item-link' do
| 参加登録
li.welcome-header-nav__item.is-hidden-md-up
- if current_user
diff --git a/app/views/welcome/courses.html.slim b/app/views/welcome/courses.html.slim
new file mode 100644
index 00000000000..e6e7460f64a
--- /dev/null
+++ b/app/views/welcome/courses.html.slim
@@ -0,0 +1,60 @@
+- content_for :extra_body_classes, 'no-forms'
+- title 'コース選択'
+- set_meta_tags(site: 'FJORD BOOT CAMP(フィヨルドブートキャンプ)',
+ description: 'フィヨルドブートキャンプの学習内容一覧を表示しています。フィヨルドブートキャンプは現場の即戦力になるためのスキルとプログラミングの楽しさを伝える、現役エンジニアが考える理想のプログラミングスクールの実現に励んでいます。')
+
+.welcome-page-header
+ .container.is-xl
+ .welcome-page-header__inner
+ h1.welcome-page-header__title
+ = title
+
+.welcome-page-body
+ section.course-selection
+ .container.is-sm
+ header.course-selection__header
+ h2.welcome-section__title.has-border
+ | コースを選択してください。
+ .course-selection__body
+ .course-selection__descritpion
+ .a-short-text
+ p
+ | Railsエンジニアコースとフロントエンドエンジニアコースの2つのコースがあります。
+ | 料金はどちらも同じです。
+ p
+ | どちらのコースも、最初は共通のカリキュラムからスタートし、
+ | その後に専門分野に分かれて学んでいきます。最終的には、
+ | 自分で考えたWebサービスを作ってリリースすることを目指します。
+ | また、どちらのコースでもチーム開発を体験できるので、実践的なスキルが身につきます。
+ p
+ | コース選びに迷ったら、まずはRailsエンジニアコースを選んでみてください。
+ | 入会後はメンターに相談ができるので、その時にしっかり考えましょう。
+ | 途中でのコースの変更、卒業後に別コースの必要なカリキュラムだけを受講することも可能です。
+ .course-selection-nav.is-hidden-md-up
+ .container
+ .course-selection-nav__inner
+ ul.course-selection-nav__items
+ li.course-selection-nav__item
+ = link_to '#rails-programmer-course', class: 'course-selection-nav__item-link' do
+ | Railsエンジニア
+ li.course-selection-nav__item
+ = link_to '#front-engineer-course', class: 'course-selection-nav__item-link' do
+ | フロントエンドエンジニア
+
+ .course-selection__items
+ .container.is-xl
+ .row.is-gutter-width-32
+ .col-md-6.col-xs-12
+ .course-selection-item-anchor#rails-programmer-course
+ - course = Course.find_by(title: 'Railsエンジニア')
+ - if course
+ = render('course', course: course)
+ - else
+ p コースが見つかりませんでした。
+ .col-md-6.col-xs-12
+ .course-selection-item-anchor#front-engineer-course
+ - course = Course.find_by(title: 'フロントエンドエンジニア')
+ - if course
+ = render('course', course: course)
+ - else
+ p コースが見つかりませんでした。
diff --git a/app/views/welcome/practices.html.slim b/app/views/welcome/practices.html.slim
index 8a9456a94af..da6f4c6b3d2 100644
--- a/app/views/welcome/practices.html.slim
+++ b/app/views/welcome/practices.html.slim
@@ -8,16 +8,45 @@
h1.welcome-page-header__title
= title
-section.welcome-section
- .container.is-xl
- .welcome-small-sections
- .row.is-gutter-widtd-32
- - @categories.each do |category|
- - if category.practices.present?
- .col-xs-12.col-md-4
- .welcome-small-section
- h3.welcome-small-section__title = category.name
- table.welcome-table.a-card
- - category.practices.each do |practice|
- tr
- td = practice.title
+.welcome-page-body
+ section.course-selection
+ .container.is-sm
+ .course-selection__header
+ h2.welcome-section__title.has-border
+ | 選べる2つのコース
+ .course-selection__body
+ .course-selection__descritpion
+ .a-short-text
+ p
+ | Railsエンジニアコースとフロントエンドエンジニアコースの2つのコースがあります。料金はどちらも同じです。
+ p
+ | どちらのコースも、最初は共通のカリキュラムからスタートし、その後に専門分野に分かれて学んでいきます。最終的には、自分で考えたWebサービスを作ってリリースすることを目指します。また、どちらのコースでもチーム開発を体験できるので、実践的なスキルが身につきます。
+
+ .course-selection-nav.is-hidden-md-up
+ .container
+ .course-selection-nav__inner
+ ul.course-selection-nav__items
+ li.course-selection-nav__item
+ = link_to '#rails-programmer-course', class: 'course-selection-nav__item-link' do
+ | Railsエンジニア
+ li.course-selection-nav__item
+ = link_to '#front-engineer-course', class: 'course-selection-nav__item-link' do
+ | フロントエンドエンジニア
+
+ .course-selection__items
+ .container.is-xl
+ .row.is-gutter-width-32
+ .col-md-6.col-xs-12
+ .course-selection-item-anchor#rails-programmer-course
+ - course = Course.find_by(title: 'Railsエンジニア')
+ - if course
+ = render('course_practices', course: course)
+ - else
+ p コースが見つかりませんでした。
+ .col-md-6.col-xs-12
+ .course-selection-item-anchor#front-engineer-course
+ - course = Course.find_by(title: 'フロントエンドエンジニア')
+ - if course
+ = render('course_practices', course: course)
+ - else
+ p コースが見つかりませんでした。
diff --git a/app/views/welcome/training.html.slim b/app/views/welcome/training.html.slim
index a7fa5a78307..1cac2216f8d 100644
--- a/app/views/welcome/training.html.slim
+++ b/app/views/welcome/training.html.slim
@@ -22,7 +22,7 @@
| フィヨルドブートキャンプは企業の研修代行も行っております。
p
| 私たちのカリキュラムは「ソフトウェアエンジニアとして就職するためのカリキュラム」ではありません。
- | 「現場のプラスの戦力になるためのカリキュラム」です。
+ | その先の「現場のプラスの戦力になるためのカリキュラム」です。
| 新人がチームに加わった際、ほとんどの場合は教育にリソースが取られ、
| 戦力としてはマイナスになってしまいます。
p
diff --git a/config/routes.rb b/config/routes.rb
index 52d34f1a5fe..82a9063f6df 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -15,6 +15,7 @@
get "pp", to: "welcome#pp", as: "pp"
get "law", to: "welcome#law", as: "law"
get "coc", to: "welcome#coc", as: "coc"
+ get "courses", to: "welcome#courses", as: "courses"
draw :scheduler
draw :api
draw :paper
diff --git a/db/fixtures/courses.yml b/db/fixtures/courses.yml
index e16dbf5d2aa..619fc3ea321 100644
--- a/db/fixtures/courses.yml
+++ b/db/fixtures/courses.yml
@@ -1,15 +1,66 @@
course1:
title: Railsエンジニア
- description: "Linux, Web, Ruby, Railsなどを学んでRailsエンジニアになろう。"
+ description: |-
+ このコースでは、プログラミング言語「Ruby」を用いたWebアプリケーションフレームワークであるRails(Ruby on Rails)を使ってWebエンジニアになるためのバックエンド・フロントエンドも含めた一通りの技術を学びます。
+
+ ### 主な内容
+ **Linux**
+ Webアプリケーションを動かすために必要なOS、Linuxの使い方を学びます。
+
+ **Ruby**
+ Railsにも必須のバックエンドエンジニアとして必要な言語Rubyについて学びます。
+
+ **JavaScript**
+ フロントエンドエンドエンジニアとして必須のJavaScriptを基礎から学びます。
+
+ **Rails**
+ バックエンド・フロントエンドの両方を含めたWebアプリケーションを作るためのフレームワークであるRailsを学びます。
+
+ **チーム開発**
+ Railsで作られたフィヨルドブートキャンプのEラーニングシステム自体をチームで開発します。
+
+ **Webサービス作成**
+ アイデアから自分で考えたWebサービスをRailsを使って作り、デプロイまでして公開します。
+
+ :::message primary
+ #### バックエンドエンジニアとは
+ ウェブアプリケーションのサーバーサイドのロジックとデータ管理を担当するエンジニアです。
+ 主な仕事はサーバーサイドのビジネスロジックの実装、APIの開発です。
+ ユーザーが見えない部分で動作する仕組みを設計・実装し、システム全体が円滑に機能するようにします。
+ :::
course2:
title: Unityゲームエンジニア
description: "Unity, C#を学んでゲームエンジニアになろう。"
course3:
- title: iOSプログラマー
- description: "iOS, Swiftを学んでiOSプログラマーになろう。"
+ title: iOSエンジニア
+ description: "iOS, Swiftを学んでiOSエンジニアになろう。"
course4:
title: フロントエンドエンジニア
- description: "JavaScriptやTypeScriptなどを学んでフロントエンドエンジニアになろう。"
+ description: |-
+ このコースではHTML、CSSやJavaScript/TypeScriptをつかってWebアプリケーションにおいてユーザーが直接触る部分(ユーザーインターフェース)を作るための技術を習得できます。
+ ### 主な内容
+ **JavaScript**
+ フロントエンドエンジニアとして一番重要な言語。基本から非同期処理、ライブラリの作成までしっかり学びます。
+
+ **TypeScript**
+ 現在のフロントエンド開発では欠かせない言語。アプリケーションを作っていく場面では全てこのTypeScriptを使用していきます。
+
+ **React**
+ WebアプリケーションのUIを作るための代表的なライブラリ。
+
+ **Next.js**
+ Reactと組み合わせてWebアプリケーションを作るための便利なライブラリ。
+
+ **チーム開発**
+ Next.jsで作られた実際に稼働しているWebアプリケーションをチームで作ります。
+
+ **Webサービス作成**
+ アイデアから自分で考えたWebサービスをNext.jsを使って作り、デプロイまでして公開します。
+
+ :::message primary
+ #### フロントエンドエンジニアとは
+ フロントエンドエンジニアとはユーザーが直接触れる部分を設計・開発するエンジニアです。主な仕事はユーザーインターフェース(UI)の設計と実装です。デザイナーが作成したビジュアルデザインを、HTML、CSS、JavaScriptを駆使して再現し、ユーザーが直感的に操作できるインターフェースを構築します。これにより、優れたユーザーエクスペリエンス(UX)を提供することを目指しています。
+ :::
diff --git a/db/fixtures/users.yml b/db/fixtures/users.yml
index 8d1cbd89de8..9f98162982a 100644
--- a/db/fixtures/users.yml
+++ b/db/fixtures/users.yml
@@ -28,8 +28,8 @@ komagata:
created_at: "2014-01-01 00:00:01"
last_activity_at: "2014-01-01 00:00:01"
profile_name: "駒形 真幸"
- profile_job: "プログラマー"
- profile_text: "株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。"
+ profile_job: "エンジニア"
+ profile_text: "株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。"
machida:
login_name: machida
@@ -173,7 +173,7 @@ mentormentaro:
sent_student_followup_message: true
last_activity_at: "2014-01-01 00:00:06"
profile_name: "メンタ 麺太郎"
- profile_job: "プログラマー"
+ profile_job: "エンジニア"
profile_text: "メンタ麺太郎です。メンターです。"
kimura:
@@ -863,7 +863,7 @@ unadmentor:
sent_student_followup_message: true
last_activity_at: "2021-11-01 00:00:02"
profile_name: "ウナ アドメン"
- profile_job: "プログラマー"
+ profile_job: "エンジニア"
profile_text: "管理者権限の無いメンターです。"
tatenoicon: # アイコンが長方形のユーザー
diff --git a/test/fixtures/courses.yml b/test/fixtures/courses.yml
index 9d6ccbef668..19d9c307c71 100644
--- a/test/fixtures/courses.yml
+++ b/test/fixtures/courses.yml
@@ -7,5 +7,9 @@ course2:
description: "Unity, C#を学んでゲームエンジニアになろう。"
course3:
- title: iOSプログラマー
- description: "iOS, Swiftを学んでiOSプログラマーになろう。"
+ title: iOSエンジニア
+ description: "iOS, Swiftを学んでiOSエンジニアになろう。"
+
+course4:
+ title: フロントエンドエンジニア
+ description: "JavaScriptやTypeScriptなどを学んでフロントエンドエンジニアになろう。"
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
index 059e7e6a443..ea3075c80b6 100644
--- a/test/fixtures/users.yml
+++ b/test/fixtures/users.yml
@@ -32,8 +32,8 @@ komagata:
last_activity_at: "2014-01-01 00:00:01"
hide_mentor_profile: false
profile_name: "駒形 真幸"
- profile_job: "プログラマー"
- profile_text: "株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。"
+ profile_job: "エンジニア"
+ profile_text: "株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。"
machida:
login_name: machida
@@ -720,7 +720,7 @@ kimuramitai:
created_at: "2022-03-28 00:00:01"
last_activity_at: "2022-03-28 00:00:01"
profile_name: "キムラ ミタイ"
- profile_job: "プログラマー"
+ profile_job: "エンジニア"
profile_text: "木村さんに似ているとよく言われます。"
sent_student_followup_message: true
diff --git a/test/system/admin/campaigns_test.rb b/test/system/admin/campaigns_test.rb
index 5b073a28908..27bd5eea80a 100644
--- a/test/system/admin/campaigns_test.rb
+++ b/test/system/admin/campaigns_test.rb
@@ -163,6 +163,7 @@ class CampaignsTest < ApplicationSystemTestCase
assert_text "#{example_start_at} #{example_end_at} #{example_pay_at}"
end
+ logout
visit new_user_path
assert_text 'キャンペーン適用'
assert_text 'お試し期間が倍以上の延長キャンペーン!!! のお試し期間延長が適用され、'
diff --git a/test/system/admin/users_test.rb b/test/system/admin/users_test.rb
index 944c51bff95..b72f1a0bd6c 100644
--- a/test/system/admin/users_test.rb
+++ b/test/system/admin/users_test.rb
@@ -311,10 +311,10 @@ class Admin::UsersTest < ApplicationSystemTestCase
user = users(:kensyu)
visit_with_auth "/admin/users/#{user.id}/edit", 'machida'
within 'form[name=user]' do
- select 'iOSプログラマー', from: 'user[course_id]'
+ select 'iOSエンジニア', from: 'user[course_id]'
end
click_on '更新する'
- assert_equal 'iOSプログラマー', user.reload.course.title
+ assert_equal 'iOSエンジニア', user.reload.course.title
end
test 'general user cannot change user course' do
diff --git a/test/system/courses_test.rb b/test/system/courses_test.rb
index 092ee703304..4b917194c9c 100644
--- a/test/system/courses_test.rb
+++ b/test/system/courses_test.rb
@@ -5,7 +5,7 @@
class CoursesTest < ApplicationSystemTestCase
test 'show listing courses' do
visit_with_auth '/courses', 'mentormentaro'
- assert_equal 'コース一覧 | FBC', title
+ assert_equal 'コース選択 | FJORD BOOT CAMP(フィヨルドブートキャンプ)', title
end
test 'create course' do
@@ -31,7 +31,7 @@ class CoursesTest < ApplicationSystemTestCase
test 'show published courses' do
visit_with_auth '/courses', 'hajime'
- assert_no_text courses(:course1).title
+ assert_text courses(:course1).title
visit_with_auth "/mentor/courses/#{courses(:course1).id}/edit", 'komagata'
within 'form[name=course]' do
find(:css, '#checkbox-published-course').set(true)
diff --git a/test/system/home_test.rb b/test/system/home_test.rb
index fed8a3e64de..35f7e1d0a16 100644
--- a/test/system/home_test.rb
+++ b/test/system/home_test.rb
@@ -553,7 +553,7 @@ def assert_events_count(event_label, count)
test 'toggles_mentor_profile_visibility' do
visit '/'
assert_text '駒形 真幸'
- assert_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
visit_with_auth edit_current_user_path, 'komagata'
check 'プロフィール非公開', allow_label_click: true
click_on '更新する'
@@ -561,6 +561,6 @@ def assert_events_count(event_label, count)
logout
visit '/'
assert_no_text '駒形 真幸'
- assert_no_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_no_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
end
end
diff --git a/test/system/require_login_test.rb b/test/system/require_login_test.rb
index 4c8e598ff49..dd13bd2bc0a 100644
--- a/test/system/require_login_test.rb
+++ b/test/system/require_login_test.rb
@@ -13,7 +13,6 @@ class RequireLoginTest < ApplicationSystemTestCase
assert_login_required "/companies/#{companies(:company1).id}/users"
assert_login_required '/companies'
assert_login_required "/courses/#{courses(:course1).id}/practices"
- assert_login_required '/courses'
assert_login_required '/current_user/bookmarks'
assert_login_required '/current_user/password/edit'
assert_login_required '/current_user/products'
diff --git a/test/system/welcome_test.rb b/test/system/welcome_test.rb
index 922284a226f..4482edc7111 100644
--- a/test/system/welcome_test.rb
+++ b/test/system/welcome_test.rb
@@ -84,8 +84,8 @@ class WelcomeTest < ApplicationSystemTestCase
visit_with_auth '/current_user/edit', 'komagata'
attach_file 'user[profile_image]', Rails.root.join('test/fixtures/files/users/avatars/komagata.jpg'), make_visible: true
fill_in 'user[profile_name]', with: '駒形 真幸'
- fill_in 'user[profile_job]', with: 'プログラマー'
- fill_in 'user[profile_text]', with: '[株式会社ロッカ](https://lokka.jp)の代表兼プログラマー。Rubyが大好きで[怖話](https://kowabana.jp)、[フィヨルドブートキャンプ](https://bootcamp.fjord.jp)などを開発している。'
+ fill_in 'user[profile_job]', with: 'エンジニア'
+ fill_in 'user[profile_text]', with: '[株式会社ロッカ](https://lokka.jp)の代表兼エンジニア。Rubyが大好きで[怖話](https://kowabana.jp)、[フィヨルドブートキャンプ](https://bootcamp.fjord.jp)などを開発している。'
click_on '書籍を追加'
find("input[name*='[title]']").set('プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで')
find("input[name*='[url]']").set('https://www.amazon.co.jp/dp/B09MPX7SMY')
@@ -95,8 +95,8 @@ class WelcomeTest < ApplicationSystemTestCase
visit '/welcome'
assert_selector 'img[src*="komagata.jpg"]'
assert_text '駒形 真幸'
- assert_text 'プログラマー'
- assert_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_text 'エンジニア'
+ assert_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
assert_selector 'img[src*="cherry-book.jpg"]'
end
@@ -105,8 +105,8 @@ class WelcomeTest < ApplicationSystemTestCase
visit_with_auth "/admin/users/#{user.id}/edit", 'komagata'
attach_file 'user[profile_image]', Rails.root.join('test/fixtures/files/users/avatars/komagata.jpg'), make_visible: true
fill_in 'user[profile_name]', with: '駒形 真幸'
- fill_in 'user[profile_job]', with: 'プログラマー'
- fill_in 'user[profile_text]', with: '[株式会社ロッカ](https://lokka.jp)の代表兼プログラマー。Rubyが大好きで[怖話](https://kowabana.jp)、[フィヨルドブートキャンプ](https://bootcamp.fjord.jp)などを開発している。'
+ fill_in 'user[profile_job]', with: 'エンジニア'
+ fill_in 'user[profile_text]', with: '[株式会社ロッカ](https://lokka.jp)の代表兼エンジニア。Rubyが大好きで[怖話](https://kowabana.jp)、[フィヨルドブートキャンプ](https://bootcamp.fjord.jp)などを開発している。'
click_on '書籍を追加'
find("input[name*='[title]']").set('プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで')
find("input[name*='[url]']").set('https://www.amazon.co.jp/dp/B09MPX7SMY')
@@ -116,15 +116,15 @@ class WelcomeTest < ApplicationSystemTestCase
visit '/welcome'
assert_selector 'img[src*="komagata.jpg"]'
assert_text '駒形 真幸'
- assert_text 'プログラマー'
- assert_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_text 'エンジニア'
+ assert_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
assert_selector 'img[src*="cherry-book.jpg"]'
end
test 'toggles_mentor_profile_visibility' do
visit '/welcome'
assert_text '駒形 真幸'
- assert_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
visit_with_auth edit_current_user_path, 'komagata'
check 'プロフィール非公開', allow_label_click: true
click_on '更新する'
@@ -132,9 +132,9 @@ class WelcomeTest < ApplicationSystemTestCase
logout
visit '/welcome'
assert_no_text '駒形 真幸'
- assert_no_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_no_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
visit_with_auth '/welcome', 'kimura'
assert_text '駒形 真幸'
- assert_text '株式会社ロッカの代表兼プログラマー。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
+ assert_text '株式会社ロッカの代表兼エンジニア。Rubyが大好きで怖話、フィヨルドブートキャンプなどを開発している。'
end
end