僕が会社を辞めようとしているたった一つの理由

こんちゃすGakuです(´・ω・`)。

いろいろ考えまして、今月いっぱいで新卒から入社して2年半働いた会社を辞めようとしています。
「2年半?最低でも3年働け!」
って言葉がすげぇ~聞こえてきそうな記事ですが、辞める理由を書きます。

時間>お金

僕は中学の時からプログラミングを趣味でやっていて、新入社員でもいろいろ動けて使える奴だったと思います。
また、生意気なところを戦略的に魅せる性分で(これやると可愛がられます)、そういったことからきつい案件に振られすぎました。
きつい案件を振られると残業は多くなっていきます。新入社員で100時間の残業も経験しました。
ブラック企業であれば残業代出さないという会社もありますが、うちの会社はそんなことはなく、
残業代はちゃんとしっかり出るので、20代とは思えない程の給料を貰っている月も多かったと思います。

ただ、そうなってくるとあまりにもプライベート時間が取れない状態となっていました。

僕の考えは時間>お金なので、この思想から逸脱してしまっていたわけです。

ストック型収入とフロー型収入

なぜ、時間>お金と考えるかはストック型収入とフロー型収入の考え方があるからです。
別に遊ぶために時間>お金と考えているわけじゃないです。

ストック型収入とフロー型収入を理解するにはこちらの動画を見ることがおすすめです。

僕のやっていることはフロー型収入で、時間をお金に変換しています。
これでは石川啄木先生のおっしゃる通り

「はたらけど猶わが生活楽にならざり」
です(´・ω・`)

ストック型収入を得るためにはプライベート時間がすごく大事で、これが取れないと話になりません。
本来であれば仕事を辞めずにフロー型収入で生活費を稼ぎ、プライベート時間でストック型収入を増やすという動きが理想ですが、僕の場合は本当にプライベート時間がなかったので、会社や~めよって思っちゃったわけです。

これから

今、新宿で働いているのですが、いろいろなメリットを考え実家がある関西へ帰ろうと思ってます。
ストック型収入って発想が大事なのですが、その点はIdeaがあるので辞めてから半年くらいでちょこちょこ仕組みを作って、完成したらまた新しい職場へ転職しようって気持ちでいます。

この世の中、野垂れ死にすることはないのだから、今後の将来を考え思い切った行動を!
Gakuでした(´・ω・`)

開発者がmacを持っている3つの理由

こんちゃすgakuです(´・ω・`)

週末、平日問わず東京では何かしらの勉強会が毎日どこかで開催している。
たま~にだけど、僕も興味のある題材の勉強会にちょこちょこ参加とかしている。
で、ふと思うんだけど、開発者はみんなmac!
メモ取るのにみんなmac!
スタバでのmacの比率じゃないよ

mac!mac!mac!mac!

尋常じゃないほどのmac率。

かくいう僕もマッカーなんだけれども、なんで開発者はmacを持っているのかちょっと考えてみた。

1.開発用ツールがそろっている

macを買って一番良かったと思うことは、購入初期から開発用ツール揃ってるな~って印象を受けた。
まず、ターミナルだがbashが標準搭載されている。

bash最高だよbash!コマンドプロンプトとか使いにくいったらありゃしない。
web開発のサーバーってUnixとかLinuxが多いんだけど、そこで使うのがbashでmacもbashなので親和性がすごいある。
ターミナルだけじゃなくて、iOSとか開発するためのXcodeっていうツールも、iPhoneでアプリを入れるのと同じように1クリックで導入可能。
こういうところが開発者がmacを使う理由の1つになってるっぽい。

2.持ち運びの手軽さ

僕はmac book airを購入したんだけど、もうね、軽すぎてやばい!
簡単にさくっと持ち出せて、カフェとかでさくっと開いて、さくっと開発できちゃう。

エンジニアって放浪癖があると思ってて(かくいう僕がそうなので)、いろんなところで開発したい欲求がすごいあるわけで、持ち出しやすい手軽さが開発者に受ける理由なんだろうな~って思ってる。

3.動作の軽快さ

羽根のような軽さを誇っているmacなんですが、そんな軽さに見合わない動作の軽快さがある。
windowsとかって使っているとなんか頻繁にプチフリーズしたりするので、動作が不安定なイメージがある。

macはそれが全くない!

ストレスフリーな開発が可能なのです。

おわりに

使ってみたらわかるけど、本当に手になじむ感じがするmac!
夏のボーナス出たし、まだ持っていない人は買ってみてはいかがでしょうか?

mac信者のブログがお贈りしました(´・ω・`)

プログラミングをはじめたいけど、何をしたら良いのかわからない人へ

どうもGakuです。
プログラミングって何?って思ってる人はいっぱいいると思う。
なんか作ろうと思ったら、まずはやりたい言語の環境構築をしないとなんだけど、今回は環境構築なしでプログラミングに触れてみる。
対象の人はこんな感じ。

・プログラミングやりたいけど何なの?
・環境構築わからんけど、プログラミング触れてみたい。
・基本構文(´・ω・`)?

とりあえず、ファイル作ってみる

デスクトップにテキストファイルからプログラム.htmlってのを作る。
これだけで終わり。

git2

環境構築終了!

しいて言えば、拡張子をtxt→htmlにしたことだけ。(わかんない人は「拡張子 表示」でぐぐってね(´・ω・`))

プログラミング書いてみる

さっき作ったプログラム.htmlをメモ帳で開いてみる。
簡単なwebサイト作るために、以下のように記述。

<html>
<head>
<title>webサイト</title>
</head>
<body>
Webサイト完成(´・ω・`)
</body>
</html>

で、chromeのアイコンやIEのアイコンにファイルがなっている場合、ダブルクリックで起動!
Animation

はい。これでwebサイト完成しました!

プログラミングっぽいことしてみる

さっきの作ったファイルを以下のような形で修正する。

<html>
<head>
<title>webサイト</title>
</head>
<body>
Webサイト完成(´・ω・`)
</body>
<script>
alert("ababa")
</script>
</html>

script部分追加しました。ここにプログラミング書いていきます。
これを実行するとポップアップが出せるようになります。

プログラミングで演算してみる

さっきの作ったファイルを以下のような形で修正する。

<html>
<head>
<title>webサイト</title>
</head>
<body>
Webサイト完成(´・ω・`)
</body>
<script>
var x = 1
var y = 1
alert(x+y)
</script>
</html>

起動してみたらポップアップに1+1された2が表示されます。
簡単な電卓が作れちゃいます。

おわりに

これがプログラミングです。すごい簡単ですけどプログラムです!

「何にもできないじゃん!」

おっしゃる通りです。今の状態では何にもできません!
ただ、ここから基本構文やオブジェクト指向を勉強して、いろいろ作れるようになるのです。

プログラミングの道は果てしないので、今回やったことが楽しいと思える方はプログラミングを突き進んでみて、面白くないと思った人は、悪いこと言わないから勉強時間ももったいないし、プログラミングは触れない方が身のためだよって言っとく(´・ω・`)

【第2回】はじめてでも簡単に仮想環境構築してみよう

はじめに

超初心者プログラマーのWebアプリケーション実装、第2回です。
前回はwebアプリケーション作成に欠かせないbashをwindows上にインストールしました。
第2回では第1回同様、webアプリケーション実装に欠かせないツールである仮想環境を導入する方法を記述したいと思います。

仮想環境って何?

仮想環境とは使用しているPC上に、仮想でPCを立てた環境を言います。
わからないという方は下の画像がわかりやすいかもしれません。
(こんな感じになります。)
20160712-214413.jpg

仮想環境を立てるメリット

開発を進めていくと、手順を間違ってしまったり、変なものを導入してしまったり、PC自体が使い物にならなかったりする可能性が多々あります。
そういった事態になった場合、手元のPC上で開発を進めていると、OSの再インストールを行わなければならない事態になりかねません。
(むふふ画像集も吹っ飛びます。)
そういった事態を避けるためにも、仮想環境を構築しその上で開発を行うようにしていれば安全です。
何かあった場合、仮想環境を壊して再度作り直すだけで手元のPCには何も影響を及ぼさず開発を進めることができます。
また、違うOSで開発したいな〜と思った際にも、新しくコンピュータを購入せず仮想環境を作るだけで他OSでの開発環境を手に入れることが可能です。
なんかすごくワクワクしてきませんか?

仮想環境のデメリット

仮想環境を構築するデメリットは何と言っても導入コストだったと思います。
ネットワーク設定やら、リソースの割り当てやらいろいろ複雑な設定を行わないといけません。
まぁ、いろいろ楽しかったりもするのですが、プログラミング初心者にとっては苦痛の他なりません。

世界は進歩しています。もう苦痛を感じなくても良いのです。

そう、上に書いたように昔は苦痛でした。でも、今は違います。良い時代になりました。
仮想環境の設定を簡略化してくれるvagrantというツールができて、飛躍的に簡単になったのです。
今回の記事では、vagrantとVirtualBoxを導入し、仮想環境上にに最新版のLinuxOSであるUbuntuをさくっと導入したいと思います。

仮想環境構築に必要なツールを導入する。

必要なツールは以下の2つです。

・VirtualBox
・Vagrant

これから順を追ってインストール方法を解説していきます。

VirtualBoxのインストール

仮想環境構築ツールであるVirtualBoxをインストールしてみましょう。
公式サイトからインストーラをダウンロードします。
英語でいろいろあって悩みますが、下画像のwindows版インストールを選択します。
無題
インストール時の設定は基本的にデフォルト設定でOKです。
Animation

Vagrantのインストール

仮想環境作成ツール(便利ツール?)であるVagrantをインストールしてみましょう。
こちらも公式サイトからインストーラをダウンロードします。
無題
基本的にデフォルト設定でOKです。
Animation
最後に再起動が求められるのでOKボタンを押してインストール完了です。

これで各種ツールのインストール作業は終わりです。お疲れさまでした~

さくっと仮想環境構築してみる

必要なツールは揃いましたので、仮想環境をさくっと立ててみましょう(´・ω・`)
まずは、前回でインストールしたgit bashを立ち上げてみましょう。
git bashの導入まだだよぉ~って方は下の記事をお読みください。
[blogcard url=”http://160.16.72.126/?p=403″][/blogcard]

VagrantFile格納先フォルダの作成

vagrantを使用するにはvagrantファイル(仮想環境構築の設定ファイルみたいなもの)ってのを作成する必要があるのですが、そのvagrantファイルを格納するフォルダを作成します。
僕の場合、OSごとに切ってこんな感じで作成しております。

c:/Users/Hidaka/develop/vagrantfile/Ubuntu15

これはユーザ任意のため、忘れないファイルパスであればどこに作成しても構いません。
おすすめは開発フォルダ[develop]作成し、その下にvagrantファイルフォルダ[vagrantfile]を作成、最後にOSごとのフォルダ[Ubuntu15]を作成するといった感じです。

OS探し

次に仮想環境のOSを選定します。
OSはここから選ぶ形となります。
ProviderがVirtualBoxとなっているものであれば、構築可能です。
無題
git bashで下記コマンドを実行し、OSのインストールを実施します。

vagrant box add Ubuntu15 https://github.com/kraksoft/vagrant-box-ubuntu/releases/download/15.04/ubuntu-15.04-amd64.box

VagrantFileの編集

先ほど作成したvagrantファイルを作成するフォルダへ遷移します。
(ここはユーザ任意のため、適宜フォルダのパスを変更してください。)

cd /c/Users/Hidaka/develop/vagrantfile/Ubuntu15

フォルダへ遷移できたら、vagrantファイルを作成します。
下記コマンドで一発で作成可能です。

vagrant init Ubuntu15

vagrantフォルダにVagrantfileってファイルが作成されましたので、それをテキストエディタで開いて編集します。
重要な部分はconfig.vm.synced_folderぐらいです。共有したい手元PCのフォルダを適切に設定してください。
(僕の場合、developフォルダにprojectsフォルダを作成し、そこを共有フォルダとしております。)

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://atlas.hashicorp.com/search.
  config.vm.box = "ubuntu15"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "forwarded_port", guest: 3000, host: 3000

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  #ここは共有フォルダの設定。仮想環境のフォルダと手元PCのフォルダを共有フォルダにする設定です。
  #config.vm.synced_folder "手元PCフォルダ", "仮想環境のフォルダ"
  config.vm.synced_folder "C:/Users/Hidaka/develop/projects", "/home/vagrant/projects"

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
  # such as FTP and Heroku are also available. See the documentation at
  # https://docs.vagrantup.com/v2/push/atlas.html for more information.
  # config.push.define "atlas" do |push|
  #   push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
  # end

  # Enable provisioning with a shell script. Additional provisioners such as
  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   sudo apt-get update
  #   sudo apt-get install -y apache2
  # SHELL
end

仮想環境へアクセスしてみる

これで設定は終わりです。
下記コマンドを打って仮想環境を立ち上げてみましょう。

vagrant up

パッと見で良いです。エラーが出ていなければ成功です。
(エラーが出ていればgoogleさんに聞いてみて、それで無理だったら、twitter:@gaku3601に問い合わせて頂ければ、暇だったら対応します(‘◇’)ゞ)
立ち上がったらアクセスしてみます。以下コマンドでアクセスすることが可能です。

vagrant ssh

仮想環境立ち上がりました!これで完了です。
ちょっと遊んでみます。
(仮想環境へアクセス→共有フォルダへ遷移→適当なテキストファイルを作成→手元PCへ戻って→先ほど作成した共有フォルダに仮想環境で作ったテキストファイルが存在するか確かめてます)
(※共有フォルダが適切に設定されているか確かめ、それができていれば概ね大丈夫です(´・ω・`))
Animation

おわりに

仮想環境の構築はそれほど難しくなかったと思います。
ここらへんで大ハマりし辞めてしまうプログラマーが多数いると思いますがめげず頑張ってください(´・ω・`)
次回は作成した仮想環境にWebアプリ作成に使用するRailsってのを導入したいと思います。

【第1回】windowsにbash導入してみよう

はじめに

超初心者プログラマーの僕がwebアプリケーションを作成&リリースするところまでできたので、その道のりを綴って行こうと思います。
対象としている人は以下のような人たち

・基本構文とオブジェクト指向、若干勉強したけどこっからどうしたらええのん?(´・ω・`)
・プログラミング難しすぎじゃね?C言語でどうやってWebサイトとか作るの?(´・ω・`)
・Webサイト作りてぇえええ!不労所得えてぇえええ(´・ω・`) 

自分がこんな感じだったので、こういう人に対して少しでも救いになってもらえるような記事を目指して書いていければなと思ってます。
使う言語はRubyでRailsってのを使って、休日思い立った時にさくっとWebアプリケーションを作れるような人材を目指したいと思います。

windowsユーザを対象とします

多分だけど、上に書いたような人は圧倒的にWindowsユーザが多いと思う。(僕もそうだったし。。。)
なので、これら記事はwindows上での開発をメインに進めていこうと思います。

第1回はbash導入!

第1回はbashの導入を行いたいと思います。
bashってなんぞや?って人はまず、[Windowsボタン+x]を押してコマンドプロンプトを開いてみましょう。
こんなのが出たと思います。 test
こんな感じでPCとコマンドベースで対話することが可能なツールです。windowsではコマンドプロンプトと言われてます。
このコマンドプロンプトを使用して、Webアプリケーションを開発することは可能ですが、なにぶんコマンドが少なくて使いづらいです。
そこで、UnixやLinuxで使われているbashというものを導入したいと思います。

git bashの導入

windows上でbashを導入するためにはcygwinというのを入れるのがスタンダートなのですが、設定がめんどくさく複雑なので今回はgit
bashというものを入れてみます。

git bashのインストール

git
bash公式サイト
へアクセスし、Downloadボタンをクリックすることでインストーラーをダウンロードして下さい。
ダウンロードが終わったら、そのファイルをダブルクリックし、git bashのインストールを行います。
こんな感じで進めていきます。(基本的にデフォルト設定でOKです。) git

git bashを使ってみよう

git bashのインストールが完了すれば、デスクトップにgit
bashのアイコンができるので、それをクリックして起動してみましょう。 git2
カラフルに色付けされたかっこいいツールが立ち上がると思います。(コマンドを叩くだけでちょっとしたハッカー気分になれます)
上の画像では基本的なフォルダ移動を行っています。
bashのコマンドは無数にあって、bashを極めた人をbash芸人とか呼んだりします。
ここでは触れませんが下のサイトなどで少しbashのコマンドを勉強すれば良いかと思います。(´・ω・`) [blogcard
url=”https://rat.cis.k.hosei.ac.jp/article/linux/bash_intro.html”][/blogcard]
フォルダの移動[cdコマンド]、フォルダ内のファイルの表示[lsコマンド]ぐらいは最低限覚えておいて損はないです。

コラム–なんでみんなmac使うの?(´・ω・`)

やたらめったらWeb業界ではみんなmacを使っている人が多いです。
なんでなん?かっこつけてんの?って思うかもしれませんが、macはUnixベースのOSでこのbashが基本搭載されています。
そのため、bashを良く使うWebアプリケーション開発者が好んでmacを使うため、macユーザが多いというわけです。
あとはiOSアプリケーションなんかもmacでしか(windowsでも作れるがマイナー)作れないので、そういった意味でも開発者はmacを使います。
そしてなによりかっこいい!
ただ、macにシールペタペタ貼るあれは(勉強会行くとシール貰えます。)僕は断じて許せません!
お前はどこの会社に属してるんだ?って思います。 (まぁ、個人の勝手ですが。。。)

おわりに

今回はWebアプリケーション開発でよく使うbashを導入してみました。
今後、良く使う友となるツールなので、とりあえず触っていろいろ遊んでみてください。ハッカーへの第一歩です。
次回はWebアプリケーション開発の礎となる仮想環境の構築あたりを記事にできればと思います。(´・ω・`)

ubuntu15に最新golangを導入する方法

Gakuです。
Vagrant上に構築したubuntu15へgolangを導入したので、その方法を記載します。
golangは癒し!という言葉の神髄を求めて。。。

導入

golangのダウンロード

何やらapt-getから入れるgolangは古いらしいので、
公式サイトから最新版のgolangをダウンロードします。

wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz

golangのインストール

/usr/localフォルダにダウンロードしたgolangファイルを展開し、設置します。

sudo tar -C /usr/local -xzf go1.6.2.linux-amd64.tar.gz

golangにパスを通す

最後に展開したgolangのbinフォルダにパスを通します。(※2行目は次回起動時にもパスが通るように設定)

export PATH=$PATH:/usr/local/go/bin
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile

導入おわり。3ステップ(´・ω・`)

こんにちは世界

package main

import "fmt"

func main() {
  fmt.Printf("Hello world\n")
}

実行

$ go run hello.go
Hello world

15分でここまでできる(´・ω・`)

おわりに

GO言語の動物本買ったので導入してみましたが、実に簡単です。
Rails脱却目指し頑張りまっす。

material-uiでmuiThemeを入れろ!と怒られた時の対処法

Gakuです。
material-uiを入れると下記警告で怒られると思います。その際の対処法を記載します。

Warning: Failed Context Types: Required context `muiTheme` was not specified in `AppBar`.

無題

warningのくせして何も描画されません(´・ω・`)

material-uiのissueを漁っているとこんな記事がありました。
[blogcard url=https://github.com/callemall/material-ui/issues/686][/blogcard]

material-uiにはtheme機能が実装されているので、ちゃんと指定してあげないといけないみたいです。

main.jsxやindex.jsなどのmainとなるファイルを下記のように編集してあげれば良いです。

import React from 'react'
import ReactDOM from 'react-dom'
import Header from'./AppBar.jsx'
import baseTheme from 'material-ui/styles/baseThemes/lightBaseTheme';
import getMuiTheme from 'material-ui/styles/getMuiTheme';

class TestBox extends React.Component {
  constructor(props) {
    super(props);
  }

  getChildContext() {
      return { muiTheme: getMuiTheme(baseTheme) };
  }

  render() {
    return(
      <div>
        <Header />
        <p>hoge</p>
      </div>
    );
  }
}

TestBox.childContextTypes = {
    muiTheme: React.PropTypes.object.isRequired,
};

ReactDOM.render(
    <TestBox />,
    document.getElementById('content')
);

無題

きれいになりました(´・ω・`)

material-uiでprops系のエラーが出たときの対象法

Gakuです。
CSSフレームワークのmaterial-uiを使っているのですが、導入した直後、以下のような警告が出ました。

Warning: Unknown props `rounded`, `zDepth`, `circle`, `transitionEnabled` on <div> tag.
Warning: Unknown props `tooltipPosition`, `onKeyboardFocus`, `onTouchTap` on <button> tag.
Warning: Unknown prop `hoverColor` on <span> tag.

無題

ぐぬぬ、ちゃんと設定できている気がするんだけど。。。(´・ω・`)

いろいろ探していたら、material-uiのissueとして挙がっていました。

[blogcard url=https://github.com/callemall/material-ui/issues/4594][/blogcard]

なんか、reactのv15.2.0入れているとダメみたいで、次期material-uiのリリースで対応するぉって書いているみたい。
とりあえず、reactの前バージョンであるreact-v0.14.8にダウングレードしてみる。

"author": "gaku",
  "license": "ISC",
  "devDependencies": {
    "babelify": "^6.4.0",
    "browserify": "^13.0.1",
    "gulp": "^3.9.1",
    "react": "^0.14.8",     //ここと
    "react-dom": "^0.14.8", //ここ
    "vinyl-source-stream": "^1.1.0"
  },

無題

すっきりっしゅ(´・ω・`)b