上京エンジニアのお話

田舎から上京してエンジニアとして活躍する毎日を綴ります

bash から fish に変えてみた

経緯

会社で使っている Mac が突如お亡くなりになり、bash の設定を一からまたするのがめんどくさかったので、「めんどくさいな〜」とボヤいてたら、先輩に「fish にすればいいじゃん」と言われた。

そもそも情弱な僕は fish なんか知らなくて「fish・・・なんやそれ」ってなってググりながら興味本位で入れてみたところから僕の fish は始まった。

感想

結論から言うと・・・
「すごくいい!!!」

なにがいいかと言うと、コンソールが三流な僕にも使いやすいです。
補完がきいたりして直感で操作できます。

あとは、何よりプラグインマネージャーである fisherman がかなり優秀です。
下記にもコマンドを紹介しようと思いますが、プラグイン管理がすごく簡単で三流な僕でも簡単に扱えちゃいます。

またテーマがかなり豊富にあるので色々選ぶのが楽しい!

では、簡単に導入手順を書いていきます。

導入手順

fish のインストール

brew install fish

シェルを登録

sudo vi /etc/shells

以下を追加
/usr/local/bin/fish

fish にシェルを変更

chsh -s /usr/local/bin/fish

fisherman をインストール

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher

ちなみに削除は以下
fisher self-uninstall

以上!!!
導入も簡単です。

プラグイン等々

最後にプラグインを紹介しておきます。

テーマ

以下の URL から適当に選んで入れちゃってください。
github.com
僕は godfather を選びました!

fisher install omf/theme-godfather

エイリアス

エイリアスは、 balias ってのがあるので入れちゃってください。

fisher balias

まだまだ便利なのがたくさんあるのですが、以下の URL に僕のより丁寧に書かれているので、参考にしてください。
ちなみにクラスメソッドさんのブログを参考に導入してみました。
いつも良記事をありがとうございます!感謝しています!

dev.classmethod.jp

futurismo.biz

それでは、皆さん fish 生活を楽しんでください!!!

【書評】「エンジニアとして世界の最前線で働く選択肢」を読んでみた

どうもこんにちは。
最近 Kindle 買いましたおっくんです。

ずーっと通勤中とか出先で技術書読みたいなーと思うことが場面が結構あったんですけど、
技術書って分厚いし重いし、持ち歩きに不便やなーって思ったのでついに買っちゃいました Kindle Paperwhite!(端末割引のために Prime 会員にまでなりました)
なんで今まで買わんかったんやろ?って思うぐらい便利です。

そんな感じで、技術書だけでなく色々な本を良い漁ってます。
ですので、今回こちらの本の書評を書いてみたい思います。

読んだきっかけ

エンジニアの方でシリコンバレーで働くことに憧れを持っている人はたくさんいると思います。 僕もその中の一人で将来シリコンバレーでエンジニアとして活躍してみたいなあと思っていたので読みました。

シリコンバレーのエンジニア事情をググると、
- エンジニアは給料が高い
- サンフランシスコは物価が高い
- 突然のクビを言い渡されることがある

などの情報が多いと思います。
僕もシリコンバレーのイメージってそんな感じだったのですが、今回この本を読んで具体的にイメージすることができました。(僕が無知すぎなだけかもしれません・・・)

良かった点

全体的な章の構成や文章は読みやすく、さくさく読み進めることができました。
また、著者である「竜さん」の実体験を書かれているので読んでいてイメージがしやすかったです。

この本を読むまでは、向こうで働いてみることを考えた時に特に不安に感じるのが以下の 3点でした
- 英語力
- 技術力
- 面接フロー

しかし、もっと大切なことがありました。
そう。「ビザ」です。
恥ずかしながら「ビザ」については全く頭になかったので勉強になりました。

また、特にレイオフやファイアなど現場の経験に基づくリアルな話が貴重でおもしろかったです。

物足りない点

物足りなかった点を強いて挙げるとするのであれば、
以下ことをもう少し掘り下げてほしかったです
- 技術的な内容(困った体験談等)
- 勉強会やカンファレンスはどのように開催されているかなど
- スタートアップ界隈の情報

まとめ

ネット上の情報より細かく書かれており、このような書籍は少ないので、
シリコンバレーに少しでも興味があるエンジニアの方にはぜひオススメした一冊です。
読んでいるとなぜかワクワクしてすごくモチベーションが上がりました。

Perl で Amazon の Product Advertising API を叩いた話

AmazonProduct Advertising APIPerl で叩かないといけないことがあったのでその時のことをまとめておく。

初めに、cpan に何かモジュールがあるだろうと漁ってみたところ・・・
Net::Amazon metacpan.org

あたりが良さそうだったので、とりあえず入れてみた。

cpanm Net::Amazon  

早速叩いてみた。
Product Advertising API 用のアカウントを事前に作成する必要があります

今回は、ISBN を元に商品を取得したのでソースはこんな感じ。

#!/usr/bin/perl

use strict;
use warnings;

use Net::Amazon;
use Data::Dumper;

my $ua = Net::Amazon->new(
    associate_tag => '%ASSOCIATE_TAG%',
    token         => '%TOKEN%',
    secret_key    => '%SECRET_KEY%',
    locale        => 'jp',
);

my $item = $ua->search(
    isbn => '9784873110967'
);

unless ($item->is_success()) {
    print "$item->message() \n";
    exit;
}

warn Dumper $item;

1;

はい、めっちゃ簡単でした。
token はアクセスキーを入れてもらえば問題ないです。

MySQL の SELECT 文を見やすくするぞ

自分用に tips として残しておこうと思います。

Webエンジニアの皆さんは、業務で MySQL を使用することがよくとあると思います。 DB の中を見たい時はどのように確認していますか。

僕はコンソールが苦手な情弱エンジニアなので、前職では PHPMyAdminMySQL Workbench などの GUI ツールを使用していました。

このような類のツールはすごく便利で使い勝手がいいと思いますが、現職で GUI ツールを使用している人がチーム内にはおらず、これを機に僕も CUI でやるか!と気合いを入れて挑みました。

普通に以下のように SELECT 文を打ちます。

SELECT * FROM demo;

レコード数が多かったり、カラム内のデータが多かったら以下のような結果になります。

+----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+-------+-------+-------+-------+-------+-------+-------+--------+
| id | test1                                                                                                                                                                                                                                    | test2 | test3 | test4 | test5 | test6 | test7 | test8 | test9 | test10 |
+----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+-------+-------+-------+-------+-------+-------+-------+--------+
|  1 | hoge                                                                                                                                                                                                                                     | hoge  | hoge  | hoge  | hoge  | hgoe  | hoge  | hoge  | hoge  | hoge   |
|  2 | hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge                                                                                                                     | hoge  | hoge  | hoge  | hoge  | hgoe  | hoge  | hoge  | hoge  | hoge   |
|  3 | hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge | hoge  | hoge  | hoge  | hoge  | hgoe  | hoge  | hoge  | hoge  | hoge   |
|  4 | hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge | hoge  | hoge  | hoge  | hoge  | hgoe  | hoge  | hoge  | hoge  | hoge   |
|  5 | hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge | hoge  | hoge  | hoge  | hoge  | hgoe  | hoge  | hoge  | hoge  | hoge   |

通常ディスプレイのサイズで折り返しされて見にくい・・・ってなりますね。

そういう時は、以下のようにクエリを書きます。

SELECT * FROM demo \G;


*************************** 1. row ***************************
    id: 1
 test1: hoge
 test2: hoge
 test3: hoge
 test4: hoge
 test5: hoge
 test6: hgoe
 test7: hoge
 test8: hoge
 test9: hoge
test10: hoge
*************************** 2. row ***************************
    id: 2
 test1: hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
 test2: hoge
 test3: hoge
 test4: hoge
 test5: hoge
 test6: hgoe
 test7: hoge
 test8: hoge
 test9: hoge
test10: hoge
*************************** 3. row ***************************
    id: 3
 test1: hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
 test2: hoge
 test3: hoge
 test4: hoge
 test5: hoge
 test6: hgoe
 test7: hoge
 test8: hoge
 test9: hoge
test10: hoge
*************************** 4. row ***************************
    id: 4
 test1: hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
 test2: hoge
 test3: hoge
 test4: hoge
 test5: hoge
 test6: hgoe
 test7: hoge
 test8: hoge
 test9: hoge
test10: hoge
*************************** 5. row ***************************
    id: 5
 test1: hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
 test2: hoge
 test3: hoge
 test4: hoge
 test5: hoge
 test6: hgoe
 test7: hoge
 test8: hoge
 test9: hoge
test10: hoge

こんな感じで縦に表示されます。

ということで、最後に「 \G 」をつけるだけでとても見やすくなります。

Devalopers.IO 2017に行ってきた

昨日クラスメソッドさんの「Devalopers.IO 2017」に行ってきましたので、ざっくり感想を書きます。

5月に上京をしてちょうど2ヶ月経過しましたが、東京での勉強会は初参加だったので、楽しみにしていました。
(毎日の業務に追われていてなかなか行く余裕がなかったという言い訳・・・)

経緯

クラスメソッドさんの技術ブログにはいつもお世話になっており、技術力の高さ・アウトプットの多さにとても興味を持っていました。
なので、一度生でパッパっと聞けそうな場だったので参加した感じです。

感想

会場に到着したのは、ちょうど12時頃。
すみません、朝一間に合いませんでした・・・

昼食のお弁当が配られていたので、お茶とお弁当をいただき着席。
ご馳走様でした。
お腹がすいていたので、とてもありがたかったです。

ランチセッション

代表の横田さんがクラスメソッドのご説明をされていました。
イメージとしては以下のように感じました。

  • リモートワークが多い
  • 事業としては近年急上昇
  • 社員・社員の家族をとても大切にされている
  • 社員絶賛募集中 てな感じで、すごいホワイト企業やん!って思いました。

そして午後から各セッションに分かれて移動を行います。
だいたい一コマ45分のセッションなのでいい感じのボリュームですねー。

クラメソの請求を支える技術

dev.classmethod.jp

植木さんという方のお話です。
経歴がなかなかおもしろかったです。
内容としては、請求書の発行までの複雑な業務フローをIT化し、効率化を図り素晴らしいエンジニアだと思いました。

  • 糊付けエンジニア
  • 「半径5メートルの人間を幸せにする」 この二つの言葉は印象に残っています。

「糊付けエンジニア」は自分にも当てはまるなあと思います。

「半径5メートルの人間を幸せにする」
これに関しては、現状全然自分はできていないなと感じました。
尚且つエンジニアリングにおいてとても大切なことだと思いますので、良いこと聞けたと思います。

基礎からの OAuth 2.0

www.slideshare.net

都元さんという方でファンキーな雰囲気の方でした。

内容は、OAuth2.0の概要を一から詳しく説明していただいて、丁寧な内容でした。
スライドもわかりやすくよかったです。

OAuth2.0曖昧なまま使用していることが多く、間違って認識している部分もありよくないなと感じたのでこれを機に勉強します!

開発環境での Docker 活用事例と本番運用に向けて考えたこと

西田さんという方で、普段大阪で勤務されているそうです。
個人的に関西出身なので、久しぶりに生の関西弁が聞けて和みました!

スライドが・・・見つかりませんでした。

今回このセッションが結構楽しみにしていて、皆さんがどのような開発環境で開発されているのか気になっていました。
自分は業務でも個人のプロダクトでもVagrantで開発していますが、PCのスペックもあまり高くないのでVagrant立てると重いなあと結構感じていました。
今回Dockerでの構築を聞き一度個人のプロダクトからDocker使っていこうかなーって感じです。

Amazon ElasticSearch Serviceの使いドコロ

dev.classmethod.jp

最後は藤本さんという方です。

恥ずかしながらElasticSearchは現職で初めて知り、絶賛勉強中でした。

実例を交えた比較がわかりやすかったです。

セッション内容も一番のボリュームで最後ということもあり、特別に45分も過ぎても話されていて気迫を感じました!

まとめ

前日急遽予約したので予約時点ではいくつも満席になっていましたが、実際行ってみると意外とそこまで満席感を感じませんでした。
また基礎部分をしっかり話してもらえるセッションも多くありとっつきやすく良かったと思います。

スポンサーブースでは、ノベルティが配られていたり、めそ子Tシャツが売っていたり、めそ子ステッカーが貰えたり・・・などなど
この内容で、昼食+懇親会もありで1000円はお得だなーと思いました。
(今回夜に予定があり、懇親会に行けなかったのが残念。。)

といったような感じ簡単にまとめましたが、来年も開催されるのであれば行きたいなと思いました!

クラスメソッドさんありがとうございました!

変数の値の出力(PHPとPerlの比較)

変数出力

新しい言語を始めて言語を習得していく上で必要な変数出力について少し書いていきます。
今までPHPをメインに書いていたので、Perlと比較してみます。
まずはPHPはこんな感じ。

文字列

$str = 'hoge';
var_dump($str);
string(4) "hoge"

配列

$array = ('hoge', 'bar', 'foo');
var_dump($array);
array(3) {
  [0]=>
  string(4) "hoge"
  [1]=>
  string(3) "bar"
  [2]=>
  string(3) "foo"
}

一方Perlではこんな感じ。

文字列

my $str = 'hoge';
use Data::Dumper;
warn Dumper $str;
$VAR1 = 'hoge';

配列

my @array = ('hoge', 'bar', 'foo');
use Data::Dumper;
warn Dumper @array;
$VAR1 = 'hoge';
$VAR2 = 'bar';
$VAR3 = 'foo';

簡単ですね。
慣れの問題だと思いますが、ただPHPの方が見やすい気がします。。

もう1ヶ月が終わってしまった

上京をして、もう1ヶ月が終わってしまった。
早いものですねー。
てことで、毎日を生活していて感じたことをさくっと書いてみます。

私生活

  • 電車の本数がすごい多く、とにかく便利
    ただ平日の真昼間なのに混んでる・・・
  • やっぱり物価が高い
    場所にもよると思いますが、ランチに1000円は驚きます
  • お洒落な人が多い
    みんな芸能人みたい
  • テレビが面白くない
    テレビっ子なのでこれが一番辛い

仕事

  • 技術力が前職と比べ桁違い
    技術者の方の技術力が基本的に高いです
  • 未だにPerlに慣れていない・・・
    演算子が多数あって、頭の中がごちゃごちゃになる
  • そもそもPerlだけではダメ
    ElasticSearchとかHadoopとかゴリゴリ使っているのでその辺の概念を叩き込んで設計に盛り込んでいかないといけない

とりあえず今はこんな感じ・・・
勉強することが多くて、かなり苦戦していますが、ただ言えるのは、エンジニアとして毎日がとても充実しています。
今はとにかくがむしゃらにもがき苦しみます!

そして、そろそろいい加減技術的なアウトプットしていきます。