Docker環境でLINE botとYoutubeAPI使って動画検索サービスを作ってみた。
対象者
完成イメージ
前からYouTube API使ってみたいなーって思ってたので、
— らんぼー@Railsエンジニア (@rambolog) 2019年12月15日
Docker環境でLine上でYouTube検索できるやつ作った笑
いい感じに検索の利便性も上げたいなー🤔 pic.twitter.com/J4eUKKSzpI
Docker
まずはRailsの環境構築をDockerで行います。
docker docsに記載されている、Railsの環境構築マニュアルを元に作成いたします。
何箇所か自分で変更した部分もあり、コメントを残しています。
Dockerfile
FROM ruby:2.5 RUN apt-get update -qq && apt-get install -y nodejs postgresql-client RUN mkdir /myapp WORKDIR /myapp # 文字化けしないように ENV LANG=C.UTF-8 COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp
Dockerfileのコマンドを簡単に説明すると、
- FROMはDockerfileで使用するイメージを指定します。
- RUNは実行してほしい命令になります。
- WORKDIRはディレクトリの指定
- ENVは環境変数の設定
- COPYは左辺にあるを右辺にコピー。(
COPY Gemfile /myapp/Gemfile
だったら、ローカルのGemfileをコンテナ上のmyapp/Gemfileにコピー)
他にもコマンドが気になる方は、下記記事が参考になります。
Gemfile
source 'https://rubygems.org' gem 'rails', '~>5'
GemfileをDockerfileと同じディレクトリに作成してください。
また、touch Gemfile.lock
で一緒にGemfile.lockを作ってください(中身は空で大丈夫です)
次にdocker-compose.yaml
を作ってください。ファイルの中身は以下のようになります。
docker-compose.yaml
version: '3' # buildし直すのがめんどいので、bundleをvolumeで繋ぐ volumes: bundle: services: db: image: postgres # postgresのイメージを使ってDBを作成 volumes: - ./tmp/db:/var/lib/postgresql/data app: build: . # 同じディレクトリに存在するDockerfileのイメージを使う command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp ports: - "3000:3000" depends_on: - db
次に、以下のコマンドでRailsの新規プロジェクトを作成してください!
docker-compose run app rails new . --force --no-deps --database=postgresql
rails newをしたことでGemfileが変わったので、imageを作り直します!
先程、作成したGemfileとは中身が変わっているはずです。
docker-compose build
Railsはlocalhostで動いていますが、DBのコンテナを使用しているのでconfig/database.yml
を以下のように修正します。
default: &default adapter: postgresql encoding: unicode host: db username: postgres password: pool: 5 development: <<: *default database: myapp_development test: <<: *default database: myapp_test
変更したら、下記コマンドを実行してください。
docker-compose up
docker-compose run app rake db:create
これで、localhost:3000にアクセスしてみてください!
ちなみにopen http://localhost:3000
とターミナル上で打てば、localhost:3000にアクセスしてくれます。
LINE BOTとYoutube API
まず、Gemfileにdotenv-rails
とline-bot-api
を追加します。
Gemfile
# frozen_string_literal: true source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.5.7' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.4' # Use postgresql as the database for Active Record gem 'pg', '>= 0.18', '< 2.0' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby gem 'rubocop', '~> 0.77.0', require: false # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.2' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use ActiveStorage variant # gem 'mini_magick', '~> 4.8' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: %i[mri mingw x64_mingw] gem 'pry-byebug' gem 'pry-doc' gem 'pry-rails' end group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'listen', '>= 3.0.5', '< 3.2' gem 'web-console', '>= 3.3.0' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of chromedriver to run system tests with Chrome gem 'chromedriver-helper' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby] #----------------------追加--------------------------------- gem 'dotenv-rails', require: 'dotenv/rails-now' gem 'google-api-client', '~> 0.34' gem 'line-bot-api' #----------------------追加---------------------------------
この時、必ずdotenv-rails
がline-bot-api
より上になるようにGemfileに書いてください。
dotenv-rails
は環境変数をセットするGemより前に置かないと(line-bot-api
とgoogle-api-client
)、環境変数を上手くセットできないからです。
routes.rbを作ってください
Rails.application.routes.draw do post '/callback' => 'linebot#callback' end
次にlinebot用のcontrollerを作ってください。
ザックリした流れとしては、line-botでテキストを受け取って、そのテキストでYoutubeAPIを叩き(そのテキストでYoutube内を検索し)、該当するYoutubeの動画をレスポンスで返すと言うのが流れです。
linebot_controller.rb
# frozen_string_literal: true class LinebotsController < ApplicationController # linebotを使うためにrequire require 'line/bot' # youtube apiを使うためにrequire require 'google/apis/youtube_v3' require 'active_support/all' # callbackアクションのCSRFトークン認証を無効 protect_from_forgery except: [:callback] def callback body = request.body.read signature = request.env['HTTP_X_LINE_SIGNATURE'] unless client.validate_signature(body, signature) halt 400, { 'Content-Type' => 'text/plain' }, 'Bad Request' end events = client.parse_events_from(body) events.each do |event| # 定数は下記参照 # https://github.com/line/line-bot-sdk-ruby/blob/8963a4c277259b225a766269e9e53040e414b90f/lib/line/bot/event/message.rb#L18 case event when Line::Bot::Event::Message case event.type # テキストが送られてきたケース when Line::Bot::Event::MessageType::Text # event.message['text']にユーザーが入力したテキストが入っている item_ids = find_videos(event.message['text']) start_word = { type: 'text', text: message_first_text(item_ids, event) } message = item_ids.map do |id| { type: 'text', # 動画のidを元にYoutubeの動画のリンクを作る text: "https://www.youtube.com/embed/#{id.video_id}" } end # 破壊的変更 message.unshift(start_word) # 画像が送られてきたケース when Line::Bot::Event::MessageType::Image message = { type: 'text', text: '画像は送れません' } # スタンプが送られてきたケース when Line::Bot::Event::MessageType::Sticker message = { type: 'text', text: 'スタンプは対応していません' } # その他のケース else message = { type: 'text', text: 'テキストを入力してください' } end client.reply_message(event['replyToken'], message) end end 'OK' end private # 送られてきたテキストがkeyword def find_videos(keyword) service = Google::Apis::YoutubeV3::YouTubeService.new service.key = ENV['API_KEY'] # 環境変数をセット opt = { q: keyword, type: 'video', max_results: 4 # 表示する動画の最大数 } # そのkeywordでYoutubeの動画を検索 results = service.list_searches(:snippet, opt) # 検索にヒットした動画のidを配列で返却 results.items.map(&:id) end # ヒットしたものがあるかないかでメッセージを変更する def message_first_text(item_ids, event) if item_ids.blank? # 動画が見つからなかったケース "「#{event.message['text']}」という検索ワードにヒットした動画は見つかりませんでした" else # 動画が見つかったケース "「#{event.message['text']}」という検索ワードにヒットした動画が#{item_ids.count}件ありました!" end end # 呼ばれる度にインスタンスを生成しないようにメモ化 def client @client ||= Line::Bot::Client.new do |config| config.channel_secret = ENV['LINE_CHANNEL_SECRET'] # 環境変数をセット config.channel_token = ENV['LINE_CHANNEL_TOKEN'] # 環境変数をセット end end end
linebotのアクセスkeyの発行方法
【Rails】1時間ぐらいで簡単にLINEのBot開発をしよう-アンケート集計Bot基礎-【画像付き】 - Qiita
記事が凄く参考になったので、この記事に従ってLINE Developerにアクセスしてアカウントを作ってください。
記事どうり、Webhook送信: 利用する
に変更です。
YoutubeAPIのアクセスkeyの発行方法
アクセスkeyは下記の記事どうりにやれば問題ないかなと思います!
harokuにデプロイ
heroku config:set LINE_CHANNEL_SECRET=ここに先程メモしたChannel Secretを貼り付ける heroku config:set LINE_CHANNEL_TOKEN=ここに先程メモしたアクセストークンを貼り付ける heroku config:set API_KEY=ここに先程はメモしたAPI_KEY(YoutubeAPI)を貼り付ける
そしてデプロイです。
デバッグ用
LINEBOTは一回一回本番へデプロイしないと動作確認ができないです。
でも、それだと大変めんどくさいですよね?
ですので、Ngrok
と言うオープンソースを使うといいです!
Ngrokの公式に行っていただいて、無料の会員登録をしてインストールして下さい。
./ngrok http -host-header="0.0.0.0:3000" 3000
でlocalhost3000にアクセスできるようにngrokを起動して、
あとは、上記のQiita記事のようにWebhookのURLを変更してあげれば大丈夫です!
ActiveRecord frist,take,limitの違い
今回はfirst,take,limitの挙動の違いに躓きましたのでまとめました。
間違いなどありましたら、ご教示頂けますと幸いです。
first
前提としてUserクラスが存在するとします。
クエリを見てみると・・・
pry(main)> user = User.first User Load (0.7ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1 [["LIMIT", 1]]
orderされています!!!
pry(main)> User.pluck(:id,:name) => [[2, "田中"], [1, "佐藤"]] pry(main)> user.first.id => 1 pry(main)> user.first.name => '佐藤'
ですので、レコードのIDが昇順になっていなくてもorderしてくれるので最もidが若いものを取得できています。
take
pry(main)> user = User.take User Load (0.7ms) SELECT "users".* FROM "users" LIMIT $1 [["LIMIT", 1]]
first
のようにorderはされていません。
pry(main)> User.pluck(:id,:name) => [[2, "田中"], [1, "佐藤"]] pry(main)> user.first.id => 2 pry(main)> user.first.name => '田中'
ですので、DBの先頭に保存されているレコードがそのまま取得されてしまいます。
limit
pry(main)> user = User.limit(1) => User Load (0.4ms) SELECT "users".* FROM "users" LIMIT $1 [["LIMIT", 1]]
limit
は引数を指定しないと使えません。
pry(main)> User.pluck(:id,:name) => [[2, "田中"], [1, "佐藤"]] pry(main)> user.first.id => 2 pry(main)> user.first.name => '田中'
また、limit
もtake
と同じようにorderはしてくれません
pry(main)> User.limit(1).class => User::ActiveRecord_Relation
ただfirst
やtake
と異なるのがlimit
は、返り値がActiveRecord_Relation
になります。
scopeなどでメソッドチェーンをしたいときは、limit
の方がいいかもしれません。
参考資料
ProtocolBuffersでのwrappers.protoの使い方
今回はProtocolBuffersを使用していてデフォルト値に関して苦しんだので、解決方法をシェアしたいと思います。
ProtocolBuffersのデフォルト値
前提としてProtocolBuffersにはデフォルト値が存在します。
文字列 | 空文字列 |
---|---|
バイト列 | 空バイト列 |
ブーリアン型 | false(偽) |
数値型 | ゼロ |
列挙型(enum) | 定義の最初の値(数値は0) |
proto2まではoptionalを使用してデフォルト値を設定していたようですが、proto3からはデフォルトでoptionalが適用されているそうで、何もしなければデフォルト値が入ってしまうということです。
では、protoにデフォルト値を入れたくない場合はどうすればいいのか・・・?
調べたらwrappers.protoを使用する方法に辿り着きました!
wrappers.proto
使い方としては、
- wrappers.protoをimport
- 型をProtocolbufのwrappers.proto内で定義されているものにする
import "google/protobuf/wrappers.proto"; message Detailparam { google.protobuf.StringValue name = 1; //名前 google.protobuf.StringValue adress = 3; //住所 google.protobuf.Int32Value sex = 3; //性別 }
int32,int64,string,boolなど以下で定義されているので使いたい型に指定してあげてください!
https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/wrappers.proto
ちなみにgoogle.protobufはpackage名です。
その次はコンパイル!wrappers.protoでラッピングされていればok!
Rubyでの使い方
実装で使用する際には、wrappers.protoのmessageでnewしてあげればok!
User::V1::Detailparam.new( name: Google::Protobuf::StringValue.new(value: 'taro'), adress: Google::Protobuf::StringValue.new(value: 'tokyo'), sex: Google::Protobuf::Int32Value.new(value: 1) }
nilをいれたいときは
User::V1::Detailparam.new( name: nil, adress: nil, sex: nil )
にすればデフォルト値が入らず、ちゃんとnilが入ってくれます!
参考記事
Proto2 vs Proto3 - Qiita protobuf typeに値が入っているか確認するにはgoogle/protobuf/wrappers.protoをつかうとよい - 平日インプット週末アウトプットぶろぐ spring5-kotlin-application/task.proto at 970974cbc5c6116178a0088d4c651a9b9aeaf290 · soushin/spring5-kotlin-application · GitHub protobuf/wrappers.proto at master · protocolbuffers/protobuf · GitHub
Ruby Silver合格記を書いたよ
こんにちは、らんぼーです。
5月中盤にRuby Silverを受験し、88/100点で合格しましたので
今回は合格記的なものを書きたいと思います。
Ruby Silverの受験を考えているような人に参考になるような内容になればと思います!
どれくらい勉強したか
Ruby Silver自体の学習は1ヶ月半ほどやりました。
学習時間的には20〜30時間くらいですかね。
当時、仕事が忙しくてRuby silverの方に学習時間をあまり裂けませんでした。(言い訳)
やったこと(本、サイト)
基本的には問題を解く→解説を見る→ググる→問題を解く
のサイクルで勉強をしていました。
Ruby技術者認定試験合格教本
[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応) Ruby公式資格教科書
Ruby技術者認定試験(Ruby Silver/Gold)に対応している唯一の教材です。
僕はまず問題を解いて、間違えた箇所に関してはこのテキストで復習をしてまいました。
このテキストの問題が大体9割くらい解けるようになるまで、繰り返し問題を解いていましたね。
REx Ruby Examination
https://rex.libertyfish.co.jp/exam_histories
オンライン上で予想問題を実際に解くことができるサイトです。
このサイトが一番多く使いました!
ミニツク
ここも問題が解くことができます。
Github上に上がっている問題
https://gist.github.com/sean2121/945035ef2341f0c39bf40762cd8531e0
テストに出たこと
破壊的メソッドか非破壊的メソッドか?
基本的には!が付いていると破壊的メソッドだと思うのですが、試験では!が付いていない破壊的メソッドに関して問われることが多いです。
Fileクラス
"a","a+","r","r+","w","w+"の違いをちゃんと理解しているかなど問われました。
同じ動きをするメソッド
正規表現
正規表現に関しては以下のQiita記事がわかりやすかったです!
https://qiita.com/shizuma/items/4279104026964f1efca6
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9
最後に
問題を解いていると、傾向がだいたい掴めるかなと思います。
実際に本番の試験でも、今まで解いたことがあるような問題が8割ほど出題されました!
なので、沢山問題をこなし傾向を把握し
わからない箇所に関しては都度調べていくのが合格への近道かなと思います!
後は、他の方の合格記を読むのもオススメです!
以前は課題10が卒業ライン?ポテパンキャンプ卒業生にインタビューしてみた。
先日、会社の先輩でポテパンキャンプ卒業生の方がいるので
ランチしながらインタビューしてみたところ、興味深いことが聞けたので記事としてシェアさせて頂きます。
今回はその時の記事になります。
割とザックリ書いているので許してください笑
自己紹介
インタビューしたAさんの簡単なプロフィールになります。
エンジニアを目指した理由は・・・?
Aさん)エンジニアを目指したのは、もともとアメリカのシリコンバレーにいて
エンジニアを間近に見ていて、エンジニアのステータスが高くて、なんでも自分のアイデアを形にできるのを見て、かっこいいなって思ったんですよね。
自分も将来はサービス作って企業とかできたらなと思っていたので
ITがもともと好きだったこともあって、ITのアイデアは浮かぶけど作れないというジレンマがあって
エンジニアを雇おうかなと思ったけど、まずエンジニアにならないとエンジニアの気持ちもわからないなと思って
まずは自分がエンジニアになろうと思いました。
ポテパンキャンプを選んだ理由は?
・安かったから
・Railsを学べて自社開発企業への斡旋があること
・斡旋で転職するとキャッシュバックがあるから
学んだことは?
Aさん)いうて企業もスクールに対して、そんなに期待していないと感じました。
それよりも個人で学んで、ポテンシャルや人間性を評価されたと思います。
だから個人的にはポテパンに行こうが、テックアカデミーに行こうが、どこ行こうが
企業からの評価は一緒。
だからこそ値段が他スクールに比べて安価なポテパンキャンプはオススメだと思いますね。
どうせプログラミングスクールに行くなら、安いほうがいい。
30万に値上げしたけど、他のスクールも値上げしているからまだマシかな・・・
良かった点
・他スクールに比べて安価
悪かった点
・生徒の質が落ちている
Aさん)もともと僕の時代はポテパンの課題10まで終了していないと斡旋してもらえなかったんですよね。
今は課題4で斡旋。
だからこそ、生徒の質が落ちていると思いますね。
ポテパンが優秀だったと言われるのは昔の時代のポテパンキャンプ生で、今のポテパンキャンプ生は昔の生徒に比べて、かなり質が悪いと思う。
インタビューを通してのまとめ
僕が受講を始めた頃(9月頃)は課題4まで終えれば、斡旋を受けられることになっており、1月頃には課題2を終えてさえいれば、斡旋を受けることが可能となっていました。
しかし、今回インタビューしてみて、
ポテパンキャンプは以前は課題10で卒業だったということを聞いてビックリしました。
Aさんもおっしゃていましたが、
たまにポテパンキャンプの卒業生が優秀だと言われるのも、課題10までこなしていた卒業生達が優秀だったということですね。
まあ、それでもポテパンキャンプは値上げをしてしまいましたが、
他スクールに比べると安価ですよね。
個人的にはスクールはどこも一緒で、自分次第だと思っているので、スクールに通いたい人にはオススメのスクールだと思いますね。
キャッシュバック制度があるのも嬉しいですしね!
↓無料面談に参加してみる↓
お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修【ポテパンキャンプ】
ポテパンキャンプを受講したガチの感想を語る
こんにちは、らんぼーです。 簡単に僕の経歴を紹介すると、
といったように4月間に渡り、ポテパンキャンプで沢山のことを学ばせて頂きました。
そのこともあり、転職活動では自社開発企業複数社から内定を頂くことが出来ました。
ネット上では、プログラミングスクールの情報を調べてもアフィリエイターの記事が殆どです。受講者の感想は埋まってしまっています。
また、特にポテパンキャンプの受講生による評判は見たことがありませんでした。
なので、1個人として正直にポテパンキャンプを受講した感想をご紹介したいと思っています。
ポテパンキャンプを受講するかどうか悩んでいる人の参考になれば幸いです。
ポテパンキャンプを選んだ理由
・侍エンジニア
・テックエキスパート
当時は、どのスクールに入校をするか悩んでいました。
これらのスクールの中で決め手になったのは、
の2点の理由から選びました。
侍エンジニアもテックエキスパートも、値段は高額。
(ポテパンキャンプHPより)
対してポテパンキャンプはスクールの中でもかなり安価な15万円という金額でした。
早期離職をしてしまった僕はお金がなかったので、価格は大きな検討材料となりました。
※現在は値上げしてしまい、キャリアコース25万、ビギナーコース30万円になりました。
ポテパンキャンプで学んだこと
インスタクローンアプリはRails Tutorialで学んだことを活かして0→1の作成。
そのECサイトに対して機能の追加やテストの実装をしていくものになります。
既存のECサイトが、どのように動いているのか?仕様を理解しないといけないので、コードを読み取ることが重要になってくる課題でした。
また、実装後には現役Railsエンジニアが厳しくコードレビューをしてくれるので、大変勉強になりました(LGTMを2人以上から貰えないと次に進めない)
実務においても、0→1ベースの開発より既存のサービスに、機能の追加や修正をしていくことが多いので、ポテパンキャンプの本課題はより実務向きであったと言えます。
ただ実務向きである一方、個人的には難しく感じました。
選考について
書類選考
面談
の二つがあります。
よく面談で何を聞かれましたか?と聞かれるので
参考までに、僕が聞かれたことを載せます。
といったように意欲を確かめるような質問が殆どでした。
人によって異なるとは思いますが、僕が面談に行った際には15分前後で終わり、絶対落ちたと思いました笑
良かった点
現役Railsエンジニアの方から厳しいコードレビューをして貰えた
現役Railsエンジニアの方から現場基準のコードレビューをしてもらえるのはポテパンキャンプの最大の強みだと思います。
コードレビューはとても厳しいので、中々LGTMを貰えずに進まなかったりしましたが、大変勉強になりました。
意識が高い仲間達に出会えた
スクールという環境を買うことで、転職を共に目指す仲間達に出会うことができました。
仲間がいることはモチベーションの維持に繋がりましたし、今思い返しても出会えてなかったら、ここまでやり遂げられたかというと不安なものがあります笑
自走力がついた
ポテパンキャンプは、手取り足取りを教えてくれるプログラミングスクールではないので、エラーに躓いた際も、わからないことがあるときも
まずは自力で解決することを求められます。 (勿論、その上でわからないことの質問はウェルカムです)
なので、考える力やググる力が非常に身に付いたと思っています。
悪かった点
挫折する人が多い
カリキュラムが難しいこと、ある程度の自走力を入校時点から求められるため、挫折してしまう人は多いです。
コードレビューをしてもらうSlackがあるのですが、プルリクエストを送るのは大体同じ人だったり、「もっと人数いたよね?」と思うことが多々ありました。
僕と入校のタイミングが近く、仲良くしていた方で音沙汰なくなってしまった人は何人もいます。
2月から完全オンラインになった
今までは週に1回、オフラインの質問会があったのですが、2月から廃止されてしまいました。
僕はオフラインの質問会で色んな方と出会い、一緒に勉強をしたり、わからないことは質問し合いながら、カリキュラムを進めていたので、正直残念でした。
完全オンラインだと僕は、完走できたか不安ですね・・・
ただ、質問はSlack上でし放題ではあるので、
わからないことがある場合には、何がわからないのか?何をしたのか?どうしたいのか?どの記事を参考にしたのか?を明確にして質問を投げれば、講師の方が答えてくれます。
(質問の仕方に関しての参考になる記事です)
斡旋先が思ったよりも少なかった
僕が受講後に選考に進める企業は30社前後しかありませんでした。
正直、もっと斡旋企業はあると思っていたので残念でした。
ただ、ポテパンキャンプでの斡旋以外にも個人で応募することも可能なので、
ポテパンキャンプでの斡旋にそこまで期待しないほうがいいのかもしれません。
向いてる人/向いてない人
向いている人
向いてない人
要するに、他人に育ててもらうようなマインドを持っている方には、厳しいスクールだと言えます。
ただ、そのような方はエンジニアになるのも難しいと思いますね。
まとめ
ポテパンキャンプに入校して、得たものは
だと思っています。
手取り足取りを教えてくれないスクールだからこそ、エンジニアとして働く上で大事なスキルを磨くことが出来ました。
また、ポテパンキャンプのカリキュラムをやり遂げられば、大幅に力はつくと思います。
実際にポテパンキャンプで学んできたことは転職活動で評価させることが多かったです。
何が何でもRailsエンジニアに転職してやるという人にはオススメのスクールだと思います!
質問などございましたら、Twiiterにて気軽にDM下さると幸いです。
↓無料面談に参加してみる↓
お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修【ポテパンキャンプ】
Webエンジニアに転職したいなら読むべき4冊まとめ
こんにちは、らんぼーです。
今回は、未経験からWebエンジニアになるまでに学習した参考書の中でも
個人的に学びの多かった本の共有をしたいと思います。
Webエンジニアへの転職を目指している人には、参考になる内容となっています!
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
俗に言うチェリー本です。
基本的なRubyの文法から、オブジェクト知識、テストまでと幅広い内容が紹介されている良書です。
解説も詳しく、Ruby初心者の方にも理解できるように丁寧に書かれている、とても優しい本だなと思いました。
因みに、僕はRails Tutorialを終えた後にチェリー本を学習しました!
オススメ:Progate、Rails Tutorialを終えたくらいの人
現場で支える Ruby on Rails 5速習実践ガイド
テンプレートエンジンにSlimを使用していたり、テストはRspecと実務的であると思う一方で、完全初心者には難しいかなと思います。
ただ、Railsでアプリケーションを作るにあたっての必要な知識がしっかり詰められている本であることは間違いないです。
僕個人としても、かなり勉強になりました。
レベル感的には、Rails Tutoralを終えた人だと理解しやすいと思います!
被っている内容も多いので良い復習にもなるはずです!
オススメ:Rails Tutorailを終えた人
Webを支える技術
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
Webシステムの実装に必要な基本知識をまとめて紹介している本です。
といったことが書かれています。
Webアプリケーションの作成において重要な知識ですし、実務では必ず必要とされる知識なので絶対読んでおいたほうがいい一冊です!
オススメ:Webエンジニアに転職したい人
Web技術の基本
WebアプリやWebサービスを開発する上で、必要な基本的な技術要素を広く浅く学ぶことができる本です。
見開きの右側のページが全て、絵や図で技術を説明するコーナーになっているので、初心者の方でも理解できやすい内容になっています!
「Webを支える技術」を読んでみて、ちょっと内容が難しいなって思った人は、是非この本がオススメです。
僕自身もこの本は概要を掴むのに、とても分かりやすく重宝しています!
オススメ:分かりやすくWebの基本知識を学びたい人