フリーランス4年目の2017年前半振り返り
個人開発
いくつか個人開発でサービスをつくりました。最低限の機能のみですが、もやもやっとしたアイデアから機能を検討して開発を行いリリースするまでのプロセスに慣れることができました。一方で、リリースしたところである程度満足してしまい「さあどうしようか」となったところで、次のサービスの開発に移り、サービスのほとんどが自己満足で終わって使ってもらえない状態でした。その反省から、2017年の後半はプロダクトの成長方法の学習をひとつのテーマに置いてみたいと思います。
情報収集
世界を知りたい、特に先進国の現状を知りたいと思い、ヨーロッパを一周しました。街がどんなつくりか、地下鉄にどうやって乗るか、スーパーでは何が売っているかなど、気になることを見てまわりました。2017年の後半は、まだ行ったことのない日本の地方都市に行きたいと考えています。
業務委託
お世話になっている会社で週2~3日ほど常駐で開発に参加させていただいています。上長が優秀な方で、エンジニアが働きやすく開発に集中できる環境をつくっていただいています。開発に関しては、やりたいことが決まっていて、それ以降をまるっと任せていただいている状態なので、今後の課題として設計から実装まで個人レベルの底上げがあります。
その他
株式投資・仮想通貨・人工知能といった分野にも経験・研究のため取り組んでみました。株式投資は合わなかったためか、ほとんど放置している状態です。その他の2つについては、サービスを利用したりAPIを使って簡単に動くものをつくってみたりしている状態です。今後は、寄り道をしてもう少し趣味の範囲に落とし込み開発を楽しめる方法を考えてみたいと思います。
Rails5(Turbolinks5)でGoogle Analyticsを設置
Rails5(Turbolinks5)の環境でGoogle Analyticsを設置した時のメモ。
Turbolinks Compatibilityに掲載されている情報に古さが出てきていたので他の方法を調べていたところ、turbolinksのissuesで同じテーマのやりとりを見つけたのでこちらを参考にしました。
参考:Google analytics best practice? #73
<head> ... <% if Rails.env.production? %> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga("create", "UA-XXXXX-Y", "auto"); </script> <% end %> </head>
document.addEventListener "turbolinks:load", (event) -> if typeof ga is "function" ga("set", "location", event.data.url) ga("send", "pageview")
AdSenseのissueは下記のリンクに上がっています。
参考
DEPRECATION WARNING: alias_method_chain is deprecated
Rails5で作業中に下記のWARNINGが表示されました。
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super.
alias_method_chainが使用されているgemを調べます。
まずgemのインストール先を確認。
$ gem environment
インストール先のディレクトリに移動してalias_method_chainでgrepをかける。
$ grep -lir alias_method_chain ./
該当するgemを発見。
githubのリポジトリでchangelogを見たらfixされていたのでgemをアップデート。
WARNINGが表示されなくなったことを確認できました。
参考
Amazon EC2にSFTPで接続
Amazon EC2に「FTPで接続したい」と言われた時のメモ。
作業ユーザーを作成
$ sudo useradd hoge $ sudo passwd hoge
$ sudo visudo
hoge ALL=(ALL) ALL
鍵の作成
$ sudo su - hoge $ mkdir ~/.ssh $ ssh-keygen -t rsa $ mv id_rsa.pub authorized_keys $ chmod 600 authorized_keys $ chmod 700 ~/.ssh
秘密鍵を適当な名前でローカルに保存。
確認
接続を確認
ssh -i hoge.pem hoge@xx.xxx.xx.xx
書き込み権限を許可
sudo chmod o+w /var/www/html/huga
その他
エラー:Permissions 0644 for ‘hoge.pem’ are too open.
$ chmod 0600 hoge.pem
参考
NameError: uninitialized constant AWS
「NameError: uninitialized constant AWS」のエラーが出た時の対応メモ。
エラー内容
NameError: uninitialized constant AWS
原因
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環境の構築
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