エンジニアとしてこの先生きのこるために t_wada さんの講演を聞いてきた。 BIT VALLEY -INSIDE- Vol.10 #bvinside
エンジニアとしてこの先生きのこるために t_wada さんの講演を聞いてきました。
始まった! #bvinside pic.twitter.com/6OjR3osP8F
— noratora (@noratorakun) June 28, 2019
togetter や スライド と併せて読んでいただくことで、当日に参加できなかった人もキャッチアップできると思います。
概要
渋谷界隈にオフィスを構える企業による合同勉強会のコミュニティ、BIT VALLEY -INSIDE-。
第10回は和田 卓人(@t_wada) さんの講演「エンジニアとしてこの先生きのこるために」
イベントページ : BIT VALLEY -INSIDE- Vol.10 : ATND
togetter : #bvinside BIT VALLEY -INSIDE- Vol.10エンジニアとしてこの先生きのこるために - Togetter
形式: セミナー形式
講演内容について
年に何度かプログラマを目指している方向けにキャリアや勉強の話しをしていて、毎回ブラッシュアップしている内容。
スライドを見たことあるも人いるかも。
直近だと4月にリクルートテクノロジーズさんで講演したスライドがアップされています。
前後半の2部構成になっています。
前半 学び方を学ぶ
前半のベースとなる内容は以下の2冊
どちらの書籍も同じようなテーマで書かれています。 学び続けて知識をつけていきましょうと。
技術はどんどん入れ替わっていくので、学び続けないと競争力が落ちてしまう。 但し、年を取るほど可処分時間が少なくなるので、効率的に学ぶ必要がある
そのため「技術の学び方を学ぶ」必要がある
※ 達人プログラマー について補足
- 技術的に古い部分(XML等)があり人にオススメしづらいが、心構えの部がはまだまだ使える
- 達人プログラマー20周年でリライト企画が走っている
- 7-8割終わっている.
- 9月発売予定(英語版)
- ベータ版(英語)も購入できます。
1. 四半期毎に技術書を読む
- どこから読んでいけばよいのか問題
- ある書籍を読んだら、その書籍が参照している書籍を読んでいく
- 同じ著者で読んでいく
- 時系列を意識して読む
- 長期記憶に定着させるように読む
- 何度も出し入れする
- ツイッター、ブログにポストするのでもよい
- 何度も出し入れする
2. 手を動かして学ぶ
- まずやる(好きかどうか気にしない) -> できる -> 好きになる
- むしろ好きじゃないほうが客観的に選択できて良い
- デールの円錐
- 学習の定着効率を意識する
- 写経
- 今日も写経をやってきた
- 昔は本を開いてやってたけど、最近は電子書籍があるのでそれでも良い
3. 毎年少なくとも1つの言語を学習する
- 仕事でメインで使うため、最初の数年はできる
- 言語転職はジャンジャンやっちゃって良いと思っている
- その後は、業務で使わないので難しくなる
- 挫折しないために、だんだんにじり寄る(軸を1つだけずらす)
- 静的×動的
- オブジェクト指向×関数型
- 挫折しないために、だんだんにじり寄る(軸を1つだけずらす)
- 仕事で使う以外の言語を学ぶことで良いことがある
- 副作用が少ない言語を学ぶと、自分が普段書いている言語でも副作用が少ない書き方をするようになる
- 他のやり方として、業界のトレンドをチェック
- github でもよいけどテクノロジーレーダーというものがある
- Languages and Frameworks | Technology Radar | ThoughtWorks
- ADOPT は安心して利用して良い
- Languages and Frameworks | Technology Radar | ThoughtWorks
- github でもよいけどテクノロジーレーダーというものがある
- 英語からは逃げられない
- 話せる必要はない
- 書ける必要もそこまでない
- 読める必要はある
- 道具を使っても良い
- 英語の情報に苦手意識なくアクセスできるだけで大分変わってくる
4. 身の回りをプログラミング対象にする
5. アウトプットを行う
- アプロプットはプライベート(友達、同僚)でもよい
- 量は質に転化する
- ろくろ教室の実験
- 質の高いものがでたのは、量のみを評価したグループから
- フィードバックループが回った
- 質のみを評価したグループは
- 構えてしまう
- 時間かけてしまう
- 質の高いものがでたのは、量のみを評価したグループから
- ろくろ教室の実験
- ツイッターは埋めれてしまうので、ストック型メディアがよい
- ブログを書きましょう。Qiitaでもよい
- 長文を書きましょう
- ブログを書きましょう。Qiitaでもよい
- クソエントリ問題に対する解決策
- Jenkinsの作者 かわぐちさんの言葉
- 情報発信、blog, 発表, 公開などは、数学の(未解決問題の)証明ではなく、料理のようなもの
- 数学の証明は最初の一人目が偉い(総取り)、だけど料理は違う
- 情報発信、blog, 発表, 公開などは、数学の(未解決問題の)証明ではなく、料理のようなもの
- 技術の情報発信は情報鮮度がついて回る
- 第一人者が過去に発信した情報、と第三者が最近発信した情報だと、必ずしも第一人者の情報に価値があるわけではない
- 環境をつくるだけでもそのまま動くものはない
- エラーメッセージを省略せず全部貼り付けて、どういうところでつまずいて、どう考えてどう解決して動いたかまで書いていると、その情報は価値がある
- Jenkinsの作者 かわぐちさんの言葉
- 技術系同人誌の台頭により技術書の業界に光が指した
- 技術系同人誌どんどん増えるとよい。書きましょう
- LTも良い
- 成功も失敗も許容できる心理的安全性が高い場所で発信する
- ライブコーディングはハイリスクハイリターン
- 失敗を許容する5分間のライブコーディングとかあったらよき
後半 現役プログラマでいるために
1. 毎日コードを書く
- 今日からで良いので始めてください
- 住む場所を工夫する
- 始発駅の近くに住むと電車に座れる可能性をコントロールできる
- 座れるとコードが書ける
- 始発駅の近くに住むと電車に座れる可能性をコントロールできる
- 意図的にオフライン時間をつくる
- 新幹線/飛行機のような締切がある時に作業が進む人が多い
2. 年下から学ぶ
- 過剰適応とタコツボ化
- 技術は定期的に淘汰される
- 技術もアンラーニングが必要
- 技術も分断投資しましょう
- 技術は定期的に淘汰される
使う道具を定期的に変える(エディタも)
Emacs 20年でVScode にチャレンジするも戻ってしまっていた。
VScodeを本気で使ってきた人とペアプロすることでVScodeの知見を得た
ペアプロはアンラーニングのチャンス
3. 過去から未来を知る
- 技術は振り子
- T字型ではなく複数の柱を持ちましょう
- 15年に1回くらいT字の柱が折れる
- 離れたところに柱を立てる
- フロントエンドだけじゃなくUNIXまわり触れておく。みたいに
- 離れたところに柱を立てる
- 15年に1回くらいT字の柱が折れる
4. 人のつくる渦を見る
- ロードマップ指向とエコシステム指向 - アンカテ
- Worse Is Better
- Linuxは当時の2世代くらい遅れているモノリシックカーネル。しかし生き残った
5. 大事なことに集中する
- 子供ができたりして諦めなきゃいけないことが、いろいろ出てくる
- エッセンシャル思考が良かった
Laravel 5.7 の環境構築 for Mac
今回は Laravel 5.7 の環境構築を行います。
Homebrew を使用して PHP のインストールから実施していきます。
Laravel Homestead 、 Laravel Valet は使用しません。
環境情報
- macOS Mojave (10.14)
- Homebrew はインストール済み
Laravel 5.7 サーバ要件の確認
Laravel 公式ドキュメント より引用
PHP >= 7.1.3
OpenSSL PHP拡張
PDO PHP拡張 Mbstring PHP拡張
Tokenizer PHP拡張
XML PHP拡張
Ctype PHP Extension
JSON PHP Extension
実施手順
1. PHP のインストール(Homebrew から)
Homebrew でインストールします。
$ brew install php
サーバ要件を満たしていることをコマンドで確認していきます。
まずは、PHPのバージョンを確認します。
$ brew info php php: stable 7.2.11 (bottled)
次に拡張モジュールの有無を確認します。
$ php -m | grep -e openssl -e ^PDO$ -e mbstring -e tokenizer -e ^xml$ -e ctype -e json ctype json mbstring openssl PDO tokenizer xml
2. Composer のインストール(Homebrew から)
パッケージ管理ツール( Node.js でいうところの npm )である Composer をインストールします。
$ brew install composer
バージョンは 1.7.2 でした。
$ brew info composer composer: stable 1.7.2
3. Laravel のインストール(Composer から)
Laravel をインストールする準備が整いましたので、インストールしていきます。
$ composer global require "laravel/installer"
laravel
コマンドを使用可能にするために、パスを通します。
$ echo export PATH="\$HOME/.composer/vendor/bin:\$PATH" >> ~/.bash_profile
パスの設定を反映させるために source
コマンドを実行します。
(ターミナル再起動でも反映されます。)
$ source ~/.bash_profile
インストールした Laravel のバージョンを確認します。
バージョンは 5.7.10 でした。
$ php artisan --version
Laravel Framework 5.7.10
4. Laravel のプロジェクトを作成する
プロジェクトを作成したいディレクトリに移動します。
(/path/to/project
をディレクトリ名に置き換えてください。)
$ cd /path/to/project
プロジェクトを作成します。
(今回は公式と同じくプロジェクト名を blog
とします)
$ laravel new blog
5. Laravel のプロジェクトを起動する
作成したプロジェクトのディレクトリに移動します。
$ cd blog
PHP のビルトインサーバーを起動します。
$ php artisan serve Laravel development server started: <http://127.0.0.1:8000>
ブラウザから下記URLにアクセスし、Laravel の画面が表示されていれば起動成功です。
http://localhost:8000
こちらのURLでも良いです。
http://127.0.0.1:8000
6. Laravel のプロジェクトを停止する
サーバーを停止する場合はコンソール上で ctrl+c
で停止します。
以上です。
絶対に挫折させないアプリ開発 はじめてのLaravel 第5章で気をつけること
技術書典5でゲットしたこちらの本
絶対に挫折させないアプリ開発 はじめてのLaravel
「第5章 はじめての PHP 開発 〜TODO アプリを作ろう〜」にて
フレームワークなしのPHPでTODOリストを作るところまで進めました。
その際、動作確認時に環境まわりで躓いたので気をつけることをメモします。
環境情報
- macOS Mojave (10.14)
- Homebrew はインストール済み
実施手順
mysql は Homebrew でインストールしました。
$ brew install mysql
MySQLのバージョンは8.0でした。
$ brew info mysql mysql: stable 8.0.12 (bottled)
あとは手順通りに進めて、ソースコードを写経していき
最後に動作確認のためにビルトインサーバーを起動し、
ブラウザにてアクセスしたところ
$ php -S localhost:8000
下記のエラーメッセージが画面に表示されました。
データベースに接続できません!アプリの設定を確認してください。
app.php のcatchブロックの中に調査用のコードを追記し確認すると
} catch (PDOException $e) {
echo 'データベースに接続できません!アプリの設定を確認してください。';
echo $e; // 原因調査のために追記
exit;
}
下記のエラーが発生していることがわかりました。
The server requested authentication method unknown to the client [caching_sha2_password]
こちらのエラーは MySQL 8.0.4 からデフォルトの認証プラグインが変更になったことによって発生したようです。
下記の2つの対応により解決しました。
対応1. デフォルト認証プラグインを変更する
/usr/local/etc/my.cnf
に下記の設定を追記しました。
# デフォルト認証プラグイン default_authentication_plugin=mysql_native_password
対応2. MySQL の root ユーザーのパスワードを再設定する。
$ mysql -u root $ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; $ SELECT user, host, plugin FROM mysql.user; $ exit
対応後、再度ビルトインサーバーを起動しブラウザにてアクセスすると
$ php -S localhost:8000
無事に画面が表示されました。
N予備校 プログラミング入門 Webアプリ コース を修了しました
勉強会でお会いした方から「N予備校 プログラミングコース」の存在を教えていただいたのがきっかけで、始めてから約2ヶ月が経ちました。
ちょうど「【2018年度】プログラミング入門 Webアプリ コース」が修了したのでこの時点で感想を残したいと思います。
N予備校 プログラミングコース とは
ニコニコ動画でお馴染みのドワンゴが運営するeラーニング(オンライン学習)サービスです。
類似サービスでいうとドットインストールやProgateなどがあります。
N予備校の独自性としては2点
例えば、流行りの機械学習を学ぶにあたって数学をやり直す。 英語のドキュメントをなるべくGoogle翻訳なしで読めるように英語をやり直すということも、N予備校の中で完結します。
また現役高校生が理解できるようにということで、教材がの作りが丁寧です。(Google Chrome のインストールをするところから始めています。)
Webアプリ コースの内容について
Webアプリ コースはプログラミング未経験者を対象とし、
Google Chrome のインストールから始めて、
最終的に「調整さん」クローンをHerokuで公開するまでをゴールとしています。
Herokuに公開したものがこちら→ 予定調整くん
(ログインにGitHubアカウントが必要です)
カリキュラムで扱う内容は以下の通りです。
第1章 はじめよう
- HTML
- CSS
- JavaScript
第2章 準備使用
第3章 サーバーサイドプログラミング入門
第4章 実践サーバーサイドプログラミング
- Webアプリケーションフレームワーク(Express.js)
- OAuth(GitHub)
- テスティングフレームワーク(mocha)
- CI ツール(CircleCI)
- webpack
- jQuery
- AJAX
- WebSocket
- PostgreSQL
- データモデリング
Webアプリ コースの感想
私はプログラミング経験者ですが、Node.jsは触ったことがなかったので、
学び直しの気持ちで「プログラミング入門 Webアプリ」コースから始めました。
感想としては、このコースのカリキュラムを一通りこなしたら、
幅広いスキルが身につくだろうと思いました。
理由は、未経験者や経験が浅い方ははシステム開発の特定部分しか担当しないことが多く、
それよりも、小規模でも良いので全体(要件から公開まで)を経験したほうがスキルが伸びるからです。
無料で体験できるコースもあるので、プログラミング未経験者の方はとりあえず試してみることをオススメします。
JBUG (東京#5) - Backlog API もくもく会 - に参加しました。
1. はじめに
人生で初めての社外勉強会に参加しました。
勉強会の始めに「アウトプットするまでが勉強会」と仰っていたので
それに乗っかってブログにアウトプットしたいと思います。
勉強会に参加したいけど迷っているという方に、雰囲気が伝わるように書き残しておきたいと思います。
2. 参加したきっかけ
もともと社外勉強会に参加したいという気持ちは持っていたのですが、
ハードルが高く感じて躊躇していました。
今回、時間、場所、題材、会の形式がビビビッとマッチしたので、
いまがチャンスという思いで、エイヤッと申しみました。
3. 勉強会の内容
こちらの勉強会に参加してきました。
Backlogというプロジェクト管理ツールのAPIを利用して何か作りましょう。
もしくは作っていたモノを発表しましょうという、いわゆる「もくもく会」でした。
(※BacklogはGitも使えるフリープランもあるので 個人プロジェクトで利用することも可能です。)
当日の内容に関してはtogetterにまとめられていますので、そちらをご覧ください。
【東京】#JBUG 5回目 - Backlog API もくもく会 - @東京 - Togetter
4. 勉強会の雰囲気
当日は、開始時間の15分位前に会場入りしました。
すでに何人かの参加者の方々がおり、各々で交流をされていました。
人生で初の社外勉強会ということもあり緊張していましたが、
会場に入った直後から主催者の方がフレンドリーに話しかけてくださったり、
もくもくし始める前ににアイスブレイク的な感じで自己紹介タイムを設けてくださったりと、
打ち解けやすい雰囲気づくりをされているなと感じました。
テーブル毎に数人で固まってもくもく会を行っていましたが、
各テーブルには有識者の方が座っており、技術的なアドバイスもいただけました。
また、勉強会と言えば写真が付き物ですが、
写真を撮り始める前に写真NGの方が居ないか聞いてくださったので、
諸事情により写真NGの方でも安心でした。
5. 成果物
参加申し込みをした直後から前日まで事前に自宅でもくもくしており、ほぼ完成していました。
ソースコードはgithubにて共有しております。
https://github.com/noratora/backlog-member-management
6. 懇親会
勉強会の終盤くらいに運営の方が出欠を取ってくださり、約半数の方が懇親会に参加していました。
勉強会の最中はお話する機会がなかった方と交流できましたので個人的には参加することをオススメします。
7. 名刺交換、SNS申請
他の参加者の方と名刺交換をすることがありましたので、用意しておくと良いです。
会社の名刺を出すのに抵抗がある方はSNSアカウントで繋がるのでも良いと思います。
私は今回は会社の名刺を持っていきましたが、
次回からは勉強会用の名刺を作ってSNSアカウントを載せておきたいなと思いました。
8. 最後に、勉強会に参加するのを迷っている方へ
参加する前に心配していたことはだいたい杞憂に終わります。
今回、私は発表はしませんでしたが単純に参加するだけでも得られるものがありました。
慣れたかどうかで言うと、1回しか経験していないので正直微妙ですが、 2回、3回と回数を重ねていけば慣れていけそうだと思いましたので今後も参加していきたいと思います。
どうせ失うものは何もないのでエイヤッと申し込みましょう(笑)
Play Framework 2.6 の環境構築 for Mac
Homebrew を再インストールしたことで、
いろいろと開発環境がリセットされたので、
今回は Play Framework の開発環境を構築します。
環境情報
- MacBook Air (13-inch, Mid 2012)
- Mac OS High Sierra (10.13.3)
- Java 8 はインストール済み
- Homebrew はインストール済み
注意事項
Homebrew を利用できることは利用していくスタイルなので、
Playの公式サイトに載っている情報とは手順が異なる場合あります。
実施手順
1. sbt のインストール(Homebrew から)
sbt というビルドツールをインストールします。
Homebrew からインストールします。
$ brew install sbt
2. インストールしたsbtのバージョンを確認(Homebrew から)
$ brew info sbt sbt: stable 1.1.0
今回インストールされたバージョンは 1.1.0 でした。
3. プロジェクトを作成する(Javaの場合)
Java用のテンプレートプロジェクトを作成します。
$ sbt new playframework/play-java-seed.g8
プロジェクトが作成されたら、起動します。
$ cd play-java-seed
$ sbt run
初回実行時はダウンロード処理が行われ、
起動まで結構な時間が掛かりました。
--- (Running the application, auto-reloading is enabled) --- [info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started, use Enter to stop and go back to the console...)
こんな感じのメッセージが表示されていれば、
サーバーが起動完了しています。
にアクセスして「Welcome to Play!」と画面に表示されればOKです。
ちなみに、サーバー停止は「Ctrl + D」 できます。
4. プロジェクトを作成する(Scalaの場合)
$ sbt new playframework/play-scala-seed.g8
$ cd play-scala-seed
$ sbt run
同じように http://localhost:9000/ にアクセスして
「Welcome to Play!」と画面に表示されれば完了です。
Homebrewの再インストール
macのOS High Sierra に上げた影響なのか、 Homebrew の brew コマンドがうまく動作しなくなりました。
エラーメッセージから事例を探し、いくつかのコマンドを打ち込んでみたが解決しないので、伝家の宝刀を抜くことにします。 そう「再インストール」を実行します。
環境情報
- MacBook Air (13-inch, Mid 2012)
- Mac OS High Sierra (10.13.3) ※クリーンインストールではない
実行手順
まずは、Homebrewをアンインストールします。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
次に、Homebrewを再度インストールします。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor (1回目)
$ brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: Your Xcode (9.0) is outdated. Please update to Xcode 9.2 (or delete it). Xcode can be updated from the App Store. Warning: Your XQuartz (2.7.5) is outdated. Please install XQuartz 2.7.11 (or delete the current version). XQuartz can be updated using Homebrew-Cask by running brew cask reinstall xquartz
Xcode が古いよ。というエラーがでたので、 最新版を Mac App Store から入手します。 (サイズが5GB位あるため、ダウンロードに時間が掛かります。)
XQuartz も古いよ。ということなので、 最新版を入手し、インストールします。 https://www.xquartz.org/
You will need to log out and log back in to make XQuartz your default X11 server.
ログアウト->ログインしなさいとのことなので、指示に従います。
brew doctor (2回目)
$ brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run `brew link` on these: php55
brew link でリンクを貼ります。
$ brew link php55 Linking /usr/local/Cellar/php55/5.5.12... 0 symlinks created
brew doctor (3回目)
$ brew doctor Your system is ready to brew.
追記(2017/2/6)
よく調べたら High Sierra からPHPのバージョンが7.1になっているので、
php55 は不要でした。アンインストールしました。
$ brew uninstall php55
以上。