NameError: uninitialized constant AWS

「NameError: uninitialized constant AWS」のエラーが出た時の対応メモ。

エラー内容

NameError: uninitialized constant AWS

原因

aws-sdkのバージョン1と2でネームスペースが違う

NameError: uninitialized constant AWS. If you receive this error, you likely have upgraded to version 2 of the aws-sdk gem unintentionally. Version 2 uses the Aws namespace, not AWS. This allows version 1 and version 2 to be used in the same application.

参考:https://github.com/aws/aws-sdk-ruby#nameerror-uninitialized-constant-aws

対応

ネームスペースの修正。

version 1(修正前)

AWS.config({
  :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
  :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
})

version 2(修正後)

Aws.config.update({
  region: 'us-west-2',
  credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
})

リージョンの指定は適宜。

参考

Rails環境の構築

趣味の開発用にVPSRails環境を構築した時のメモ。

Rails環境構築

rbenv + ruby-build

$ sudo yum update
$ sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison git
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv -v
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv install -l
$ rbenv install 2.2.2
$ rbenv global 2.2.2
$ rbenv rehash
$ rbenv versions

Rails

$ gem install rails --version="5.0.1"
$ rails -v

Nginx

$ sudo yum -y install nginx
$ sudo service nginx start
$ sudo chkconfig nginx on
$ sudo chkconfig --list nginx

Basic認証

tsyknsr.hatenablog.com

参考

ChainerでMNISTを試す

ChainerでMNISTのサンプルコードを試しました。

参考:pfnet/chainer

Chainerをインストール

$ pip install chainer

サンプルコードを動かす

chainer/examples/mnistのディレクトリにMNISTのサンプルコードがあります。学習時間は15分程度でした。

$ python train_ptb.py
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20

Downloading from http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz...
Downloading from http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz...
Downloading from http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz...
Downloading from http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz...
epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           0.191542    0.090873              0.944033       0.9713                    50.9736       
2           0.0741329   0.0754302             0.976317       0.9765                    99.1206       
3           0.0467661   0.0721968             0.985067       0.9797                    161.049       
4           0.0359696   0.0728168             0.988083       0.978                     209.989       
5           0.0290916   0.0821801             0.9904         0.977                     261.491       
6           0.0242685   0.0734186             0.9921         0.9806                    311.869       
7           0.0202083   0.0895192             0.993467       0.9795                    360.346       
8           0.0173684   0.0807823             0.9944         0.9785                    407.156       
9           0.0185823   0.0856489             0.994          0.9792                    456.174       
10          0.0167096   0.0783728             0.9947         0.9797                    506.884       
11          0.0103569   0.095445              0.9968         0.9797                    556.816       
12          0.0153957   0.0862309             0.995267       0.982                     605.577       
13          0.00907149  0.104247              0.9972         0.9803                    653.676       
14          0.013558    0.0988746             0.995767       0.9794                    708.906       
15          0.0123224   0.0865951             0.99605        0.9825                    762.177       
16          0.0102555   0.0927854             0.99725        0.982                     815.14        
17          0.0100652   0.094853              0.996733       0.9805                    877.995       
18          0.00979173  0.0833932             0.997183       0.9849                    932.327       
19          0.00768291  0.116505              0.997767       0.9801                    992.164       
20          0.00946933  0.100418              0.9974         0.9836                    1054.31   

学習が終わるとresultディレクトリの中に学習結果のデータが作成されます。

f:id:tsyknsr:20170201224257p:plain

f:id:tsyknsr:20170201224313p:plain

accuracyが精度、lossが誤差を表しています。学習回数が増す毎に数値が改善されています。(グラフの読み方は勉強中です。)

まとめ

MNISTのサンプルコードを試すことができました。このあとは、コードの中身をチラ見したり、他に用意されているサンプルを試しながら、少しずつ自分でもコードを書けるようになればと思います。

参考

CapistranoでPermission denied (publickey)が出た時の対処

Capistranoでdeploy:check時にPermission denied (publickey)のエラーが出た時の対処法メモ。

原因

デプロイ先のサーバーで秘密鍵・公開鍵の作成管理が行われていないため、デプロイ先のサーバーからgithubに接続できない。

対応

ssh agent forwardingを利用。

参考:capistrano3でssh agent forwarding

エラー内容の確認

$ bundle exec cap staging deploy:check
(略)
git:check
01 git ls-remote --heads git@github.com:hoge/huga.git
01 Permission denied (publickey).
01 fatal: Could not read from remote repository.
01
01 Please make sure you have the correct access rights
01 and the repository exists.

ssh-agentに登録されている鍵の確認

$ ssh-add -l
The agent has no identities.

ssh-agentに鍵を登録

$ ssh-add ~/.ssh/huga.pem
$ ssh-add -l
2048 (略) /Users/hoge/.ssh/huga.pem (RSA)

参考

Rails5で日本語化

Rails5で日本語化する時のメモ。

./config/application.rb

# Application configuration should go into files in config/initializers

initializers以下の設定に変わったようです。設定は下記のissueを参考にしました。

https://github.com/rails/rails/issues/25398

Rails5で日本語化の設定

./config/initializers/locale.rb

I18n.config.available_locales = :ja
I18n.default_locale = :ja

日本語訳ファイルをダウンロード

共通

https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml

devise

https://gist.github.com/yhara/606476

参考

フリーランスエンジニア3年目の2016年振り返り

フリーランスエンジニアとして3年目の2016年の振り返りです。

個人開発

尊敬するエンジニアの方が主催したシードアクセラレータープログラムに参加しました。残念ながら、そこで開発したサービスから話が発展することはなかったのですが、サービスの企画検討からリリースまでを担当できたことは大きな経験となりました。今回は無償で友達にも手伝ってもらったのですが、次回また何かをつくる機会があったら、多少なりお金を払うことができて本人の実績としても残してもらえるような環境作りが必要だと感じました。サービスのコンセプトが弱かったり、運用体制に持続性がなかったりなど、リリース後に発生する課題への見通しの甘さも反省点でした。その他にも、サービス開発からペライチのサイトまで大小合わせて今年は10~15程度の個人開発を行いました。なるべく多く試す機会をつくるために、機能を使いまわせるように整理したり、有料テンプレートを導入するなど工夫をしました。簡単に試したい場合は、facebookページやinstagramを使いました。

情報収集

海外でサービスをつくる可能性を探るために伸びしろの大きい東南アジアを中心に海外を見て回りました。今年は、タイ・インドネシア・中国に行きました。タイ・中国は想像していたよりも完成されていましたが、インドネシアは荒い部分が多く残っていたり物価も他の国に比べると安い印象だったので、個人でも何かできるかもしれないという可能性を感じました。滞在中は回線速度を測ったり、街の主要な位置関係を調べたり、スマートフォン専門のモールで市場調査を行うなどしました。帰国後に物件の相場を調べたり、現地の言語で簡単なペライチのサイトをつくってアクセスが来るかなどを試しました。渡航費用は、LCCの深夜便やエクスペディアのセールを利用することで多少なり抑えることができました。

業務委託

常駐やリモートなどでいくつかの案件に携わりました。これまで雰囲気の良い現場しか経験したことがなかったのですが、今年初めて困難な現場に当たりました。忙しさよりもコミュニケーションの部分でストレスの負荷が高すぎて、最後の方は手足が痺れるなど健康状態に影響が出ていました。今後はあまりに困難な環境の場合は早めに現場から離れる判断を心がけようと思いました。
明るい話では、某企業のCTOの方から直接声をかけていただき継続的に開発に参画させていただくお付き合いも生まれました。

仕事場

今年から渋谷近辺に仕事場を借りました。移動時間を短縮できたので自由な時間が多く生まれて1日の開発時間も増えました。都心に出やすくなったので勉強会や仕事関係の飲み会などフットワークも軽く動けるようになりました。最初に書いたシードアクセラレータープログラムも、物理的な距離の近さで参加を承認された部分もあるのではないかと思います。 また、お誘いを受ける機会も増えました。「ちょっとお茶しませんか?」の流れから仕事の話になり、そのまま案件のご相談を頂くこともありました。

2017年に向けて

2016年は個人的に多くのチャレンジをしましたが、得るものは大きくても成果につなげることが出来ませんでした。来年は何かしらの方法で成果を出して結果を残したいと思います。今年は「日本にあって海外にないもの」という視点から海外でのサービス展開を視野に入れて東南アジアを見て回りました。2017年は「海外にあって日本にないもの」という視点からヨーロッパなどの先進国から日本に取り入れることができるサービスや仕組みを探してみようかと考えています。東南アジアの国を複数回る中で、中心地の空気はどこも似ているように感じましたが、中心から離れた地方エリアは国ごとの特色が強いように感じました。同じように日本でも地方のほうが日本らしい何かがあるのではないかと思い、2017年は国内で地方を中心に見て回ることも検討しています。
業務委託・受託案件については、広げていくことよりも既にあるお付き合いを大事にしていきたいと考えています。全体的に密度が上がるような年になればと思います。

フリーランスの引っ越しで住所変更した場合の手続き

フリーランスの引っ越しで住所変更した場合の手続きメモ。

必要な手続き

事業を継続する前提で引っ越しした場合は「所得税・消費税の納税地の異動に関する届出書」を引越し前・引っ越し先の税務署にそれぞれ提出。

[手続名]所得税・消費税の納税地の異動に関する届出手続|申告所得税関係|国税庁

注意

検索すると「開廃業手続きの提出」についても言及している記事がいくつかありましたが、廃業手続きすると1年間青色申告を使えないという指摘を税務署の方から受けました。当初は、「引越し前の税務署で廃業手続き・引越し先の税務署で開業手続き」で考えていましたが、上記の「納税地の異動手続き」に修正しました。

まとめ

税務署に確認する。