Casual Developers Note

エンジニアやデザイナー向けの技術情報・英語学習情報・海外留学情報・海外旅行情報を提供中。世界を旅して人生を楽しもう。

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • お問い合わせ
現在の場所:ホーム / アーカイブdocker

2018年6月25日 By KD コメントを書く

Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法

Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法

Jupyter Notebookはディープラーニングなどのデータサイエンスのプラグラムを検証する素晴らしいツールです。しかし、実行時にたまに「The kernel appears to have died. It will restart automatically.」というエラーが出ます。今回はその原因と対処法を紹介します。

はじめに

Tensorflowの初歩的なプログラミングとしてDeep MNIST for Expertsというものがあります。Tensorflowでディープラーニングを始める人はまずこのプログラムを書くのが慣例になっていますが、Jupyter Notebookで実行した場合、私のPCでは以下のエラーが出てしまいます。

Jupyter notebook error

今回はこの「The kernel appears to have died. It will restart automatically.」というエラーの原因と対処法を紹介します。

原因

エラーの出た環境

エラーは環境に依存します。今回使ったPCのスペックは以下です。

Spec

このPC上で、以前紹介した「データサイエンスのためのAnaconda環境構築とTensorflowのインストール方法(Docker編)」を使って、Jupyter Notebookをコンテナとして実行しています。メモリは16Gなので、Dockerはサクサク動いています。

MNISTのソースコード

今回実行したMNISTのソースコードは以下です。

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)

import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])

W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

def weight_variable(shape):
    initial = tf.truncated_normal(shape, stddev=0.1)
    return tf.Variable(initial)

def bias_variable(shape):
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial)

def conv2d(x, W):
    return tf.nn.conv2d(x, W, strides=[1,1,1,1], padding='SAME')

def max_pool_2x2(x):
    return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')

W_conv1 = weight_variable([5,5,1,32])
b_conv1 = bias_variable([32])
x_image = tf.reshape(x, [-1,28,28,1])
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)

W_conv2 = weight_variable([5,5,32,64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
h_pool2= max_pool_2x2(h_conv2)

W_fc1 = weight_variable([7*7*64, 1024])
b_fc1 = bias_variable([1024])

h_pool2_flat = tf.reshape(h_pool2, [-1,7*7*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)

keep_prob = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])

y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_, logits=y_conv))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
sess.run(tf.global_variables_initializer())
for i in range(20000):
    batch = mnist.train.next_batch(50)
    if i%100 == 0:
        train_accuracy = accuracy.eval(feed_dict={x: batch[0], y_: batch[1], keep_prob: 1.0})
        print("step %d, training accuracy %g"%(i, train_accuracy))
        train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})

print("test accuracy %g"%accuracy.eval(feed_dict={x: mnist.test.images, y_:mnist.test.labels, keep_prob: 1.0}))

Tensorflowの公式サイトの内容をTensorflowのバージョン1.8で動くように少し修正しただけのものです。

原因の調査

それでは、原因を調査しましょう。起動しているコンテナのリソース状況を確認するには「docker stats」コマンドを使えば良いので、これで調べてみましょう。

Jupyter Notebookをコンテナとして起動し、別のターミナルで「docker stats」を実行してみます。コンテナはもちろん一つだけしか起動していません。

Docker stats 1

「MEM USAGE」はそのコンテナが現在使用しているメモリ量、「LIMIT」はそのコンテナが使用できる最大のメモリ量を示しています。このコンテナは約2Gのメモリを使用できることが分かります。

次に、MNISTのプログラムをJupyter Notebook上で実行してみましょう。リソース状況はどうなるでしょうか?

Docker stats 2

Docker stats 3

「MEN USAGE」の数字はプログラムの最後の方で急激に上昇し、表示ができなくなってしまいました。そして、Jupyter Notebookの方は今回のエラーを表示して、実行が停止されてしまっています。

結論

これから分かることはメモリのオーバーフローです。コンテナが扱えるメモリの上限2Gを超えてしまったためにJupyter Notebookの処理が止まってしまったのです。

対処法

原因がわかったところで、対処法は以下の2つです。

  1. Dockerコンテナのメモリを増やす
  2. Jupyter Notebookを使わずにPythonファイルにして実行する(Jupyter Notebookのオーバーヘッドを回避する)

今回は1つ目の方法で解決してみましょう。

Dockerコンテナのメモリを増やす対処法

原因の結論を読んで疑問に思った人もいたかもしれません。メモリ16GのPCなのにDockerのコンテナのメモリ上限は2Gしかないのはなぜだろうか?

その答えは、実はDockerエンジン上でメモリ制限をしているからです。Dockerの「Preferences -> Advanced」を見てみましょう。デフォルトでは2Gに制限されています。

Docker memory default

今回はPCのメモリは16Gあるので、Dockerコンテナで使用できるメモリ上限は16Gまで上げられます。ただ、最大まで上げてしまうと他のアプリケーションが停止してしまう恐れがあるので、今回のプログラムが実行できる上限まで上げることにしましょう。

Docker memory up to 7G

コンテナの上限を7Gまで上げて、「Apply & Restart」します。

そして、Dockerコンテナのリソースを確認しつつ、MNISTのプログラムをJupyter Notebook上で再度実行してみましょう。

Docker stats last

メモリ使用率(MEM %)は約88%まで上昇していますが、使用したメモリは約6Gまでで止まり(上限は7Gなのでそれより小さい)、プログラムは正常に終了しました。

これで今回のエラーは解決できました。

最後に

いかがでしたか?Jupyter NotebookでTensorflowを使う場合にたまに遭遇するエラーなので紹介しました。ディープラーニングを本気でやるならそれなりのスペックのPCが必要になりそうですね。それでは。

カテゴリ : 技術 Tips & Tutorials タグ : docker, jupyter

2018年6月11日 By KD コメントを書く

CircleCI 2.0でdockerizeコマンドを使用可能にする方法

CircleCI 2.0でdockerizeコマンドを使用可能にする方法

Dockerのコンテナをコントロールするのによく使われるコマンドにdokerizeがあります。CircleCI 2.0上ではデフォルトでこのコマンドは使えます。ですが、Docker Composeをそのまま使うために「machine: true」とすると使えなくなってしまいます。今回はその場合にdockerizeコマンドを有効にする方法を紹介します。

はじめに

CircleCI 2.0上で「machine: true」にした時にdockerizeコマンドを有効にするには、シンプルにインストールするしかありません。ということで、CircleCI 2.0上でdockerizeをインストールして使用可能にしましょう。

dockerizeコマンドをCircleCI 2.0に適用する

前提として、すでにCircleCI 2.0でビルドするDocker化されたアプリケーションがあるものとして、進めます。

必要なファイルを作成する

それでは、必要なファイルを作成します。

$ touch .circleci/setup-dockerize.sh
$ tree .circleci/
.circleci/
├── config.yml
└── setup-dockerize.sh

dockerizeのインストールスクリプトを書く

Dockerizeをインストールするためのスクリプトとして、「setup-dockerize.sh」は以下のようにします。

#!/bin/bash
readonly DOCKERIZE_VERSION=v0.6.1

wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
sudo tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
sudo rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz

バージョンなどはdockerizeのGithubを確認して下さい。

CircleCI 2.0の設定を追記する

次に、CircleCI 2.0の設定ファイル「config.yml」にdockerizeのインストールの設定を追記し、Docker化されたデータベースの起動を確認するコマンドを追加します。

version: 2
jobs:
  build:
    working_directory: ~/repo
    machine: true
    steps:
      - checkout
...(略)...
      - run:
          name: Setup dockerize
          command: bash .circleci/setup-dockerize.sh
      - run:
...(略)...
      - run:
          name: Run Docker containers
          command: yarn build && docker-compose up -d
...(略)...
      - run:
         name: Wait for db
         command: dockerize -wait tcp://localhost:27017 -timeout 1m
...(ここでテスト実行)...

今回の設定ではDocker化されたデータベースが確実に起動した状態でテストが実行可能になります。

最後に

いかがでしたか?これでCircleCI 2.0でDocker Composeを使いたい場合でもdockerizeコマンドが使えるようになったことでしょう。それでは。

カテゴリ : 技術 Tips & Tutorials タグ : circleci, docker, dockerize

2018年5月14日 By KD コメントを書く

データサイエンスのためのAnaconda環境構築とTensorflowのインストール方法(Docker編)

データサイエンスのためのAnaconda環境構築とTensorflowのインストール方法(Docker編)

データサイエンスのディープラーニング(深層学習)する上でAnacondaとTensorflowはもはや必須の知識となりました。今回はデータサイエンスの初学者向けにDockerを使ってAnaconda環境構築とTensorflowのインストール方法を紹介します。

はじめに

以前の記事で、Mac上でpyenvを使ってAnaconda環境構築を行う方法を紹介しました。この方法は環境をスクラッチで構築するという観点では適切ですが、どうしても環境差分の影響を受けやすく、Anacondaのバージョンによってはうまく動作しない場合がありました。そこで、今回はそんな環境差分の影響を全く受けない方法として、Dockerを使ってコンテナとしてAnaconda環境を構築し、そこにTensorflowをインストールする方法を紹介します。

データサイエンスを始めたいのに環境が作れずに挫折した人は、今回の方法で問題なく環境構築を完了できると思います。

Dockerとは?

エンジニアであればDockerを知らない人はいないと思いますが、データサイエンスの初学者はエンジニアではない可能性もあるので簡単に説明しておきます。

Dockerとは、コンテナという単位でアプリケーションの実行環境を分離する技術で、単一のOS上に異なるOSやその上にアプリケーションがインストールされた環境を複数のコンテナとして実行させることができます。これは、従来の仮想化技術の仮想マシンと類似していますが、仮想マシンがOSをエミュレートして実行しているのに対し、Dockerのコンテナは名前空間などを利用することでホストOSからしたら単なるプロセスにしか見えない仕組みになっています。そのため、Dockerの方が仮想化技術よりもオーバーヘッドが少なく、複数の実行環境がコンテナとして軽快に動作します。その上、コンテナは起動や削除が簡単なため、今回のように開発環境構築や実験的にアプリケーションを試す場合などには最適と言えます。

さらに、DockerのコンテナはDockerイメージという形で雛形がDockerHub上に公開されており、複数のベンダーやコミュニティーが公式のDockerイメージを配布しています。今回は、Anacondaの公式のDockerイメージを利用することで、「確実に動く」環境を簡単に手に入れることにしましょう。

Dockerをインストールする

今回はMac上にHomebrewを使ってDockerをインストールします。

$ brew cask install docker
...
🍺  docker was successfully installed!
$ docker --version
Docker version 18.03.1-ce, build 9ee9f40

Dockerのインストール方法はOSによって異なるため、WindowsやLinuxの人は公式のインストール手順を見てやってみて下さい。

Anacondaの環境構築

Anacondaはもちろん公式のイメージを使います。「docker pull」でイメージを取得して、起動してみましょう。

$ docker pull continuumio/anaconda3
$ docker run --rm continuumio/anaconda3 python --version
Python 3.6.4 :: Anaconda, Inc.
$ docker run --rm continuumio/anaconda3 jupyter --version
4.4.0
$ docker run --rm continuumio/anaconda3 jupyter notebook --version
5.4.0

「docker run –rm」でコンテナを起動した場合、コンテナは起動し、コマンドが実行され、その後コンテナは綺麗に削除されます。

これでDockerでAnaconda環境がいつでもコンテナとして起動できることが確認できました。Dockerさえ使えれば複雑な環境構築は一切不要です。

Jupyter Notebookを起動する

それでは、Anacondaの公式イメージを使って、今度はJupyter Notebookを起動してみましょう。今回用に「project」フォルダを作り、「data/notebooks」フォルダに作成したノートブックを保存するように指定して、コンテナを起動しましょう。

$ mkdir project
$ cd project
$ mkdir -p data/notebooks
$ docker run -it -p 8888:8888 -v $(pwd)/data:/data --rm continuumio/anaconda3 bash -c 'jupyter notebook --notebook-dir=/data/notebooks --ip=0.0.0.0 --port=8888 --no-browser --allow-root'
[I 08:08:18.939 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 08:08:19.439 NotebookApp] JupyterLab beta preview extension loaded from /opt/conda/lib/python3.6/site-packages/jupyterlab
[I 08:08:19.439 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 08:08:19.448 NotebookApp] Serving notebooks from local directory: /data/notebooks
[I 08:08:19.448 NotebookApp] 0 active kernels
[I 08:08:19.448 NotebookApp] The Jupyter Notebook is running at:
[I 08:08:19.449 NotebookApp] http://0.0.0.0:8888/?token=eb25640714a747414d4f4ecb835ed87aaf059a9cb39e691d
[I 08:08:19.450 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 08:08:19.451 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://0.0.0.0:8888/?token=eb25640714a747414d4f4ecb835ed87aaf059a9cb39e691d

ブラウザで「http://0.0.0.0:8888/?token=eb25640714a747414d4f4ecb835ed87aaf059a9cb39e691d」を開いてみましょう。

Jupyter 1

Jupyter Notebookが起動していることが確認できました。

続いて、簡単なノートブックを作成してみましょう。

Jupyter 2

問題なくノートブックは作成されました。

Jupyter 3

この状態で、Control+CでJupyter Notebookを終了してみましょう。

Shutdown this notebook server (y/[n])? y
[C 08:14:41.617 NotebookApp] Shutdown confirmed
[I 08:14:41.618 NotebookApp] Shutting down 1 kernel
[I 08:14:41.923 NotebookApp] Kernel shutdown: 6040ea6e-eb47-4115-bdc9-5e124b075e3c
$ tree data
data
└── notebooks
    └── hello-jupyter.ipynb

1 directory, 1 file

Jupyter Notebookを終了しても、作成した「hello-jupyter.ipynb」が想定したフォルダ内に保存されていることが確認できました。

これでDockerでJupyter Notebookを扱うことができました。

Tensorflowをインストールする

最後にAnacondaにTensorflowをインストールしましょう。今回はDockerfileでインストールしたイメージをビルドすることにします。

$ pwd
/Users/you/project
$ touch Dockerfile

Dockerfileの中身は以下になります。

FROM continuumio/anaconda3:5.1.0

RUN conda update -n base conda \
  && conda create -n tensorflow-env python=3.6 \
  && . activate tensorflow-env \
  && conda install tensorflow

VOLUME /data

EXPOSE 8888

CMD jupyter notebook --notebook-dir=/data/notebooks --ip=0.0.0.0 --port=8888 --no-browser --allow-root

基本的には先程Jupyter Notebookを起動した時のコマンドをDockerfileにしただけですが、追加でcondaを使って仮想環境の構築とTensorflowのインストールを行っています。

それではイメージをビルドして、コンテナを起動しましょう。

$ docker build -t tensorflow-project .
...
Successfully built 85dd29cb0c75
Successfully tagged tensorflow-project:latest
$ docker run -it -p 8888:8888 -v $(pwd)/data:/data --rm tensorflow-project
[I 08:39:21.954 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 08:39:22.434 NotebookApp] JupyterLab beta preview extension loaded from /opt/conda/lib/python3.6/site-packages/jupyterlab
[I 08:39:22.435 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 08:39:22.444 NotebookApp] Serving notebooks from local directory: /data/notebooks
[I 08:39:22.445 NotebookApp] 0 active kernels
[I 08:39:22.445 NotebookApp] The Jupyter Notebook is running at:
[I 08:39:22.446 NotebookApp] http://0.0.0.0:8888/?token=4d1681702c20e5bb6636a1061a73b044a51b5cf10b4f0d06
[I 08:39:22.446 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 08:39:22.448 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://0.0.0.0:8888/?token=4d1681702c20e5bb6636a1061a73b044a51b5cf10b4f0d06

Jupyter Notebookが起動したので、ブラウザで「http://0.0.0.0:8888/?token=4d1681702c20e5bb6636a1061a73b044a51b5cf10b4f0d06」を開いてみましょう。

Jupyter tensorflow 1

問題なくJupyter Notebookが起動し、先程作成した「hello-jupyter.ipynb」も表示されました。

次に、Tensorflowを使ったテストコードを書いてみましょう。

Jupyter tensorflow 2

正しく実行できているので、Tensorflowが正しくインストールされていることを確認できました。

Jupyter tensorflow 3

このファイルも保存し、Control+CでJupyter Notebookを終了しましょう。

Shutdown this notebook server (y/[n])? y
[C 08:46:11.193 NotebookApp] Shutdown confirmed
[I 08:46:11.194 NotebookApp] Shutting down 1 kernel
[I 08:46:11.703 NotebookApp] Kernel shutdown: a32f36e5-2803-4cb8-b9f1-13ff6f617f17
$ tree data
data
└── notebooks
    ├── hello-jupyter.ipynb
    └── hello-tensorflow.ipynb

1 directory, 2 files

今作った「hello-tensorflow.ipynb」も保存されていることが確認できました。

以上で、DockerでAnaconda環境構築と、Tensorflowのインストールができました。Anacondaのバージョンが上がったとしても、DockerfileのAnacondaの公式イメージのバージョンを上げるだけで対応でき、とても便利です。

おまけ(追記)

MinicondaでTensorflowやKerasが入った軽量なDockerイメージを作る方法

AnacondaをDockerコンテナとして起動させるのはローカルにAnacondaをインストールするよりはるかに環境構築が容易です。ただし、一点問題があります。それはAnacondaをベースにしたDockerイメージは大変大きくなり、ディスク容量を圧迫する点です。この問題を軽減するメジャーな方法として、Minicondaをベースにする方法があります。

Minicondaの公式イメージをベースとした場合のDockerfileの例は以下です。(condaの仮想環境を使わないバージョンです。Pythonの開発では一般的にプロジェクト単位に仮想環境を構築しますが、Dockerの場合はプロジェクト単位にDockerイメージを作るので仮想環境は無くても問題ありません。)

FROM continuumio/miniconda3

RUN conda update conda \
  && conda update --all \
  && conda install jupyter numpy numexpr pandas matplotlib scipy statsmodels scikit-learn tensorflow keras \ # 好きなパッケージを入れる
  && conda clean --all

VOLUME /data

EXPOSE 8888

CMD jupyter notebook --notebook-dir=/data/notebooks --ip=0.0.0.0 --port=8888 --no-browser --allow-root

MinicondaはAnacondaと違い、最小限のパッケージしか入っていません。なので、自分の用途に応じてcondaで必要なパッケージをインストールする必要があります。

DockerHubに自作のDockerイメージをPushする方法

ベースとなるイメージをAnacondaからMinicondaに変えると、それだけでDockerイメージのサイズは半分以下になります。ただ、ローカルでDockerをビルドすると、どうしてもビルドする時間がかかります。それを回避するためのメジャーな解決策は、DockerHubに自作のイメージをPushして使い回す方法です。

DockerHubにアカウントがある前提として、例えば、アカウント名「your-account」、自作のイメージ名「your-tensorflow-image」とした場合は以下のようにコマンドラインから実行するだけでDockerHubにPushできます。

$ docker image build -t your-account/your-tensorflow-image -f Dockerfile .
$ docker login
$ docker image push your-account/your-tensorflow-image

利用する場合は、以下のようにすればOKです。

$ docker container run -it -p 8888:8888 -v $(pwd)/data:/data your-account/your-tensorflow-image

こうしておけばすぐにほしい環境が手に入ります。

さらに、Dockerイメージをローカルで作るのさえめんどうな場合は、GitHubにDockerfileをあげておき、DockerHubのAutomated Build(やり方はこちら)や、Travis CIやCircle CIなどのCIサービスを使って自動的にビルドしてDockerHubにイメージがPushされるようにしておくと便利です。

よくあるDockerイメージのビルドが失敗する場合の解決策

Tensorflowなどのイメージはサイズが大きいため、Dockerイメージのビルドをすると以下のようなエラーが出て失敗する場合があります。

  • OSError(28, ‘No space left on device’)
  • no space left on device

これらの原因はディスク容量が不足していることです。Dockerイメージを大量に作って放置している場合に陥る事象なので、以下のように不要なコンテナ、イメージ、ボリュームを削除するコマンドを実行するとハードディスクに空きができてエラーが無くなります。(削除する前にどの程度Docker関連のファイルが容量を使っているか知りたければ「docker system df」を実行してください)

$ docker system prune

それでもダメな場合は、「docker images」で大きいサイズのイメージを探し、不要であるか確認してから「docker rmi」で削除していくのが無難ですが、使っていないコンテナ、イメージ、ボリュームを全て削除してよければ以下のコマンドを実行してください。

$ docker system prune -a

これでもダメな場合は、どうにかしてハードディスクの容量を増やす他ありません。場合によっては、よりハイスペックなPCを購入した方が良いかもしれません。あるいは、ローカルで実行することを諦めてAzureやAWSなどのクラウド環境を利用すればハイスペックな環境を手に入れることは容易です。

最後に

いかがでしたか?これでディープラーニングを始める環境は整ったことでしょう。スクラッチで環境を構築するとどうしても環境差分で苦しむ事になるので、Dockerを使ったお手軽な方法を採用するのは賢明だと思います。これで、どんどんメインのディープラーニングに専念できますね。それでは。

環境

  • PC : macOS High Serra 10.13.4
  • Docker : Docker version 18.03.1-ce, build 9ee9f40
  • AnacondaのDockerイメージ : anaconda3:5.1.0

カテゴリ : 技術 Tips & Tutorials タグ : anaconda, docker, jupyter, keras, miniconda, tensorflow

  • « 前のページ
  • 1
  • …
  • 4
  • 5
  • 6
  • 7
  • 次のページ »

ブログ更新情報や海外の関連情報などを配信する無料メルマガ

Sponsored Links

About Author

KD

世界を旅し日本を愛するエンジニア。大学でコンピュータサイエンスの楽しさを学び、日本の大手IT企業で働く中で、新しい技術やスケールするビジネスが北米にある事に気づく。世界に挑戦するための最大の壁が英語であったため、フィリピン留学およびカナダ留学を経て英語を上達させた。現在は日本在住でエンジニアとして働きつつ、次の挑戦に備えて世界の動向を注視している。挑戦に終わりはない。このブログでは、エンジニアやデザイナー向けの技術情報から、海外に留学したい人向けの留学情報、海外に興味がある人向けの海外旅行情報など、有益な情報を提供しています。

https://casualdevelopers.com/

最近の投稿

  • 2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年1月13日
  • 今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    2019年11月4日
  • ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    2019年10月30日
  • BashからZshに移行する方法(Mac編)

    BashからZshに移行する方法(Mac編)

    2019年10月21日
  • Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    2019年9月30日

カテゴリ

  • 技術 Tips & Tutorials (100)
  • 技術塾 (6)
  • ライフハック (26)
  • 海外留学 (12)
  • 英語学習 (3)
  • コラム (6)

アーカイブ

最高の学習のために

人気記事ランキング

  • MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
    MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
  • Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
    Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
  • SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
    SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
  • バンクーバー留学豆知識:バンクーバーのATMで日本の銀行のキャッシュカードを使ってお得にお金を引き出す方法
    バンクーバー留学豆知識:バンクーバーのATMで日本の銀行のキャッシュカードを使ってお得にお金を引き出す方法
  • Amazon EC2インスタンスにSSHできなくなった時の対処法
    Amazon EC2インスタンスにSSHできなくなった時の対処法
  • Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
    Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
  • TumblrからWordPressにブログ移転する最適な方法
    TumblrからWordPressにブログ移転する最適な方法
  • SpringBootのProfile毎にプロパティを使い分ける3つの方法
    SpringBootのProfile毎にプロパティを使い分ける3つの方法
  • 今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~
    今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~
  • バンクーバー留学豆知識: バンクーバーのカジノを攻略せよ!必勝法を公開します!
    バンクーバー留学豆知識: バンクーバーのカジノを攻略せよ!必勝法を公開します!

Bitcoin寄付 / BTC Donation

Bitcoinを寄付しよう

BTC
Select Payment Method
Personal Info

Donation Total: BTC 0.0010

このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。

Bitcoin寄付について知りたい方はこちらの記事へ

ビットコイン取引ならここ

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • サイトマップ
  • タグ一覧
  • プライバシーポリシー
  • お問い合わせ

Copyright © 2023 KD - Casual Developers Notes