Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/willnet/skill-map-for-rails-engineers

Rails エンジニアのスキルマップ
https://github.com/willnet/skill-map-for-rails-engineers

Last synced: 2 days ago
JSON representation

Rails エンジニアのスキルマップ

Awesome Lists containing this project

README

        

# これはなに

- Railsエンジニア向けのスキルマップです
- 要素技術の他に、これができたらお仕事で「○○できます!」と言える条件を書いています
- 絶賛書き途中です
- プルリクエストお待ちしています

# フロントエンド層

## HTML

- DOM
- セマンティックなマークアップ
- HTML5の機能&互換性

### HTMLテンプレート言語

- いずれかのテンプレート言語を利用してHTMLを生成できる
- erb
- haml
- slim
- HTMLエスケープとは何か説明できる
- HTMLエスケープをするケースとしないケースについて説明できる
- いずれかのテンプレート言語でのHTMLエスケープのやり方がわかる

## CSS

- CSS 記法
- BEM
- SMACSS
- など
- CSS 拡張言語
- scss
- sass
- less
- CSS フレームワーク
- bootstrap
- foundation
- など

## JavaScript

- プロトタイプ&オブジェクト
- 無名関数
- AJAX
- ES2015
- CoffeeScript
- JavaScript フレームワーク
- React.js
- Vue.js
- Angular.js
- などなど

## フロントエンドその他

- UI/UX
- Analytics
- Google Analytics
- など

# ミドルウェア層

## DB
### MySQL
### PostgreSQL

## WebServer(リバースプロキシ)
### Apache
### nginx
## AppServer
### unicorn

- unicorn の仕組みを説明できる
- マスターを fork してワーカプロセスを作っているなど
- unicorn を本番用に設定して動かせる

### puma

- puma の仕組みを説明できる
- スレッドを作りリクエストを処理する
- unicorn と同じようにマルチプロセス設定もできるなど
- スレッドの仕組みとスレッドセーフについて理解している
- puma を本番用に設定して動かせる

### passenger

## nosql
### memcache
### redis
### mongodb
## Paas

- Heroku などの PaaS 環境で アプリケーションを動かすために必要な作業が説明できる
- もしくは非 PaaS 環境でアプリケーションを動かすために必要なミドルウェアや作業が説明できる

# アプリケーション層

## WWW

### HTTP

- 主要なリクエストメソッドについて説明できる
- 主要なステータスコードについて説明できる
- メディアタイプとは何か説明できる
- 主要なリクエストヘッダ、レスポンスヘッダについて説明できる
- HTTPキャッシュについて、必要なヘッダ込みで説明できる

### HTTP2

- HTTP2とは何なのか説明できる
- HTTP1.1との比較
- HTTP2サーバを実装できる

### SSL

- SSLとは何なのか説明できる
- SSL証明書の種類について説明できる
- Railsで、強制的にSSLを利用させるよう設定できる(HSTS)
- HSTSとは何なのか説明できる

## Ruby

- オブジェクト指向プログラミング
- クラス&モジュール
- 属性&メソッド
- 継承&ミックスイン
- 関数型プログラミング
- ブロック
- Proc&ラムダ
- フロー制御
- 条件分岐
- 繰り返し
- REPL(対話型評価環境)&デバッグ
- メタプログラミング

### rvm, rbenv

- いずれかのツールを設定して ruby のバーションの変更ができる
- プロジェクトごとにバージョンを変更する設定を書ける

### Gem

- Bundlerの役割、利点について説明できる
- Bundlerの基本的なコマンドを使える
- コンフリクトしてしまった依存関係の解決ができる
- 必要な時にGemを作ることができる

## Rails
### REST

- REST とは何か説明できる
- Railsの標準的なURLの規則がわかる
- 例: 特定ユーザのコメントを削除するときに必要なHTTPメソッドとパスをすぐ答えられる

### ルーティング

- resources や resource メソッドを正しく使うことができる
- ネストさせることができる
- only や except を利用し、必要なルーティング設定のみ定義できる
- namespace や scope メソッドを正しく使うことができる
- constraint メソッドを利用しルーティングに対する制約を定義できる

### アセットパイプライン&プリプロセッサ

- アセットパイプラインとは何なのか説明できる
- アセットパイプライを使わない場合と比べたメリットデメリット
- 開発環境と本番環境での設定の違いについて説明できる
- 本番時の assets ファイルをどこに配置するべきか説明できる

### MVC

- MVCとは何なのか、そのメリットは何か説明できる

### Rack

- Rack とは何なのか説明できる
- Rack middleware を書くことができる
- Rack アプリケーションを書くことができる
- 主要な Rack middleware を知っている

### spring

- spring とは何なのか、メリットは何か説明できる
- spring を使わずにrakeタスクなどのコマンドを実行する方法がわかる

### UJS(jquery-ujs)

### バックグラウンドタスク

- バックグランドタスクとは何か、そのメリットは何か説明できる
- sidekiqやresque、delayed_jobなどの特徴を把握しプロジェクトにとって最適なツールを選択できる
- 正しくエラー通知や再実行を設定できる

### キャッシュ

- ビューのキャッシュの種類について説明できる
- HTTPのキャッシュについて説明できる
- If-Modified-Since
- Etag
- Expires
- Active Record のカウンターキャッシュについて説明できる

### ActiveRecord Migration

- マイグレーションファイルを作成できる
- マイグレーションを通じてインデックスを作成できる
- マイグレーションを通じて外部キーを作成できる
- マイグレーションを通じて alter table できる
- 特定のマイグレーションファイルをロールバックできる

### ActiveRecord

- 各クエリメソッドの使い方を理解している
- where, join, limit, select, group, having など

- 各関連のメソッドの使い方とオプションを理解している
- has_many, has_one, belongs_to
- dependency, class_name, source, through
- eager loading の意味と、ActiveRecordでどのように実現するか説明できる
- バリデーション&コールバック

### 認証

- なんらかの gem を利用して、認証機能を実装できる
- devise, sorcery など
- devise などの gem を使わずに、実装するとしたらどのように実装するか説明できる

### 認可

- なんらかの gem を利用して、認可処理を実装できる
- CanCanCan
- Pundit
- 認証と認可の違いについて説明できる

### I18n

- RailsでI18nを実装するときの作法について説明できる
- モデルのエラーメッセージの変更をどのようにするか
- DBに入っているマスターデータをI18n化するときにどのように設計するか説明できる

### ActiveSupport

- ActiveSupport が提供するメソッドをなるべく利用し、Railsっぽく処理を記述できる

### 設定

- production, development, test それぞれの環境の主な設定の違いについて説明できる

### Rake

- rake タスクを作ることができる
- rake タスクの依存関係の書き方がわかる
- rake タスクへの引数の渡し方がわかる

### ActionMailer

- ActionMailer を利用しメールを送信することができる
- テキストメールとHTMLメールを使い分けられる
- メールが送信されたことを確認するテストを書くことができる
- 開発環境でメールを送信する機能を簡易的に試すことができる
- letter_opener, mailcatcher などを利用

### 運用

- rails、webサーバー、appサーバー、DBサーバーのログがどこに出力されるか調査出来る
- それぞれのログの各行の内容を説明できる

## SQL

WIP

- SELECT文
- GROUP
- ORDER
- LIMIT
- INSERT文&UPDATE文
- トランザクション
- JOIN

### パフォーマンス

- スロークエリを取得し遅いクエリを特定できる
- DB のインデックスの仕組みについて説明できる(B+tree)
- explain を使ってインデックスが正しく使われているかを調査することができる
- N + 1 とは何か説明できる
- N + 1 の対策を説明できる
- N + 1 の予防策を説明できる

### API

- JSON API
- versioning
- documentation

## テスト

### 種類

- 単体テスト
- エンドツーエンドテスト

### RSpec / minitest
### capybara
### polgergeist / capybara-webkit

# インフラ層

- Iaas
- AWS
- さくら
- DigitalOcean
- 仮想環境
- Vagrant
- Docker
- Packer
- プロビジョニング
- ansible
- Chef
- Itamae

## デプロイ

- CI
- Jenkins
- CircleCI
- TravisCI
- コードメトリクス
- codeclimate
- houndci
- coverall
- など
- 自動化
- 継続的デプロイ
- 継続的インテグレーション
- サーバー監視&ロギング
- 設定管理
- リリース管理
- セキュリティ&データ完全性
- プラットフォーム
- 専用環境
- バーチャル環境
- 抽象化された環境

- エラー監視
- zabbix
- nagiox
- airbrake
- ログ
- fluentd
- treasure data
- big query
- ロードバランサ
- キャッシュ
- DNS
- linux
- プロセス
- スレッド
- ソケット
- テスト
- serverspec

# 設計

- デザインパターン
- マイクロサービス設計
- API設計
- DBスキーマ設計

# 全体にまたがるもの

- Security
- XSS
- SQL Injection
- など
- 情報共有
- Slack
- Qiita::Team
- esa.io
- Confluence
- Gem開発
- performance tuning
- 計測
- 調査
- 改善

## Git, GitHub

- Git を仕事で利用できるのに必要なコマンドを理解している
- GitHub でプルリクエストを利用しつつ開発を進められる
- merge と rebase について説明できる

# その他

## 社内コミュニケーション
## 社外コミュニケーション
### 勉強会の参加、発表

- 月に n 回勉強会に参加し発表する

### ブログ

- 月に n 回ブログエントリを書く
- 100ブクマを超えるエントリを月に m 回書く

### OSS活動

- OSS に月に n 回 PR を出す
- GitHub の Public Activity を m 日継続する

## 見積もり
## mobile application
### iOS
### Android
## 他言語
### Go
### Erlang
### Elixir
### Haskell

## 英語

- 基礎
- 語彙
- 文法
- 読む
- 書く
- 聞く
- 話す