むにえる牧場

毎日むにえるをつくっています

Laravel5.8でMySQL8.0.xを利用する

meuniere.hatenablog.jp

こちらの記事の続きでPDOを導入してmigrateを行おうとしたのですが、エラーが起きて怒られました。
解消手順について書き残しです。

環境

root@be4a101ba48a:/src/sample# php artisan --version
Laravel Framework 5.8.29

root@be4a101ba48a:/src/sample# php --version
PHP 7.3.7 (cli) (built: Jul 12 2019 22:53:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
root@9d2a13a3b98c:/# mysql --version
mysql  Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

エラー内容

root@372cf107f5b8:/src/sample# php artisan migrate
 
    Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations and table_type = 'BASE TABLE')
 
   at /src/sample/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
     660|         // If an exception occurs when attempting to run a query, we'll format the error
     661|         // message to include the bindings with SQL, which will make this exception a
     662|         // lot more helpful to the developer instead of just the database's errors.
     663|         catch (Exception $e) {
   > 664|             throw new QueryException(
     665|                 $query, $this->prepareBindings($bindings), $e
     666|             );
     667|         }
     668|
 
   Exception trace:
 
   1   PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
       /src/sample/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
 
   2   PDO::__construct("mysql:host=mysql;port=3306;dbname=homestead", "root", "secret", [])
       /src/sample/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
 
   Please use the argument -v to see more details.

原因

  • MySQL 8.0.4に上がってからcaching_sha2_passwordというログイン認証方式に変更された
  • PDOが caching_sha2_password に対応していないためエラーになる

という状況でした。

解決策

DockerのMySQLコンテナの設定を変更することで対処しました。
ログイン認証方式をmysql_native_passwordという古い認証方式に変更します。

参考はこの辺り

MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.3.8.1 ネイティブ認証プラグイン

./docker/mysql/my.cnf

[mysqld]
 default-authentication-plugin = mysql_native_password

Dockerfileの変更をしたら、docker-compose up -d --buildとコマンドを入力し、ビルドしなおせばエラーが解消されます。

追記

ついでに、docker-compose.ymlの内容も少しだけ追加
docker-compose.yml

volumes:
       - ./docker/mysql/my.cnf:/etc/mysql/my.cnf
       - ./docker/mysql/data:/var/lib/mysql-files

3行目の/var/lib/mysql-filesがMySQL5.7?あたりで変わったらしいです。
少々古い記事だと/var/lib/mysqlと紹介されていてちょっとだけ詰まりました。

DockerでLaravelの開発環境を1から作ってみる

はじめに

Dockerなんもわからんになっていたので勉強を兼ねて、Laravelの開発環境を1からDockerでつくってみました。
最終的にこんなディレクトリ構成になります。

$ tree -L 3
.
├── LICENSE
├── README.md
├── docker
│   ├── mysql
│   │   └── Dockerfile
│   ├── nginx
│   │   └── default.conf
│   └── php
│       └── Dockerfile
├── docker-compose.yml
└── src
    ├── index.html
    ├── info.php
    └── sample
        ├─...

環境変数 .env

Dockerfileを記述する上で環境変数を多用するため、 .envファイルを準備します。
必要に応じて環境変数は変更しますが、とりあえず今回の記事の中では以下の .envファイルを準備しておけばok ルートディレクトリとなる箇所に配置してください。

./.env

NGINX_PORT=8080
PROJECT_PATH=./src
LARAVEL_SERVER_PORT=3501
MYSQL_PORT=3502
MYSQL_DATABASE=homestead
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=secret

Nginx

まずはNginxのコンテナを準備します。 ベースとなるイメージにはNginxの公式イメージを利用。

./docker-compose.yml

version: '3'
   services:
     web:
       image: nginx
       container_name: 'nginx'
       ports:
         - ${NGINX_PORT}:80
  • docker-compose build してビルド
  • docker-compose up -dしてNginxコンテナを立ち上げ

  • docker-compose psをすることでコンテナが立ち上がっていることが確認できる

$ docker-compose ps
   Name          Command          State          Ports
   -----------------------------------------------------------
   nginx   nginx -g daemon off;   Up      0.0.0.0:8080->80/tcp
  • localhost:8080 にアクセスしたらNginxの初期設定画面が見られる
    f:id:jalemy:20190721201807p:plain
    Nginx 初期画面

PHP

続いてPHPのコンテナを準備します。
ベースには公式イメージのversion 7.3.7を利用しました。

まずは、PHP用のDockerfileを作ります。

./docker/php/Dockerfile

FROM php:7.3.7-fpm
  • docker-compose.ymlphpコンテナの内容を追記します

docker-compose.yml

 ...
    app:
       build: ./docker/php
       container_name: 'laravel-php'
       ports:
         - ${LARAVEL_SERVER_PORT}:8000
  • docker-compose build docker-compose up -dとして、PHPを立ち上げます
$ docker-compose exec app php -v
PHP 7.3.7 (cli) (built: Jul 12 2019 02:57:19) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
  • PHPが動作していることを確認できました

Nginxのコンテナにファイル共有

./src/ ディレクトリにindex.htmlを配置して、Nginxにアクセスすることでindex.htmlを表示できるようにします。

./src/index.html

<p>hogehoge<p>
<p>nginx<p>
  • docker-compose.ymlNginx部分を書き換えます

docker-compose.yml

   nginx:
       image: nginx
       container_name: "laravel-nginx"
       ports:
         - "8080:80"
       volumes:
         - ./src:/src
         - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
  • Nginxの設定ファイルを準備します

./docker/nginx/default.conf

server {
       index index.php index.html;
       root /src;
}
  • docker-compose down docker-compose up -dとして再起動
  • localhost:8080にアクセスして、index.htmlが表示されます

PHPのコンテナにファイル共有

同じくPHPのコンテナでも設定を行います。

./src/info.php

<?php
    phpinfo();
  • docker-compose.ymlに追記します

docker-compose.yml

app:
       build: ./docker/php
       container_name: 'laravel-php'
       ports:
         - ${LARAVEL_SERVER_PORT}:8000
       volumes:
         - ${PROJECT_PATH}:/src
  • Nginxの設定にphp-fpmの設定を追加します

./docker/nginx/default.conf

  server {
       index index.php index.html;
       root /src;
   
       location \ {
           try_files $uri $uri/ /index.php?$query_string;
       }
   
       location ~ \.php$ {
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass app:9000;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           fastcgi_param PATH_INFO $fastcgi_path_info;
       }
   }
  • docker-compose down docker-compose up -d
  • http://localhost:8080/info.phpにアクセスすると、phpinfoの内容が出力されます

f:id:jalemy:20190721203601p:plain
phpinfo出力

mysql

DBということでとりあえずmysqlコンテナを作成します。

  • mysqlDockerfileを作成

./docker/mysql/Dockerfile

FROM mysql:8.0.16
  • docker-compose.ymlに追記します

docker-compose.yml

  db:
       build: ./docker/mysql
       container_name: 'db-mysql'
       ports:
         - ${MYSQL_PORT}:3306
       environment:
         - MYSQL_DATABASE=${MYSQL_DATABASE}
         - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
         - TZ=Asia/Tokyo
  • docker-compose build docker-compose up -dをして、コンテナを立ち上げ
  • mysql -h 0.0.0.0 --port {port番号} -u root -pとコマンドを入力して、mysqlの存在を確認できます
$ mysql -h 0.0.0.0 --port 3502 -u root -p
   Enter password:
   Welcome to the MySQL monitor.  Commands end with ; or \g.
   Your MySQL connection id is 9
   Server version: 8.0.16 MySQL Community Server - GPL
   
   Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
   
   Oracle is a registered trademark of Oracle Corporation and/or its
   affiliates. Other names may be trademarks of their respective
   owners.
   
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
   
   mysql>

composer

続いてcomposerのインストールをします。

  • PHPDockerfilecomposerについての記述を追記します。

./docker/php/Dockerfile

FROM php:7.3.7-fpm

# zip extension
RUN apt-get update \
    && apt-get install -y libzip-dev zlib1g-dev \
    && docker-php-ext-install zip

# install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && mv composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
  • zip extensionとなるlibzip-dev zlib1g-devを入れていないとエラーで怒られるので注意です

Laravel

ようやくLaravelのインストール……

  • ./docker/php/DockerfileにLaravelについての記述を追記します。

./docker/php/Dockerfile

   FROM php:7.3.7-fpm
   
   # zip extension
   RUN apt-get update \
       && apt-get install -y libzip-dev zlib1g-dev \
       && docker-php-ext-install zip
   
   # install composer
   RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
       && php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
       && php composer-setup.php \
       && php -r "unlink('composer-setup.php');" \
       && mv composer.phar /usr/local/bin/composer
   
   ENV COMPOSER_ALLOW_SUPERUSER 1
   ENV COMPOSER_HOME /composer
   ENV PATH $PATH:/composer/vendor/bin
   
   RUN composer global require "laravel/installer"
   
   WORKDIR /src
  • docker-compose buildでビルドし直し
  • docker-compose up -dで立ち上げ
  • docker-compose exec app laravel new sampleで新しくLaravelのプロジェクトをつくります
  • ./src/sample/ディレクトリにLaravelのプロジェクトが作られていることが確認できます。

  • Nginxのルートを変更して、Laravelのページが表示されるように設定します。

./docker/nginx/default.conf/

server {
    index index.php index.html;
    root /src/sample/public;
...
  • docker-compose exec web restartNginxを再起動
  • localhost:8080にアクセスすると……

f:id:jalemy:20190721204912p:plain
Laravel立ち上がってる図

(余分なもの写ってますが気にしないでください。)
これでDockerを利用してLaravelを動作させることができました🙌
本当はこの後にDBの設定したり、PHPの拡張したり、Node.js入れたりしないといけないのですが、力尽きたのでここまで……

おわりに

1から写経しながら環境構築するのめちゃくちゃ勉強になりました……
しかし環境構築周りは詰まることが多くてとても疲労困憊になります。(本来は詰まったことを記事にするべき……?)

追記

docker-compose exec app bashbashが立ち上がらなくてなんでだろう?となっていたところ、該当サービスのDockerfileを見てみたら、
FROM php:7.3.7-fpm-alpine

alpineと接尾につくイメージは、イメージ容量を小さくするために最低限のものしか入っていないようです。
その影響でbashすら起動できないということでした。
今回は別に容量気にしてなかったので、 FROM php:7.3.7-fpm とすることで解決。

参考

Laravelの開発環境をDockerを使って構築する - Qiita

Alpine Linux で Docker イメージを劇的に小さくする - Qiita

【JavaScript】意外と便利なショートカット演算(短絡演算)

はじめに

お仕事にてVue.jsのコードを見ていたら、

:class="[obj.is-active && 'is-active'"

というコードを見かけました。
最初はなんだこれ……となったのですが、調べてみたら意外と便利だったので紹介。
(ノルマがやばいともいう)

ショートカット演算(短絡演算)

JavaScriptにて、論理積/論理和(&&/||)演算子を利用するときに、「左辺だけ評価されて、右辺が評価されない」ことがあります。
&&を利用した場合、左辺がfalseと評価されると、その時点でfalseが返ってくるので、右辺が評価されません。
この演算のことをショートカット演算。もしくは、短絡演算と呼ぶみたいです。

コード例

const x = 0;

x === 0 && console.log('Hello');
// hello

x === 0trueとなるので、右辺のconsole.log('hello')が評価されて、helloと出力されます。
うーむ、わかりづらい……

&&演算子の場合

&&演算子を利用した場合は、

  • 左辺がfalseだったら、右辺は実行されない。
  • 左辺がtrueだったら、右辺が実行される。

||演算子の場合

||演算子を利用した場合は、

  • 左辺がtrueだったら、右辺は実行されない。
  • 左辺がfalseだったら、右辺が実行される。

ES6仕様書での記述

ES6の仕様書ではここに書かれています。

http://www.ecma-international.org/ecma-262/6.0/#sec-binary-logical-operators

The value produced by a && or || operator is not necessarily of type Boolean. The value produced will always be the value of one of the two operand expressions.

&&演算子、または||演算子によって生成された値は、必ずBoolean型になるわけではない。 生成される値は、常に2つのオペランド式のうちの1つになります。

Vue.jsで便利だった件

Vue.jsでオブジェクト構文を利用して、CSSのクラスをつけることがよくあります。
Vueのコンポーネントに渡したオブジェクトのフラグを利用して、CSSクラスのon/offを切り替えることがよくある(と思います)。

そんなときにこの構文が便利でした。
コード例はこれ(はじめにで書いたのと同じです。)

:class="[obj.is-active && 'is-active'"

一点、欠点として obj.is-active がfalseの際には、classにfalseという文字列が入ってしまうため、注意が必要です。
場合によっては、この後ろにも何かCSSクラスとなる文字列をいれていた場合は、falsehogehogeのように繋がってしまいます。
少々バッドノウハウな感じ……

おわりに

JavaScriptいろいろと他言語と違う仕様があるので、めちゃくちゃ難しいです。
もともとC#とか、Javaとか、コンパイル型の言語を書いていたので改めて体系的に勉強しようと下の本を買いました。
ES6の記法も覚えて良いコードを書けるようになりたい。
おわり。

第11回ゆるはち.it【Web開発のテスト】に参加してきた

はじめに

先月に引き続き、ゆるはち.itという勉強会に参加してきました。
今回はソフトウェアテストについての勉強会です。

connpassページはこちら

yuruhachi-it.connpass.com

勉強会に参加したら、聴くだけでは頭から抜け落ちてしまうので、参加レポを書くという義務感。

どんな勉強会だったか

ソフトウェアテストについて、概論から実際のテストフレームワークを使っての実演まで幅広く学べる勉強会でした。

参加者は、意外にも(?)現在Webエンジニアではない人が多く、Windowsアプリケーションの開発をしていてC#を書いているという人が多かった、気がします(完全に主観)

駆け出し1か月目Webエンジニアでテストコードなんて全然書いたことがないという私ですが、
イントロダクションから入って、JavaScriptフレームワークを利用しての実例(実演付き)と順序立てて聞けたのでとてもためになりました。

勉強会後に二次会もありましたが、それについては割愛。

印象に残った点

以下勉強会で印象に残った点、学べた点などなどを列挙。

ソフトウェアテストへの意識が変わった

今回の勉強会に参加して良かったなと感じる一番の点がこれです。

今までソフトウェアテスト難しそう、理論はわかるけど具体的に何して良いかわからん、という意識でした。
それが発表を聞いたことによって苦手意識が減り、心理的不安が軽くなったので、人の話を聴くのっていいものだなと。

大事なのはコレ

Q. テストを書いてなにが嬉しいのか
A. バグが減少する。
安心感がある。
そして、 開発者の幸福!

テストコードは書かなければいけないのではなく、我々開発者のために書いているのだというその一点が勉強会のハイライトです。
また、テストは期間を経れば経るほど価値が高まっていくとのことなので、気を長くしてテストを書いていきたい。

そんな内容を学べたスライドがこちら

Wallaby.js

JestWallaby.jsを利用したソフトウェアテストが紹介されてました。
実演付きで、お題はタイムリーな消費税増税に関するテスト。

Wallaby.jsがとても便利で、エディタにインラインでテスト結果が表示されるので、開発体験が一変するのではと。
テストコード書いて実行しているときって何して良いかよくわからないので、ストレスフリーになりそうですよね……

f:id:jalemy:20190628201404g:plain
Wallaby.js 実行例1

関連書籍とか参考サイト

wallabyjs.com

知識ゼロから学ぶソフトウェアテスト 【改訂版】

知識ゼロから学ぶソフトウェアテスト 【改訂版】

おわりに

ソフトウェアテストについて、苦手意識を変えてくれた勉強会でした。
Webエンジニアとして駆け出しの私にちょうど良く、今後に役立ちまくりそう。

次回は皆大好き「スプレッドシート」に関しての勉強会です。
どんな内容が発表されるのか、期待。

yuruhachi-it.connpass.com

23, 24週目のふりかえり

先週書けなかったので2週間分まとめて……(とてもよくない傾向)

Qovo

ここ2週間Qovo基準での行動をまったくできていなかったので、無し。

なぜできていなかったのか

  • 新しい職場で、新しい仕事をやるようになって何をすればいいかよくわからなくなっていた
  • 新しく振ってもらった仕事の進捗が悪く、勉強というものへの意欲が減退していた
  • 精神的にも、体力的にも、余裕がなくなってきていた
  • 早く成果を出さなければ……という意識が強くなりすぎて、自分の身の丈にあった行動ができなかった

抽象的だけどこのあたり……
何か勉強しようと行動しても、めちゃくちゃ効率が悪かったりしたので、長い目で見ていったん落ち着いた生活をしようと思った。
ということで、来週はQovoなしで落ち着いた生活をしようと思う。

今週の健康情報

カロリー

前回のふりかえりブログでは棒グラフの画像を貼っていたけど、結局のところ1週間の合計消費kcalを知りたいだけということに気づいたので、数値だけ残す。

週目 消費kcal
23/52 15,034kcal
24/52 14,829kcal

前回の22週目の消費kcalが15,292kcalだったので若干減っている。
クロスバイクでの通勤は続けているけどそれ以外はできていなくて、徐々に運動量が減ってきている様子…… あまりよくないのでテコ入れをしたい。

ストレスレベル

f:id:jalemy:20190623223135p:plain
23/52週目のストレスレベル

f:id:jalemy:20190623223201p:plain
24/52週目のストレスレベル

軸が変わっているのでちょっと比較がしづらいかもしれない。
22週目と比べると、週末につれてストレスレベルがあがっていく様子はみられなくなったが平均的にストレスレベルが高い。
特に24週目は平均値がぐっとあがっている。
Qovoの部分で書いたようにあまり良い日々を過ごせていない実感があるから、1日1個ずつ良いことができるようにしていきたい。

今週のひとりごと

23, 24週はお仕事が全然うまく進まなくて、環境変化による疲労も溜まってしまって最後には体調を崩してしまった。
僕はできないことに対して妙にストレスを感じやすいらしく、異常に焦ってしまったり、他の物事が手につかなくなったりしてしまう。
具体的な対策とはいかないのだけど、焦らずに、身の丈にあったもので、1日1個ずつ良いことをするというようにしたいと思う。

改めて勉強とか、生活というのは長期的な目線を持たなければいけないというのを言葉としては理解しているが、実感が薄い。自分自身の生活に適用できていない。
というのを感じているので、もうちょっと長い目で行動をしていきたいなーと思う。

おわりに

焦りは禁物!

続けている学習活動について棚卸しをしてみた

はじめに

最近転職により環境に変化が起こったので、自分自身の学習活動についてふりかえり、もとい棚卸しをしてみました。
弱小ITエンジニアなので、参考になるかはわからないですが、まとめて記事にします。
(今週のブログネタに困ったということもある)

私が続けている学習活動6個

意識してやってる活動を棚卸ししてみたら6種類になりました。
かけている時間が長いものから順に書いてます。

仕事

なんだかんだ一番時間を費やして、一番学びが多いのは仕事。
ここは人類皆同じだと思います。

特別書くことがないのですが、1点だけ。 現職では、毎日1時間 自己研鑽タイム というものが設けられていて、仕事に関係ないことでも自由に時間を使うことができます。
自由なので、「今日は早めに帰って体を休める」という行動もOK。
1時間という設定が結構おもしろくて、割となんでもできます。
まだ具体的な成果を得られるほど経験できてないので、また別の機会にふりかえり記事を書きたい。

読書(紙書籍 + kindle)

読書は体系的に情報を得られます。
ネット記事で勉強するのも良いのですが、目的の情報を得るために時間がかかったり、情報が錯綜していて目が泳いでしまったりとふらふらしてしまいます……。
ということで私が一番学習の用途として利用するのは読書です。

紙書籍

基本的には紙の書籍で勉強用の本を手に入れます。
理由としては、

  • 紙書籍の方が集中できる(これは個人差あるかも)
  • 図や表を多用する本の場合、組版通りに表示されるから読みやすい
  • 進捗具合がぱっと見でわかる

あたりが理由になります。
図表がみやすいっていうのが一番大きいですね。
電子書籍だと本によってデータへの変換形式が違って、文字ベースの検索ができなかったり、図表の表示位置がずれたりするので、取捨選択が難しいです。

最近だと 技術書典 が盛り上がっていて、そこで書籍を買って読むのも楽しいです。

techbookfest.org

電子書籍

図表が少ない本を買うときはこちらを利用します。
また、kindleだと結構頻繁にセールをやっていて、20%~50%OFFくらいの値段で本を買うことができます。
kindleのセールはそんなに露出が多くなく、気付かないことも多いので、こちらのtwitterをフォローしてセール情報を仕入れています。

twitter.com

(稀に漫画が無料で手に入ることもあるので、気付けるとかなりお得です。)

Podcast

次に多く利用しているのが podcast です。
podcast は、ネット上でアーカイブされている音声をエピソード単位で聞くことができるサービスのこと。
一般的なラジオと違って、専門的に別れたジャンルで自分が好きなものを選んで聞ける点が利点かなと。

以下、私がよく聞いているpodcastを列挙。
これ以外にもチェックしている番組はあるのですが、podcastを聞くのにはどうしても時間がかかるのであまり数を聞くことができないのが難点です……。

しがないラジオ

shiganai.org

毎回ITのお仕事に関わっているゲストを呼んで、生い立ちから、現在の仕事をするにあたった経歴などを詳しく聞ける番組です。
文字と違って、話すことによって伝えているので結構ぶっちゃけた話を聞けたりします。
転職に関する話題が多いので、その辺りに興味がある人は必見。

backspace.fm

backspace.fm

ほぼ(?)週一更新で最新の技術に関する情報を聞ける番組です。
ガジェットに関する話が結構多いので、カメラとか、スマートフォン端末とか、録音・録画機材とか、そういったものが好きな人にオススメ。

Rebuild.fm

rebuild.fm

こちらも週一更新でIT技術について情報を聴ける番組です。
とりあえずめちゃくちゃ音声が綺麗です。
シリコンバレーに関する話から、WWDCをはじめとしたイベントに関する話、映画の話と多岐に渡る話題が話されています。
どちらかというとソフトウェアに関連する話の方が多めでしょうか。

Automagic Podcast

https://automagic.fm/post/182728014830/commonstyle
automagic.fm

デザイナーさんの出演が多い点を特色と感じる番組です。
具体的な技術というよりはマインドに関する話の方が多い印象かなと。
Webデザインに関連する話を聴けるpodcastは他にみないので、貴重な話をいろいろと聞けます。

EM.FM

anchor.fm

エンジニアのマネジメントについて聴ける番組です。
マネジメントに関する話となるので、どうしても抽象的な内容になってしまうことが多い印象です。
しかし、実際にマネージャーという立場にある人からマクロな視点で話を聴けるのはとても貴重です。
マネジメントという領域に興味がある人にはオススメかと。

はてなブログ

週に一度、ブログに記事を投稿するという形式でアウトプットをするという活動を続けています。(このブログのこと)
アウトプットする過程でネタを用意しないといけないので自然と情報のインプットが増えます。
また、アウトプットのために文章を書くのが難しくて、文章を書く練習になったりします。

少し学習とは離れてしまいますが、目に見える形でアウトプットすることによって、転職等々に役立ったりするので、そういう意味でもオススメ(?)
あと自己承認欲求を満たすのに役立ったり

RSS(feedly + Pocket)

ニュースサイトの類のRSSを収集して暇な時間にチェックしてます。

Feedly というサービスでRSSを流し見て、 Pocket というサービスでリスト化してあとで読むという形をとってます。

feedly.com

app.getpocket.com

RSS登録してる一覧をぺたり

名前 RSS
@IT 全フォーラム 最新記事一覧 RSS
GIGAZINE RSS
ITmedia TOP STORIES RSS
Gizmode Japan RSS
はてなブックマーク - 人気エントリー - テクノロジー RSS
ライフハッカー[日本版] RSS

技術系の記事で人気の出た記事は、結構はてなブックマークRSSを見ているだけで網羅できたりするのでそんなに数多くRSS登録してないです。
この6つでも1週間で1000件以上溜まってしまうので、結構頑張って棚卸ししないと見切ることはできないです。
今は棚卸しするために頑張るのはちょっと違うかな……と気が向いた時にさらっと見る程度に。

TwitterやSlackなどのコミュニティ

最後に、結局は人との繋がりだというコミュニティ。

Twitter

ITエンジニアはTwitterをやっている人が多いイメージで、技術スタックが被ってる人とかフォローしておくといろいろと情報が得られたりして便利です。
(自分の興味あることが雑談できるから楽しいというのがたぶん本音)

Slack

Slack上でコミュニティのワークスペースをつくられていることが多く、今では3つほど参加してます。
コミュニティに参加していると、人との縁が増えたり、勉強会の情報が流れてきたり。
また、わからないことを聞いたら他のエンジニアが具体的に答えてくれたりと、自分一人では得られない情報が得られたりするので良いです。

勉強会

勉強会で思い出しましたが、勉強会の情報を得るためにTwitterアカウントをいくつかフォローしているのでそれも列挙。

twitter.com

twitter.com

おわりに

弱小ITエンジニアの学習環境についてまとめてみました。
意外と棚卸ししてみたら大変でした。ふりかえり大事。
かけている時間比率としては、

仕事 :  読書 : podcast : ブログ : RSS : コミュニティ
10 : 4 : 2 : 2 : 1 : 2

くらいの割合になるのかなーと。
もう少し自ら手を動かして成果物をつくれるようにしていきたいというのがここ最近の思いです。

ITエンジニアとしてレベルアップするにはどうしたらいいのか? という点に興味があるので、
もしよかったら皆さんのやっている学習活動とか、効率良い勉強方法とかそのあたりのことを教えてください。

2019年23/52週目のふりかえり

今週のQovo

f:id:jalemy:20190609223122p:plain
23/52週目のQovo

34pt中10pt消化して、消化率は29.4%

全然消化できませんでした。
先週28pt消化の71.4%だったので、比べるとかなり悪い……

消化できなかった原因は、

  • 今週から新しい職場で働き始めたので、余裕がなかった

この1つに尽きてしまう感じが……
お仕事しながらのペースを見つけていきたい。

来週のQovo

f:id:jalemy:20190609223242p:plain
24/52週目のQovo

先週の様子をみて、ペースを落とした方が良さそうなので、種類と量を絞って24pt。
webフロントの勉強を進めていきたいので、Vue.jsのチュートリアルをとりあえずやる。

今週の健康情報

Garmin Vivoactive3を利用してログをとってるので、これもふりかえりに入れていきたいと思う。
土日つけてなかったから、トラッキングされてないけどご了承。

カロリー消費

f:id:jalemy:20190609223425p:plain
23/52週目のカロリー消費

通勤時にクロスバイクを利用して、通勤しているのでその分ちょっとだけカロリー消費が増えている。
グラフの赤い部分が運動による消費のはず……
片道4kmくらいで、電車通勤の日と比べると250kcalくらい増えている。 続けていけば効果出ると信じたい。

ストレスレベル

f:id:jalemy:20190609223449p:plain
23/52週目のストレスレベル

ちょっとどういう計算でだしてるのか謎だが、Garminの時計でストレスレベルが見れる。
週の後半に進むにつれてどんどんストレスレベルが上がっていく……おもしろい……
当たり前といえば当たり前だが、疲労が溜まっていく様子が見えるから、週の途中でなんか疲労を抜くことをしたりしたいなーと。

今週のひとりごと

今週から新しい職場にてwebエンジニアとなった。
転職エントリーみたいなものはそのうち書きたい。
1週目ということで、慣れることにほとんどのリソースを割いてしまった感じがする。
一応仕事としては2つほどPRを出して終わった。もっと……成果出せるようにしたい……

いろいろ勉強進めて、自分自身のブログをLaravel + Vue.jsという環境で作ってみようかなと思っている。
似たようなことやってる人いたら、ぜひ教えてください。

おわりに

来週はもっと自分で勉強していきたい。
がんばるぞい。