├── README.md ├── algorithms_and_data_structures.md ├── aws.md ├── backend.md ├── culture.md ├── frontend.md ├── infrastructure.md ├── ios.md ├── middleware.md └── workflow.md /README.md: -------------------------------------------------------------------------------- 1 | # Engineer Learning Resources 2 | 3 | Wantedlyのソフトウェアエンジニアのインターンや社員として働き始める前に、勉強しておくとよい教材集 4 | 5 | ## 目次 6 | 7 | - [開発フロー](workflow.md) 8 | - [サーバサイド](backend.md) 9 | - [フロントエンド](frontend.md) 10 | - [iOS](ios.md) 11 | - [インフラ](infrastructure.md) 12 | - [ミドルウェア](middleware.md) 13 | - [アルゴリズムとデータ構造](algorithms_and_data_structures.md) 14 | - [カルチャー](culture.md) 15 | 16 | -------------------------------------------------------------------------------- /algorithms_and_data_structures.md: -------------------------------------------------------------------------------- 1 | アルゴリズムとデータ構造 2 | ====================== 3 | 4 | ### チェックポイント 5 | * 計算量、ハッシュと二分木、ソート、再帰 6 | 7 | ### 計算量 8 | * 計算量の話 http://qiita.com/cotrpepe/items/1f4c38cc9d3e3a5f5e9c 9 | * 二分探索とは https://ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%8E%A2%E7%B4%A2 10 | * ハッシュテーブルとは https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB 11 | * Binary Searchのコードを書いてみよう http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_4_B 12 | * Binary Searchの計算量は? 13 | * C++のSTL (Standard Template Library)の使い分け http://qiita.com/h_hiro_/items/a83a8fd2391d4a3f0e1c 14 | * rubyのArray#include?とArray#bsearchとSet#include?の挙動の違い http://pocke.hatenablog.com/entry/2014/11/27/224651 15 | 16 | ### ソート 17 | * ソートについて https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%88 18 | * Quick Sortのコードを書いてみよう http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_6_C 19 | 20 | ### 再帰 21 | * https://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0 22 | * メモ化の話 http://blog.h13i32maru.jp/entry/20101016/1287227174 23 | * フィボナッチ数列を解いてみよう http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_10_A 24 | 25 | ### その他参考URL 26 | * Algorithms and Data Structures http://judge.u-aizu.ac.jp/onlinejudge/topic.jsp?cid=ALDS1 27 | * ex) String Search http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_14_B 28 | * ex) Multiple String Search http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_14_D 29 | * Interview Question(Algorithms) https://github.com/MaximAbramchuck/awesome-interview-questions#algorithms 30 | * ex) Ruby Algorithms https://github.com/sagivo/algorithms 31 | * プログラミングコンテストチャレンジブック 32 | * https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%B3%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%96%E3%83%83%E3%82%AF-%E7%A7%8B%E8%91%89-%E6%8B%93%E5%93%89/dp/4839931992 33 | -------------------------------------------------------------------------------- /aws.md: -------------------------------------------------------------------------------- 1 | # AWS at Wantedly 2 | 3 | ## AWS 4 | 5 | - Amazon.com が提供しているクラウドコンピューティングサービス 6 | - もともと自社システムとして使っていた技術を一般に公開したもの 7 | - アクセスのピークやビジネススケールに合わせて、柔軟にリソースを制御可能 8 | - 従来(オンプレ)の場合は調達に数日 ~ 数週間かかり、スケールアップ & ダウンも容易ではなかった 9 | - 基本的に使った分だけ支払えば良い 10 | - Management Console のほか、API 経由ですべての操作を実行可能 11 | - プログラムのみでインフラを制御できる 12 | - 各言語対応の SDK が配布されている 13 | - 世の中たいていの Web サービスは AWS 上で稼働している 14 | - Amazon.com 全体の売上の1割を占める 15 | - [アマゾン、2016年の年間売上15兆円:北米のPrimeとAWSが貢献で安定してきた黒字経営(佐藤仁) - 個人 - Yahoo!ニュース](https://news.yahoo.co.jp/byline/satohitoshi/20170204-00067359/) 16 | - 勝手な所感 17 | - リソースそのものにもちろんお金かかるけど、転送量も馬鹿にならない 18 | - AWS のマネージドサービスは、素の状態で使うのが難しい 19 | - 特に Lambda とか ECS とか 20 | - 各社独自ソリューションが発達してしまう 21 | 22 | ## リージョンとアベイラビリィーゾーン 23 | 24 | http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html 25 | 26 | - 全世界の**リージョン**にデータセンターを持つ 27 | - 14 regions 28 | - 東京にもある (ap-northeast-1) 29 | - 各リージョンに最低3つの**アベイラビリティーゾーン (AZ)** が存在する 30 | - 物理的・電源的に分離されたデータセンタ 31 | - 東京は3つ (1a, 1b, 1c)、ユーザが使えるのはこの内2つ 32 | - 同一リージョン内で別々の AZ にあるインスタンスへアプリケーションをデプロイする **Multi-AZ** が推奨されている 33 | - 片方の AZ で障害があった場合でも、システムをダウンさせることなく稼働可能 34 | - ELB でアクセスを各 AZ に振り分ける 35 | - Wantedly では Kubernetes クラスタと RDS において Multi-AZ 構成を組んでいる 36 | 37 | ## EC2 38 | 39 | - Elastic Computing Cloud 40 | - 仮想コンピューティング環境 41 | - 単位は**インスタンス** 42 | - **AMI** から起動する 43 | - Amazon Linux, Ubuntu, CoreOS... 44 | - Wordpress などアプリケーションのインストールされたもの 45 | - 稼働中のインスタンスから作成したユーザ独自の AMI 46 | - Launch -> (Start <-> Stop) -> Terminate 47 | - Terminate したらデータが全部消える 48 | - 性能別に様々な**インスタンスタイプ**が存在する 49 | - t: 最も安価で性能が低い。CPU がバーストする 50 | - m: CPU とメモリのバランスがとれている 51 | - c: CPU 最適化 52 | - r: メモリ最適化 53 | - i: I/O 最適化 54 | - g: GPU 搭載 55 | - ストレージは**インスタンスストア** と **EBS (Elastic Block Store)** が存在する 56 | - EBS は 外付け HDD / SSD みたいなもの 57 | - 1時間単位で課金 58 | - Wantedly では約250台のインスタンスが稼働している 59 | - 本番環境は c4 60 | - ステージング環境は m4 61 | - Elasticsearch は r3 62 | - 機械学習用に g2 63 | - Kubernetes クラスタに 61台 (27 + 27 + 7) 64 | - **Elastic IP** を利用して固定 Public IP 割当 65 | 66 | ## ELB 67 | 68 | - Elastic Load Balancer 69 | - EC2 の前段に置き、アクセスを各インスタンスに振り分ける L7 / L4 ロードバランサ 70 | - SSL ターミネーション 71 | - ELB に SSL/TLS 証明書を持たせて、SSL セッションを ELB <-> クライアント間で完結させる 72 | 73 | ### CLB 74 | 75 | - Classic Load Balancer 76 | - 1年前までは ELB といえばこれだった 77 | - プロトコル関係なしにバランシング 78 | 79 | ### ALB 80 | 81 | - Application Load Balancer 82 | - 2016年8月にリリース 83 | - 今後はこっちに力入れるんでしょうなあ 84 | - L7 通信に特化したロードバランサ 85 | - (ALB <-> クライアント) HTTP/2 対応 86 | - バックエンドと HTTP/2 したいなら CLB 87 | - Path-based / Host-based rule 88 | 89 | ## ECS 90 | 91 | - Elastic Container Service 92 | - 複数 EC2 インスタンスをまとめて1クラスタとみなし、その上で Docker コンテナをよしなに実行する 93 | - 各 EC2 インスタンスにエージェント (ecs-agent) コンテナを配置する 94 | - master - slave の概念がない 95 | - マイクロサービスと ELB に紐づく `Service`、実際のコンテナ定義を書く `TaskDefinition` 96 | - Wantedly では使ってない 97 | - Kubernetes 使ってるので 98 | 99 | ## ECR 100 | 101 | - Elastic Container Registry 102 | - フルマネージド Docker image registry 103 | - IAM によるアクセス制御が可能 104 | - ローカルへ pull するのは面倒 105 | - 12時間ごとに `docker login $(aws ecr get-login --no-include-email)` を実行する必要がある 106 | - Wantedly では大活躍 107 | - 自前で Docker Registry 運用してたときは死にまくってた 108 | 109 | ## AutoScaling Group 110 | 111 | - EC2 インスタンスを自動でスケーリング 112 | - 通常起動すべき台数 (`DesiredCount`) を下回ったら、不足分が自動で追加される 113 | - メトリクスがしきい値を超えたらスケールアップしたり、業務時間に合わせてスケールアップ / ダウンできる 114 | 115 | ## VPC 116 | 117 | - Virtual Private Cloud 118 | - AWS 内での仮想ネットワーク環境 119 | - VPC はリージョン単位 120 | - VPC 内部で公開 / 非公開**サブネット**を切り、その中でインスタンスを起動する 121 | - サブネットは AZ 単位 122 | - VPC -> サブネットで CIDR が割り振られる 123 | - **セキュリティグループ**がインスタンスのファイアウォールとなる 124 | - VPC Peering で VPC を繋げられる 125 | - 双方の CIDR が被ってると不可能 126 | 127 | ## RDS 128 | 129 | - Relational Database Service 130 | - インスタンスや RDB ソフトウェアの管理は AWS にお任せなデータベースサービス 131 | - セキュリティパッチ適用とかに気をもまなくて済む 132 | - SSH やカーネルレベルのチューニングとかはできない 133 | - EC2 同様インスタンスタイプが存在する 134 | - パラメータグループで DB のパラメータを設定 135 | - 自動バックアップや Multi-AZ レプリケーションを設定可能 136 | - 5分前のバックアップから即時リカバリ 137 | - Wantedly では PostgreSQL を利用 138 | - Heroku の標準 DB が PostgreSQL だった時の名残 139 | - Aurora 140 | - ミドルウェアレベルまでフルマネージドかつ高可用性かつハイパフォーマンスな AWS 独自の DB エンジン 141 | - MySQL or PostgreSQL 互換 142 | 143 | ## ElastiCache 144 | 145 | - フルマネージドの memcached / Redis サービス 146 | 147 | ## S3 148 | 149 | - Simple Storage Service 150 | - 99.999999999% の耐久性を誇る、容量上限の存在しないストレージ 151 | - 大量アクセスも難なく捌ききるスケーラブルなストレージ 152 | - オンプレ使っててもストレージだけは S3 使うところがあるくらい 153 | - 一般的なディレクトリ構造と似た構成 154 | - アクセス制限やバージョニング、自動アーカイブ機能 155 | - Standard: 普通はこれ 156 | - Reduced redundancy: 99.99% の耐久性、ちょっと安い 157 | - Glacier: 最も安い ($0.005/GB/mo, Standard の 1/5)、取り出すのに4-5時間かかる、バックアップ用途 158 | - Wantedly では JavaScript や画像などのアセット、設定ファイルを保管 159 | 160 | ## CloudFront 161 | 162 | - CDN (Content Delivery Network) 163 | - 全世界にエッジを持ち、静的コンテンツをキャッシュして配信する 164 | - 日本だと東京・大阪にある 165 | - Wantedly の画像はすべて CloudFront 経由で配信されている 166 | - 一部 JavaScript, CSS アセットも 167 | - 古い画像が配信されたままにならないよう注意 168 | - Invalidate 169 | - パスにハッシュ値をつけてキャッシュさせる 170 | - 最近だと動的コンテンツの前段にも CDN を置く事例がある 171 | - [Secured API Acceleration with Engineers from Amazon CloudFront and Sl…](https://www.slideshare.net/AmazonWebServices/secured-api-acceleration-with-engineers-from-amazon-cloudfront-and-slack) 172 | - Origin - Edge 間で AWS の太いバックボーンを使う 173 | - DDoS 対策 174 | - c.f. [CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog](http://tech.mercari.com/entry/2017/06/22/204500) 175 | 176 | ## IAM 177 | 178 | - Identity and Access Management 179 | - AWS 上のアカウント管理の仕組み 180 | - User, Group, Role 181 | - 各リソースへのアクセスを IAM リソース単位で制御 182 | - アクセスキーを IAM User 単位で発行 183 | - Management Console 2段階認証やパスワードのローテーションも設定できる 184 | - OpenID & SAML 連携も可能 185 | 186 | ## Lambda 187 | 188 | - Function as a Service 189 | - JavaScript (Node.js), Python, Java, C# で書かれたスクリプトを実行可能 190 | - インスタンスや言語環境を整えることなく、コードだけ用意すればすぐ実行できる 191 | - 月間100万リクエストまでは無料 192 | - Wantedly では EC2 メンテナンスイベントの Slack 通知や定期的な中間イメージ生成、スローログ解析に利用 193 | - 運用自動化用途のみ、ユーザ向けプロダクションでは使ってない 194 | - 例によって、デプロイソリューションが山のようにある 195 | - [Serverless Framework](https://serverless.com/) か [Apex](http://apex.run/) がおすすめ 196 | 197 | ## Route 53 198 | 199 | - AWS の DNS サービス 200 | - Wantedly ではほとんど使ってない 201 | - `*.wantedly.com` は Heroku 時代の名残で DNSimple を使っている 202 | - 新しいドメインは Route 53 で買ってレコードセットアップしていたりする 203 | - ドメイン単位の **Hosted Zone** の下にレコードが存在する 204 | - ルーティングポリシー何種類かある 205 | - DNS ラウンドロビン 206 | - リクエスト元に最も地理的に近い IP 207 | - 重み付け 208 | - レイテンシ 209 | - ドメインも買える 210 | -------------------------------------------------------------------------------- /backend.md: -------------------------------------------------------------------------------- 1 | サーバサイド 2 | =========== 3 | 4 | ## Ruby on Rails 5 | 6 | Wantedlyの本体アプリケーションはRuby on Railsで書かれています。 7 | Railsのコンセプトを理解して、最低限のアプリを書けるようになりましょう。 8 | 9 | - [Rails Tutorial](https://www.railstutorial.org/book) 定番Railsチュートリアル。しっかり読み込むよりも、最初は一通り流すことを重視したほうがよい。[日本語訳](http://railstutorial.jp/) 10 | - [Ruby on Rails Guides](http://guides.rubyonrails.org/) Rails公式のドキュメント。ベストプラクティスが一通り学べる。Rails Tutorialを一通りやったあとぐらいに読むとRailsの理解が深まる。 11 | - [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) & [Rails Style Guide](https://github.com/bbatsov/rails-style-guide) Wantedlyは大枠でこのstyle guidesに従っています。 12 | 13 | ブックマークしておくと良いリファレンス 14 | 15 | - [Ruby Core API & Standard Library API](http://ruby-doc.org/) Rubyと標準ライブラリのドキュメント 16 | - [Ruby on Rails Documentation](http://api.rubyonrails.org/) RailsのAPIドキュメント 17 | - [RSpec](https://www.relishapp.com/rspec) テストフレームワークであるRSpecのドキュメント 18 | - [Better Specs](http://betterspecs.org) より良いRSpecを書くためのガイドライン 19 | - [Everyday Rails - RSpecによるRailsテスト入門](https://leanpub.com/everydayrailsrspec-jp/read) RailsのためのRSpecとしてステップ・バイ・ステップで説明されているので入門に適した一冊 20 | 21 | 22 | ### 参考リンク 23 | 24 | - [rails開発に加わる前に学んで欲しいこと](http://qiita.com/reikubonaga/items/60b4f6ee0a86ed06e83b) 25 | - [Rubyはじめての人がRails開発に参加するときに最初に知っておくべきこと](http://qiita.com/awakia/items/42525adb473c7cc6b811) 26 | - [Ruby/Railsチェックポイント](http://qiita.com/awakia/items/ea81e2da242e8e28dec6) 27 | 28 | 29 | ## Golang 30 | 31 | WantedlyではAPIサーバにGo言語を使うことがあります。 32 | 33 | ### grapi 34 | 35 | Golangのほとんどのアプリケーションは grapi を利用し gRPC + grpc-gateway で実装されています。 36 | - https://github.com/izumin5210/grapi 37 | - Go Conference での発表資料 38 | - [grapi: Bulding JSON API server with grpc-gateway for microservices - Speaker Deck](https://speakerdeck.com/izumin5210/grapi-bulding-json-api-server-with-grpc-gateway-for-microservices) 39 | 40 | 41 | ### よく使うパッケージ・ツール・フレームワーク 42 | 43 | - フレームワーク 44 | - Web framework : [grapi](https://github.com/izumin5210/grapi) 45 | - Pubsub worker : [subee](https://github.com/wantedly/subee) 46 | - ミドルウェアのクライアント 47 | - RDB の ORM : [SQLBoiler](https://github.com/volatiletech/sqlboiler) 48 | - Redis クライアント : [redigo](https://github.com/gomodule/redigo) 49 | - テスト 50 | - オブジェクト比較 : [github.com/google/go-cmp](https://github.com/google/go-cmp) 51 | - モック : [gomock & mockgen](https://github.com/golang/mock) 52 | - See also 53 | - [Advanced Testing with Go - Speaker Deck](https://speakerdeck.com/mitchellh/advanced-testing-with-go) 54 | - [Tips for develoepr-friendly testing #golangtokyo - Speaker Deck](https://speakerdeck.com/izumin5210/tips-for-develoepr-friendly-testing-number-golangtokyo) 55 | - ツール 56 | - `.env` : [direnv](https://github.com/direnv/direnv) 57 | - See also [基本セット - Create a new application with Golang](./new-app.md#%E5%9F%BA%E6%9C%AC%E3%82%BB%E3%83%83%E3%83%88) 58 | - ツール管理 : [gex](https://github.com/izumin5210/gex) 59 | - Lint 60 | - See also [Lint & eviewdog - Create a new application with Golang](https://github.com/wantedly/dev-docs/blob/master/go/new-app.md#lint--reviewdog) 61 | - [Reviewdog](https://github.com/reviewdog/reviewdog) 62 | - [golangci-lint](https://github.com/golangci/golangci-lint) 63 | - [wraperr](https://github.com/srvc/wraperr) 64 | - その他 65 | - エラーハンドリング : [github.com/srvc/fail](https://github.com/srvc/fail) 66 | - See also [\`Wrap(err)\` in production - Speaker Deck](https://speakerdeck.com/izumin5210/wrap-err-in-production) 67 | - DI : [github.com/google/wire](https://github.com/google/wire) 68 | - See also [google/wireを使ったDIとDI関数のシグネチャについて #go - My External Storage](https://budougumi0617.github.io/2018/12/14/how-to-use-google-wire/) 69 | 70 | 71 | 72 | [WIP] 73 | 74 | ## Python 75 | 76 | Wantedlyでは自然言語処理や機械学習のためのサーバにPythonを使うことがあります。 77 | 78 | 基本的にPythonはRestfulなサーバーよりも特定の機能を持ったシンプルなサーバーを作ることが多いので、サーバーのフレームワークとしてはTornadoを採用しています。 79 | シンプルさと、ある程度肥大化した場合の機能も備えている絶妙なバランスと言う判断です。 80 | 81 | ### Tornado 82 | 83 | Pythonの殆どのアプリケーションロジックはTornadoを使ってAPI化されています。 84 | 85 | - http://www.tornadoweb.org/en/stable/ 86 | -------------------------------------------------------------------------------- /culture.md: -------------------------------------------------------------------------------- 1 | カルチャー 2 | ========= 3 | 4 | [Wantedly Engineer Blog](https://www.wantedly.com/feed/s/wantedly_engineers) 5 | 6 | 7 | ### 外部インタビューなど 8 | 9 | - [突撃!隣のDevOps パート1【Wantedly編】](http://dev.classmethod.jp/devops/dev-ops-wantedly/) 10 | -------------------------------------------------------------------------------- /frontend.md: -------------------------------------------------------------------------------- 1 | フロントエンド 2 | ============= 3 | 4 | ## 技術スタック 5 | 6 | 以下がメインで使われています。 7 | 8 | - [React](https://ja.reactjs.org/docs/) 9 | - [TypeScript](https://www.typescriptlang.org/) 10 | - [GraphQL](https://graphql.org/) 11 | - [Nexus](https://github.com/graphql-nexus/nexus) (BFF Server) 12 | - [Apollo Client](https://www.apollographql.com/docs/react/) 13 | 14 | また、一部の古いページには、Haml, JavaScript, Angular が用いられています。 15 | 16 | ## 参考リンク 17 | 18 | 開発の際の参考にすると良いリファレンス 19 | 20 | ### React 21 | 22 | - [React ドキュメント](https://ja.reactjs.org/docs) 以下の章は特にお勧めの章です。 23 | - [フックの導入](https://ja.reactjs.org/docs/hooks-intro.html) 24 | - [Reactの流儀](https://ja.reactjs.org/docs/thinking-in-react.html) 25 | - [Presentational and Container Components](https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0) 設計の考え方として参考にしています。 26 | - [Storybook](https://storybook.js.org/) コンポーネント開発にはStorybookを用いています。 27 | 28 | ### TypeScript 29 | 30 | - [TypeScript 公式ドキュメント](https://www.typescriptlang.org/docs/) 31 | - [TypeScript Deep Dive](https://basarat.gitbook.io/typescript/) TypeScript だけではなくJavaScript や JSX 記法、React にも触れられて、特に初学者にお勧めです。 32 | - 日本語ver: https://typescript-jp.gitbook.io/deep-dive/ 33 | 34 | ### BFF 35 | 36 | - [フロントエンドに型の秩序を与えるGraphQLとTypeScript](https://www.wantedly.com/companies/wantedly/post_articles/183567) BFFによるスキーマファーストな開発を行なっています。 37 | - [Web API に秩序を与える Protocol Buffers](https://speakerdeck.com/south37/protocol-buffers-for-web-api-number-builderscon) BFFより裏側の Web API のスキーマ管理には Protocol Buffers を使用しています。 38 | 39 | ### Design Syetem 40 | 41 | - [React でデザインシステムを正しく実装する - コンポーネントカタログを超えて](https://www.wantedly.com/companies/wantedly/post_articles/302873) 42 | - [Wantedly UI Components](https://www.figma.com/community/file/994992887565225147) 43 | 44 | ### その他 45 | 46 | - [frolint](https://github.com/wantedly/frolint) Wantedly共通のLint設定が含まれています。 47 | -------------------------------------------------------------------------------- /infrastructure.md: -------------------------------------------------------------------------------- 1 | インフラ 2 | ======= 3 | 4 | Wantedlyのインフラは、Dockerを使って動作しています。Dockerコンテナは、Kubernetesクラスタ上で動作しています。 5 | 6 | ## Webエンジニア向け 7 | 8 | 社員・長期インターンとしてWeb開発を行っていく人に、最低限知ってほしい情報 9 | 10 | - [AWS at Wantedly](aws.md) 11 | - [Docker を Production で使い続ける理由](https://www.wantedly.com/companies/wantedly/post_articles/27548) 12 | - [Dockerを使ってみよう](https://github.com/wantedly/paus/blob/master/doc/tutorial-docker.md) 13 | - [Kubernetes 速習会](http://qiita.com/koudaiii/items/d0b3b0b78dc44d97232a) 14 | - Web サーバーはなぜ必要か?Nginx使う理由 15 | 16 | 17 | ## インフラ志望エンジニア向け 18 | 19 | インフラチームの入社・インターンを希望する人に、知ってほしい情報 20 | 21 | - [社内の Platform を作る取り組み](https://speakerdeck.com/koudaiii/number-ocif16) 22 | - [Docker をフル活用したインフラの紹介と成長し続けるためのインフラ戦略](https://speakerdeck.com/dtan4/number-abejameetup) 23 | - [Wantedlyを支えるモニタリング](http://qiita.com/koudaiii/items/bc89368e1279649f2498) 24 | - [Twelve-Factor App](https://12factor.net/ja/) 25 | - [実践!マイクロサービス](https://speakerdeck.com/awakia/shi-jian-maikurosabisu) 26 | - Dockerfile を書く時に抑えておきたいベストプラクティス 27 | - [Go言語の開発環境セット・アップ](http://qiita.com/awakia/items/7bf03fd96a74502073b8) 28 | - [Go速習会](http://qiita.com/awakia/items/d646cc3fd7ee3d223909#_reference-6990c0edc8534d4ffaeb) 29 | - Go CLI 開発速習会 30 | - Go API Server & Test 開発速習会 31 | - [RubyGems 開発速習会](http://qiita.com/dtan4/items/ea25b1c74346e330d5eb) 32 | -------------------------------------------------------------------------------- /ios.md: -------------------------------------------------------------------------------- 1 | iOS 2 | =========== 3 | 4 | プログラミング経験があり、これからiOSアプリ開発にチャレンジするエンジニアが、効率良く情報を得るために参考になりそうなリンク集。 5 | 6 | ## 情報収集 7 | 8 | 基本的に毎週更新されるサイトを見ておけば良い。これらのサイトを起点にして、気になる開発者が発信している情報を見に行ったり、ブログをRSSリーダーに突っ込んだりして観測範囲を広げていくのがおすすめ。 9 | 10 | - [iOS Goodies](http://ios-goodies.com/) これが一番シンプルで見やすい。 11 | - [this week in Swift](https://swiftnews.curated.co/) 知名度の高いエンジニアが発信している。2017年11月を最後に更新停止中。 12 | - [Swift Weekly Brief](https://swiftweekly.github.io/) Swift の開発状況に詳しい。 13 | 14 | 15 | ## 学習コンテンツ 16 | 17 | - [Design+Code](https://designcode.io/) iOSアプリ開発におけるデザインと実装の両面を学べる。デザインも含めてまるっと自分でアプリをつくれるようになるまで到達したい人におすすめ。 18 | - [raywenderlich.com](https://www.raywenderlich.com/) 様々なトピックを扱っている。動画コンテンツの配信や書籍の出版も行なっている。初心者向けのコンテンツも多い。 19 | - [NSScreencast](https://nsscreencast.com/episodes) 動画で学べる。エピソードごとにソースコードも付いている。良質なコンテンツが多い。 20 | - [Realm Academy](https://academy.realm.io/section/apple/) ([日本語動画](https://academy.realm.io/jp/section/apple/)) Realm が発信している。カンファレンスの発表などを記事にしたコンテンツが多い。中級者向けのトピックが多い。 21 | - [objc](https://www.objc.io/issues/) 中級~上級者向けの話題を扱う。Objective-C が主流だった時代に実装のベストプラクティスや応用技術について考察して発信していたサイト。最近は書籍の出版やインタビュー動画の配信を行なっている。 22 | - [UI Testing Quick Guide](https://useyourloaf.com/blog/ui-testing-quick-guide/) XCUITestについて簡単にまとまっている。この記事の内容だけで十分に使い方は理解できると思う。 23 | 24 | ## 書籍 25 | 26 | https://itunes.apple.com/book/id881256329 27 | Apple 公式。Swift の文法を手早く把握したい人向け。iBooks で読むと読みやすいのでおすすめ。 28 | 29 | 30 | https://www.objc.io/books/ 31 | https://store.raywenderlich.com/products 32 | 洋書であれば、この辺りで探すのがおすすめ。 33 | 34 | https://store.raywenderlich.com/products/rxswift 35 | 特に RxSwift について学ぶ必要がある人はこれ。体系的にまとまってる書籍はこれくらい。 36 | 37 | http://gihyo.jp/book/2017/978-4-7741-8730-3 38 | 和書は詳しくないけど、これとか良いかも。ジェネリクスとか中級者向けの内容も含んでいる。 39 | 40 | http://amzn.asia/ifcRkeT 41 | Auto Layout を手早くキャッチアップしたいなら、これとか良いはず。 42 | 43 | 44 | ## 便利ツール 45 | 46 | https://wwdc.io/ 47 | WWDCのセッションの動画を試聴するにはこのアプリを使うのが良い。技術レベルの高いエンジニアほど、WWDCのセッションの内容をしっかり確認している印象がある。自分の関心のある分野から重点的に観ていくと良い。 48 | 49 | https://github.com/jfahrenkrug/WWDC-Downloader 50 | WWDCのセッションのサンプルコードを一括ダウンロードできる。 51 | 52 | https://github.com/KrauseFx/xcode-install 53 | AppStore から Xcode をインストールすると意図しないタイミングでアップデートしてしまうことがある。特定のバージョンの Xcode をインストールするのに利用すると良い。 54 | 55 | https://github.com/facebook/chisel 56 | Xcode のコンソールを利用して様々なデバッグ操作ができる。view のデバッグに用いることが多いが、最近は Xcode にviewのデバッグ機能が登場して利用機会が少し減ったかも。多機能で様々な用途があるので入れておいた方が良い。 57 | 58 | http://nshipster.com/network-link-conditioner/ 59 | 通信速度が遅い状況などを再現できる。通信エラー時の問題などのデバッグに用いることがある。※リンク先はツールの紹介記事 60 | 61 | https://kapeli.com/dash 62 | Apple のドキュメントを参照するのに便利。CocoaPodsに対応したライブラリのドキュメントも一括管理できたりもする。 63 | 64 | ## ライブラリ集 65 | 66 | https://swift.libhunt.com/ 67 | おおよその人気度合いがわかったり、類似のライブラリの発見や比較ができる。カテゴリー別に有名どころがわかったりする。情報が多いので導入するかどうかの判断材料を集めやすい。 68 | 69 | https://github.com/vsouza/awesome-ios 70 | https://github.com/matteocrippa/awesome-swift 71 | こういった情報でざっくり探すのも良いかも。 72 | 73 | ## カンファレンス 74 | 75 | 最近は、国内でもカンファレンスが盛ん。 76 | 77 | https://www.tryswift.co/ 78 | https://iosdc.jp 79 | いくつかは定期的に開催されている。 80 | 81 | https://academy.realm.io/jp/section/apple/ 82 | https://www.youtube.com/channel/UCF-W8FRL7d_9konHA9eNObA 83 | try! Swift の登壇内容は Realm のブログを見に行くと内容を見ることができる。iOSDC の登壇内容は動画が公開されている。他にも個人で内容をまとめたブログが数多く公開されているので探してみると良い。 84 | 85 | ## その他 86 | 87 | ### アプリ実装 88 | 89 | https://github.com/dkhamsing/open-source-ios-apps 90 | 実装が公開されているアプリは、設計の参考になることが多い。いろいろなアプリの実装に目を通して引き出しを増やしておくと良い。 91 | 92 | https://github.com/artsy/eigen 93 | https://github.com/artsy/eidolon 94 | https://github.com/devxoul/Drrrible 95 | https://github.com/kickstarter/ios-oss 96 | 97 | ### 企業 98 | 99 | https://github.com/artsy 100 | http://artsy.github.io 101 | 個人的にモダンな開発スタイルを取り入れる目的でよく参考にしている。CocoaPods などのコミッターも在籍している。先進的な開発をしていて、オープンな場で開発している。参考になるリポジトリが多い。技術ブログで情報発信もしている。 102 | 103 | https://github.com/Ramotion 104 | 凝った UI の実装を数多く公開している。インタラクティブなアニメーションの実装ができるようになりたいときは参考にしてみても良いかも。 105 | 106 | -------------------------------------------------------------------------------- /middleware.md: -------------------------------------------------------------------------------- 1 | ミドルウェア 2 | =========== 3 | 4 | [WIP] 5 | 6 | - [PostgreSQL Documentation](https://www.postgresql.org/docs/current/static/index.html) RDBであるPostgreSQLのドキュメント 7 | - [Redis](http://redis.io/) 8 | - [Redis速習会のスライド](http://www.slideshare.net/yoshinorikawasaki/rediswantedly) 9 | - Elasticsearch 10 | 11 | -------------------------------------------------------------------------------- /workflow.md: -------------------------------------------------------------------------------- 1 | 開発フロー 2 | ========= 3 | 4 | WantedlyのRailsレポジトリでは概ねGitHubフローを採用しています。 5 | 6 | スマホアプリや、プロジェクトによってはGitフローを採用する場合もありますが、まずはGitHubフローを理解してください。 7 | 8 | - [GitHub Flow](http://scottchacon.com/2011/08/31/github-flow.html) ([日本語訳](https://gist.github.com/Gab-km/3705015)) 9 | 10 | もしGitについての理解が必要な場合は以下のURLを参考にしてください。 11 | 12 | - [ProGit](https://git-scm.com/book/ja/v2) しっかり理解するならこれ。時間のある時に。 13 | 14 | issueとpull requestの作り方、コードレビューをうけるときのコツについても理解を深めてください。とくにチーム開発未経験の場合、仕事の進み方に大きく影響がでます。 15 | 16 | - [開発フロー研修 @ Wantedly](http://qiita.com/awakia/items/c571e93e96a1ec28044f#%E6%A8%99%E6%BA%96%E7%9A%84%E3%81%AA%E3%83%95%E3%83%AD%E3%83%BC) 17 | - [初めてコードレビューされる人のためのpull requestとcommitの作り方](http://qiita.com/reikubonaga/items/e3b3b19c14d4ef4efb95) 18 | - [開発インターンで気をつける5つのポイント](http://qiita.com/reikubonaga/items/d00c179957d57f48bf73) 19 | 20 | 21 | --------------------------------------------------------------------------------