Slide 1

Slide 1 text

営業職の俺がRailsで アプリケーションを作ってみた @toyokappa

Slide 2

Slide 2 text

⽣年⽉⽇ 平成2年12⽉28⽇(満26歳) 最終学歴 2013年3⽉ 東京都市⼤学卒業 職歴 2013年4⽉〜2015年3⽉ バリューコマース (営業⇒マーケ⇒新規事業⇒経営企画) 2015年4⽉〜現在 JAC Recruitment (Web業界の転職エージェント) 趣味 海外ドラマ鑑賞 (シリコンバレー、BrBa、Big Bang Theory) ⾃⼰紹介

Slide 3

Slide 3 text

なぜRailsアプリを作ろうと思ったか? Railsチュートリアルを2周したことで⾃信をつけ ⾃分の考えたアプリケーションを作りたいと考えたため。

Slide 4

Slide 4 text

この時点で持っていた知識 知識レベル HTML、CSS(中学時代に独学で勉強) JS、PHP、MySQL(⼤学時代に少しかじった程度) Wordpress(テンプレート、簡単なランキングWidgetを作った程度) Ruby on Rails(Railsチュートリアルを2周して学んだ程度) 当時の考え Railsチュートリアルを2周して、アプリケーションをゼロから作る流れを 理解したし、次のステップとして⾃分の考えたアプリケーションを作ろう。 これを実績にエンジニアに転職するぞ!

Slide 5

Slide 5 text

開発したアプリケーション

Slide 6

Slide 6 text

①ユーザー認証ができる ②わからない単語を登録できる ③単語に紐付いたURLが複数登録できる ④URL(サイト)を理解度とを0〜5で評価できる ⑤理解度が⾼い順でURLがソートされる ⑥あとで単語の意味を忘れた時に⾒返せる できること

Slide 7

Slide 7 text

デモ https://knowledge-stocker.herokuapp.com/

Slide 8

Slide 8 text

実際に作ってみて 結論 Railsチュートリアルをたかだか2周したくらいではプロのエンジニアに なるという⽬標には到底及ばなかった。完全に井の中の蛙でした。。 なぜそう思ったのか? Railsチュートリアル流の開発には、実際の現場での開発と多くの ギャップが有り、⾃分⾃⾝そのギャップに気づけず「わかったつもり」 になっていた。プロのエンジニア(RDM主催の⽅々)のレビューを 受け「わかったつもり」が浮き彫りとなったため。

Slide 9

Slide 9 text

わかったつもり〜その1〜 GemのVer指定の問題:パッチVerまでしっかり固定 Bundlerの動きを理解せず、固定=安⼼という考え⽅を持っていた

Slide 10

Slide 10 text

学んだこと〜その1〜 BundlerがGemのVerを管理してくれることを学んだ Semantic Versioning2.0というバージョン定義の概念を教わった

Slide 11

Slide 11 text

わかったつもり〜その2〜 Gitの使い⽅の問題:commitの粒度がわからない Commit = Pull Requestくらいの粒度で考えていた app/models app/controllers app/views test/models config/routes.rb Gemfile db/migrate db/schema.rb Gemfile.lock Create user index function

Slide 12

Slide 12 text

学んだこと〜その2〜 Gemfile Gemfile.lock Add abc_def gem db/migrate db/schema.rb Create users table app/models test/models Update user model app/controllers Add index action to users config/routes.rb Add users resources app/views Create index page ファイルの種別毎や、実装とテストをセットでcommitすることを学んだ 合わせて「git rebase -i」や「git reset」の使い⽅を学んだ

Slide 13

Slide 13 text

わかったつもり〜その3〜 開発の進め⽅の問題:パーツごとに完成度が⾼いものを作ろうとする Railsチュートリアルくらいの完成度のものを最初から作ろうとしていた

Slide 14

Slide 14 text

学んだこと〜その3〜 MVP(Most Viable Prodact)という考え⽅を学んだ とにかくちっちゃくても、醜くても動くものを優先して作る意識が芽⽣えた

Slide 15

Slide 15 text

その他にやったこと ローカルの開発環境構築 Cloud9での開発をやめ、ローカルに開発環境の構築を⾏うことが出来た Bootstrapによる簡単なデザインの作成 Bootstrapのセットアップ、サイトレイアウトの作成を⾏った I18n機能を使⽤したサイトの⽇本語化 Railsガイドを参考に、I18nの設定、エラーメッセージの⽇本語化を⾏った SQLite3からPostgreSQLに変更 ⾊々なサイトを参考に、SQLite3からPostgreSQLへのDB変更を⾏った RSpecによるModelのテストの実⾏ RSpecやFactoryGirlのセットアップ、Modelのテストを書いた

Slide 16

Slide 16 text

今後取り組みたい課題 認証機能の実装⽅法を⾒直す Railsチュートリアルの認証機能実装⽅法が独特という指摘を頂く。 SessionsHelperをApplicationControllerにインクルードて実装している。 また、認証フィルタをController毎に定義している。これを定⽯どおりに 修正する。 RSpecによるテストの実装 Modelのテストを書いてはみたが、まだ⾃信はない。 また、Model以外のテストも実装が出来ていない。 Everyday Railsの「RSpecによるRailsテスト⼊⾨」を読みRSpecを 理解した上でModel、Controller、Featureなどのスペックを実装する。

Slide 17

Slide 17 text

Knowledge Stockerの展望 他のユーザーとの繋がりを持てるようにする • 他のユーザーの登録した単語の検索ができる機能 • 他のユーザーが登録している単語の情報をコピー登録できる機能 • ユーザー同⼠がフォローしあえる機能 個⼈利⽤の機能を充実させる • ユーザー情報の編集、削除(退会)ができる機能 • 単語の登録数や理解した単語数などの⾏動実績を可視化できる機能 • SNSを使ったユーザー登録、ログイン機能 • 理解していない単語をTodoのような形式で表⽰する機能 • ⾃分が登録した単語に対しておすすめのサイトをレコメンドする機能

Slide 18

Slide 18 text

最後に 全体を通し、更に努⼒を積み重ねなければならない世界であることを 実感しました。何か良い勉強法があれば教えて頂けますと幸いです。 また、エンジニアを⽬指すにあたってブログも書いていますので よければご覧ください。 営業職の俺がエンジニアになる http://toyokappa.hatenablog.com/

Slide 19

Slide 19 text

ご清聴ありがとうございました。