rails newの先輩オススメ手順

railsプロジェクトを新しく作成する際に実行する「rails new」のオススメ手順を、会社の先輩に教えていただいたのでメモ。

前提

  • Rubyインストール済み
  • アプリケーション名:rails-app-name

手順

railsアプリケーション用のディレクトリを作成する。
→作成したディレクトリに移動

$ mkdir rails-app-name
$
$ cd rails-app-name
$
$ pwd
/Users/maetoo11/workspace/rails-app-name
$
$ ls -l
$

railsアプリケーション用ディレクトリでbundle initを実行し、Gemfileを作成する。

$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
$
$ bundle init
Writing new Gemfile to /Users/maetoo11/workspace/rails-app-name/Gemfile
$
$
$
$ ls -l
total 8
-rw-r--r--  1 maetoo11  staff  64  3  3 17:37 Gemfile

Gemfileを編集してrailsのgem を追加する。

$ vi Gemfile
  1 source 'https://rubygems.org'
  2
  3 gem 'rails'

bundle installでGemfileで指定されたgemのインストールを行う。

ここで大事なこと!

$ bundle install --path vendor/bundle --jobs=4
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies...
Using json 1.8.3
Installing i18n 0.7.0
Installing minitest 5.8.4
Installing rake 10.5.0
Installing builder 3.2.2
・・・略・・・
Installing rails 4.2.5.2
Bundle complete! 1 Gemfile dependency, 34 gems now installed.
Bundled gems are installed into ./vendor/bundle.
$
$ ls -l
total 16
-rw-r--r--  1 maetoo11  staff    63  3  3 17:37 Gemfile
-rw-r--r--  1 maetoo11  staff  2607  3  3 17:40 Gemfile.lock
drwxr-xr-x  3 maetoo11  staff   102  3  3 17:40 vendor
$
$ # vendor/bundle配下にgemがインストールされていることを確認
$ ls -la vendor/bundle/ruby/2.3.0/gems
total 0
drwxr-xr-x  34 maetoo11  staff  1156  3  3 17:40 .
drwxr-xr-x   9 maetoo11  staff   306  3  3 17:40 ..
drwxr-xr-x   6 maetoo11  staff   204  3  3 17:40 actionmailer-4.2.5.2
drwxr-xr-x   6 maetoo11  staff   204  3  3 17:40 actionpack-4.2.5.2
・・・略・・・

rails newを実行する際に、付与するオプションを決める。
→まずはヘルプを表示して、オプションを確認

$ bundle exec rails new -h
Usage:
  rails new APP_PATH [options]
Options:
  -r, [--ruby=PATH]                                      # Path to the Ruby binary of your choice
                                                         # Default: /Users/maetoo11/.rbenv/versions/2.3.0/bin/ruby
  -m, [--template=TEMPLATE]                              # Path to some application template (can be a filesystem path or URL)
      [--skip-gemfile], [--no-skip-gemfile]              # Don't create a Gemfile
  -B, [--skip-bundle], [--no-skip-bundle]                # Don't run bundle install
  -G, [--skip-git], [--no-skip-git]                      # Skip .gitignore file
      [--skip-keeps], [--no-skip-keeps]                  # Skip source control .keep files
  -O, [--skip-active-record], [--no-skip-active-record]  # Skip Active Record files
  -S, [--skip-sprockets], [--no-skip-sprockets]          # Skip Sprockets files
      [--skip-spring], [--no-skip-spring]                # Don't install Spring application preloader
  -d, [--database=DATABASE]                              # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
                                                         # Default: sqlite3
  -j, [--javascript=JAVASCRIPT]                          # Preconfigure for selected JavaScript library
                                                         # Default: jquery
  -J, [--skip-javascript], [--no-skip-javascript]        # Skip JavaScript files
      [--dev], [--no-dev]                                # Setup the application with Gemfile pointing to your Rails checkout
      [--edge], [--no-edge]                              # Setup the application with Gemfile pointing to Rails repository
      [--skip-turbolinks], [--no-skip-turbolinks]        # Skip turbolinks gem
  -T, [--skip-test-unit], [--no-skip-test-unit]          # Skip Test::Unit files
      [--rc=RC]                                          # Path to file containing extra configuration options for rails command
      [--no-rc], [--no-no-rc]                            # Skip loading of extra configuration options from .railsrc file
Runtime options:
  -f, [--force]                    # Overwrite files that already exist
  -p, [--pretend], [--no-pretend]  # Run but do not make any changes
  -q, [--quiet], [--no-quiet]      # Suppress status output
  -s, [--skip], [--no-skip]        # Skip files that already exist
Rails options:
  -h, [--help], [--no-help]        # Show this help message and quit
  -v, [--version], [--no-version]  # Show Rails version number and quit
Description:
    The 'rails new' command creates a new Rails application with a default
    directory structure and configuration at the path you specify.
    You can specify extra command-line arguments to be used every time
    'rails new' runs in the .railsrc configuration file in your home directory.
    Note that the arguments specified in the .railsrc file don't affect the
    defaults values shown above in this help message.
Example:
    rails new ~/Code/Ruby/weblog
    This generates a skeletal Rails installation in ~/Code/Ruby/weblog.
    See the README in the newly created application to get going.

今回は

  • bundle installを飛ばす
  • DBにMySQLを指定
  • turbolinksを使用しない
  • test-unitを使用しない

を指定してrails newを実行する。

2016/12/16 追記
Rails5からは
bundle exec rails new -B -d mysql --skip-turbolinks --skip-test.
らしいです。(未確認です)

$ bundle exec rails new -B -d mysql --skip-turbolinks --skip-test-unit .
       exist
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
    conflict  Gemfile
Overwrite /Users/maetoo11/workspace/rails-app-name/Gemfile? (enter "h" for help) [Ynaqdh]
       force  Gemfile
      create  app
・・・略・・・
$
$ ls -l
total 40
-rw-r--r--   1 maetoo11  staff  1392  3  3 17:48 Gemfile
-rw-r--r--   1 maetoo11  staff  2607  3  3 17:40 Gemfile.lock
-rw-r--r--   1 maetoo11  staff   478  3  3 17:48 README.rdoc
-rw-r--r--   1 maetoo11  staff   249  3  3 17:48 Rakefile
drwxr-xr-x   8 maetoo11  staff   272  3  3 17:48 app
drwxr-xr-x   6 maetoo11  staff   204  3  3 17:48 bin
drwxr-xr-x  11 maetoo11  staff   374  3  3 17:48 config
-rw-r--r--   1 maetoo11  staff   153  3  3 17:48 config.ru
drwxr-xr-x   3 maetoo11  staff   102  3  3 17:48 db
drwxr-xr-x   4 maetoo11  staff   136  3  3 17:48 lib
drwxr-xr-x   3 maetoo11  staff   102  3  3 17:48 log
drwxr-xr-x   7 maetoo11  staff   238  3  3 17:48 public
drwxr-xr-x   3 maetoo11  staff   102  3  3 17:48 tmp
drwxr-xr-x   4 maetoo11  staff   136  3  3 17:48 vendor

Gemfileを編集し、不要なgemの削除と必要なgemの追加を行う。
→今回は開発・テスト環境でwebrickではなくthinを使うようにした。(39行目)

$ vi Gemfile
  1 source 'https://rubygems.org'
  2
  3
  4 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
  5 gem 'rails', '4.2.5.2'
  6 # Use mysql as the database for Active Record
  7 gem 'mysql2', '>= 0.3.13', '< 0.5'
 ・・・略・・・
 35
 36 group :development do
 37   # Access an IRB console on exception pages or by using <%= console %> in views
 38   gem 'web-console', '~> 2.0'
 39   gem 'thin'
 40
 41   # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
 42   gem 'spring'
 43 end

vendor/bundle配下をgitで管理しないファイルにするために、.gitignoreを編集する。(9行目)

$ vi .gitignore
  1 # See https://help.github.com/articles/ignoring-files for more about ignoring files.
  2 #
  3 # If you find yourself ignoring temporary files generated by your text editor
  4 # or operating system, you probably want to add a global ignore instead:
  5 #   git config --global core.excludesfile '~/.gitignore_global'
  6
  7 # Ignore bundler config.
  8 /.bundle
  9 /vendor/bundle
 10
 11 # Ignore all logfiles and tempfiles.
 12 /log/*
 13 !/log/.keep
 14 /tmp

bundlerの設定を確認する。
→最初のbundle install時に指定したオプションが設定されている。
→以降、このプロジェクトディレクトリで実行するbundlerはこの設定を使用する。

$ cat .bundle/config
---
BUNDLE_PATH: vendor/bundle
BUNDLE_JOBS: 4
BUNDLE_DISABLE_SHARED_GEMS: '1'

bundle installを実行する。

$ bundle
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.5.0
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.8.4
・・・略・・・
Bundle complete! 11 Gemfile dependencies, 53 gems now installed.
Bundled gems are installed into ./vendor/bundle.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:
<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

これでrails newのオススメ手順は終わりです。

新しいRailsプロジェクトを作成する

何も思い出せなかったので、自分のメモ用です。
こうしたほうがいいよって部分があれば教えていただきたいです。

前提

  • rbenvを使用している
  • 既存のRailsプロジェクトとは違うバージョンのRailsを使用する
  • Ruby2.3.0+Rails4.2.5を使用する
  • 作成するアプリ名は「hoge」とする

実際の作業

現在のRubyのバージョンを確認。

$ rbenv versions
  system
  2.1.2
* 2.1.5
  2.2.2

2.3.0がインストールできるバージョンの一覧にない。

$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  ・・・(略)・・・
  2.2.0
  2.2.1
  2.2.2
  2.2.3
  2.3.0-dev
  jruby-master+graal-dev
  jruby-1.5.6
  ・・・(略)・・・

ruby-buildをupdateする。

$ brew upgrade ruby-build
==> Upgrading 1 outdated package, with result:
ruby-build 20160130
==> Upgrading ruby-build
==> Installing dependencies for ruby-build: pkg-config, openssl
・・・(略)・・・
🍺  /usr/local/Cellar/ruby-build/20160130: 196 files, 110.1K, built in 4 seconds

2.3.0がインストールできるバージョンの一覧に出た!

$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  ・・・(略)・・・
  2.2.4
  2.3.0-dev
  2.3.0-preview1
  2.3.0-preview2
  2.3.0
  2.4.0-dev
  jruby-1.5.6
  jruby-1.6.3
  ・・・(略)・・・

Ruby 2.3.0をインストール

$ rbenv install 2.3.0
Downloading ruby-2.3.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2
Installing ruby-2.3.0...
Installed ruby-2.3.0 to /Users/****/.rbenv/versions/2.3.0

インストールされたことを確認

$ rbenv versions
  system
  2.1.2
* 2.1.5
  2.2.2
  2.3.0

使用するRubyのバージョンを2.3.0に切り替える

$ rbenv global
2.1.5
$ rbenv global 2.3.0
$
$ rbenv versions
  system
  2.1.2
  2.1.5
  2.2.2
* 2.3.0

Railsのgemをインストール(最新が欲しかったので、バージョン指定なし)

$ gem install rails --no-document
Fetching: railties-4.2.5.1.gem (100%)
Successfully installed railties-4.2.5.1
Fetching: rails-4.2.5.1.gem (100%)
Successfully installed rails-4.2.5.1
2 gems installed

--no-document については下記URLを参照。
gemのインストールで`--no-document`を付けると77倍早い - Qiita

カレントディレクトリにRailsアプリケーションを作成(READMEのみのリポジトリが作成されていたため、事前にgit cloneしておいた)

$ rails new . -d mysql
       exist  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      ・・・(略)・・・
         run  bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies.....
Installing rake 10.5.0
・・・(略)・・・

起動してみる

$ rails s
=> Booting WEBrick
=> Rails 4.2.5.1 application starting in development on http://localhost:3000
・・・(略)・・・

ActiveRecord::NoDatabaseErrorになる。
→まだDBを作成してないから当たり前。

DBを作成する。

$ rake db:create
$ 
$ #databeseが作成されたことを、mysqlコンソールから確認する。
$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.6.27 Homebrew

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+----------------------------------------+
| Database                               |
+----------------------------------------+
| mysql                                  |
| hoge_development                       |
| hoge_test                              |
+----------------------------------------+

再度 rails s で起動し、http://localhost:3000/ にアクセスすると、下記のような画面が表示される。

f:id:maetoo11:20160223144247p:plain

アプリケーションの作成はここまで。

Geek Women New Years Party 2016 でLTをしました

Geek Women New Years Party 2016というイベントが先週の金曜日(1/15)に開催され、 イベントの中でLTをさせていただきました。

eventdots.jp

LT内容について

www.slideshare.net

私が働いている会社のCTOについてお話しました。
発表後に「CTO素敵ですね!」と声をかけていただいたのが嬉しかったです。
ほんとうに、うちのCTOは素敵なんですよ!!!

ペコッターについて

よくお声がけしていただくのですが、 私はペコッターの開発者ではありません。
ペコッターのキャラクター「はらぺこ君」が大好きすぎて、はらぺこエヴァンジェリストを勝手に名乗っています。

お菓子神社について

下記の記事を参考に、社内にオフィスグリコのようなお菓子置き場を作っています。
チーム開発 - 3年くらいお菓子神社運営してきた - Qiita
オフィスグリコよりも、もっと少量を気軽に食べられる状態をつくりたいと思って始めました。


女性がたくさん集まったキラキラしたイベントでした(・∀・)
女性のコミュニティ、色々あるんですねー。

重複したレコードのINSERTを防止する

前にやっていたブログから移行してきた記事です。

idとcreated_atだけが異なるレコードが重複して登録されることがあって困っていた。
同じレコードがないときはINSERT、同じレコードがある場合はUPDATEが実行されるようにしたい。
例として以下の様なテーブルを用いて説明する。

work_itemsテーブル

id created_at work item user
1 2015-08-25 14:59:00 1 ホチキス やまだ
2 2015-08-28 19:04:00 1 はさみ たなか
3 2015-08-28 19:35:00 2 はさみ やまだ
4 2015-08-28 21:15:00 2 はさみ たなか

※例のためのテーブルなので構成がテーブルとしておかしいです。

下記を参考に実装する。
MySQL で INSERT と UPDATE を1文で実現する ~ ON DUPLICATE KEY UPDATE 編~ | UB Lab.

MySQLのユニーク制約とは?
ユニークキー制約(UNIQUE) - テーブルの作成 - MySQLの使い方

今回はworkとitem両方が同じものは登録したくない。
→workとitemの2つでユニークになるようにしたい。

複数カラムにユニーク制約をつけたい!
ActiveRecord4のバリデーションで複数カラムにユニーク制約を付ける方法
Rails でユニーク制約 - @tmtms のメモ

元々存在するテーブルなので、ユニーク制約を追加する。

class AddUniqueToWorkItem < ActiveRecord::Migration
  def change
    add_index :work_items, [:work, :item], :unique=>true
  end
end


・・・ちょっとまった!!!
元々workとitemが重複しているレコードがあるのに後からユニーク制約つけようとしたらmigrateはどうなるんだ?!?!

実際にやってみた!

Mysql2::Error: Duplicate entry '21-3' for key 'index_chat_work_items_on_work_and_item': CREATE UNIQUE INDEX `index_chat_work_items_on_work_and_item`  ON `work_items` (`work`, `item`) /test/db/migrate/20150831000000_add_unique_to_work_items.rb:3:in `change'

わーい(∩´∀`)∩ワーイ
落ちたー!

『ALTER IGNORE』を使えば大丈夫そうだ!
複数カラムでユニークキーを作る - 揮発性のメモ

過去データが書き換わってしまう(重複していた場合は先にあるほうが残る)がOKであるかはサービスやプロジェクトによると思います!

class AddUniqueToWorkItem < ActiveRecord::Migration
  def up
    sql = "ALTER IGNORE TABLE work_item ADD UNIQUE duplicate_prevent (work, item);"
    ActiveRecord::Base.connection.execute(sql)
  end

  def down
    sql = "ALTER TABLE work_item DROP INDEX duplicate_prevent;"
    ActiveRecord::Base.connection.execute(sql)
  end
end


これであとはINSERTするときにON DUPLICATE KEY UPDATEすればOKだ♪

now = Time.now.strftime("%Y-%m-%d %H:%M:%S")
query = "INSERT INTO `work_items` (`created_at`, `work`, `item`, `user`) VALUES ('%s', %d, %s, %s) ON DUPLICATE KEY UPDATE created_at = `%s`"
query = query % [
  now,
  [workの値],
  [itemの値],
  [userの値],
  now
]
ActiveRecord::Base.connection.execute(query)


・・・と思ったら、パーティションロックがかかるらしいorz
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.5.3 INSERT ... ON DUPLICATE KEY UPDATE 構文

該当テーブルのINSERTでユニーク制約違反例外が発生したときに無視する、という方針に変更。

begin
  WorkItem.create(
    work:    [workの値],
    item:     [itemの値],
    user:     [userの値]
  )
rescue ActiveRecord::RecordNotUnique => exception
  # ユニーク制約違反は無視する
end

これで重複記録はなくなるはず。


メモ

hubotをHerokuからAWSのEC2へお引っ越し、そして常駐化

前にやっていたブログから移行してきた記事です。

Herokuが課金されちゃうよ☆というメールが来るのでEC2へお引っ越しすることに。
EC2はセットアップ済みでした。

こちらを参考にしました。
Hubot を Amazon EC2 にセットアップし、Slack と連携する! - Qiita


Amazon Linuxにログインする。
hubot用のディレクトリを作成し、botのコードをgithubからpull。

Node.jsをインストール

$ sudo yum -y install nodejs npm --enablerepo=epel

※npmがないとhubotさんやCoffeScriptがインストールできない。

HubotとCoffeeScriptをインストール

$ npm install -g hubot coffee-script


botのディレクトリでnpm install

$ npm install

下記のようなエラーが出たので、node-gypをインストール

> node-gyp rebuild
Traceback (most recent call last):
  File "/usr/bin/gyp", line 15, in <module>
    import gyp
ImportError: No module named gyp
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit 
・・・
$ npm install -g node-gyp

bin/hubotで起動しようとしたらWarningが出て起動しないので、momentをインストール。

hubot> [Wed Aug 12 2015 03:14:08 GMT+0000 (UTC)] ERROR Unable to load /home/ec2-user/mybot/scripts/example: Error: Cannot find module 'moment'
  at Function.Module._resolveFilename (module.js:338:15)
  at Function.Module._load (module.js:280:25)
  at Module.require (module.js:364:17)
  at require (module.js:380:17)
・・・

※下記を参考にしました。
Node.js - throw new Error("Cannot find module '" + request + "'"); - Stack Overflow

$ npm install moment --save


無事起動!!ヽ(=´▽`=)ノ

Slack用アダプタをインストール

$ npm install hubot-slack --save


Slackのトークンを設定
一番上に貼ったQiitaの記事だとSlack側の設定画面とか内容がちょっと古いので下記を参考にしました。
SlackのHubot Integrationが知らぬ間にアップデートされてた - Qiita

$ export HUBOT_SLACK_TOKEN=Slackの設定画面で指定されたトークン


hubotを起動

$ bin/hubot -a slack

f:id:maetoo11:20160103212703p:plain

これで引っ越し完了!
・・・と思ったらこいつ常駐化しない∑(゚д゚lll)ガーン
定期的に落ちるorz

下記を参考に常駐化させます。
Hubotをインストール、hipchatと連携し、foreverでデーモン化(CentOS6.4) - Qiita

foreverをインストール

$ npm install forever -g


起動用のシェルrun.shを作成

#!/bin/bash

export HUBOT_SLACK_TOKEN=Slackの設定画面で指定されたトークン
forever start -c coffee node_modules/.bin/hubot --name hubot -a slack

botのディレクトリ直下に作成しました。

run.shを実行するとhubotが常駐化します。

$ ./run.sh

プロジェクトのRubyバージョンがアップデートされていたときにやったこと

前にやっていたブログから移行してきた記事です。

しばらく見ていない間にプロジェクトのRubyバージョンがアップデートされていました。
どうすればいいか分からなくなって焦ったのでまとめておきます。

rbenvやらHomebrewやらはインストールされている前提。

# バージョン一覧の表示
$ rbenv install --list
Available versions:
  1.8.6-p383
  1.8.6-p420
  ・・・
  2.1.5 ←今回は2.1.5をインストールします
  2.1.6
  2.2.0-dev

# Rubyのインストール
$ rbenv install -v 2.1.5
Downloading ruby-2.1.5.tar.gz...
HTTP/1.1 200 OK
・・・
Installing ruby-2.1.5...
checking build system type...
checking xxxxxxx
・・・

# bundlerをインストール
$ gem install bundler
Fetching: bundler-1.10.6.gem (100%)
・・・

# 必要なバージョンのgemをinstall
$ bundle install
Fetching gem metadata from http://rubygems.org/........
・・・
Installing rake 10.3.2
Installing i18n 0.6.9
Installing xxxxxxxxx
・・・

# 使用するRubyのバージョンを切り替える
$ rbenv rehash
$ rbenv versions
  system
* 2.1.2
  2.1.5 (set by /Users/hoge/.rbenv/version)
$ rbenv global 2.1.5
$ rbenv versions
  system
  2.1.2
* 2.1.5 (set by /Users/hoge/.rbenv/version)

以上です!


上記とは別の話ですが、各アプリはこまめにアップデートしたほうがよいのですね。

# Homebrewでインストールしたものをアップデート
$ brew upgrade

homebrewアップデート/アンインストール - CROSS HOPE

レディなエンジニアへ!ネイルのススメ♡

この記事は
Geek Women Advent Calendar 2015 - Adventar
2日目の記事です。


みなさんは「ネイル」というとどのようなことを思い浮かべますか?
私は「ネイル=キラキラ女子がするもの」というイメージを持っていました。
しかし、今年の8月頃に何事もチャレンジ!という思いでジェルネイルをしてみたところ、キラキラ女子じゃないエンジニアとしてもメリットがあったので女性エンジニアのみなさんにオススメしたいと思います。

筆者情報

  • 女性エンジニア
  • ベンチャー企業勤務
  • 最近オフィスが表参道になりました
  • キラキラ女子度: 低めです
    具体例)週の半分くらいはほぼスッピンで出社しています

ネイルをしてよかったこと

綺麗とか可愛いという利点は置いていて、それ以外の良かったことを書き出します。
ちなみに、ネイルをしたおかげで昨日まで動かなかったコードが動くようになったというような奇跡は起こりませんでした。

爪をむいたり噛んだりする癖がなくなった

ジェルネイルは爪にジェルを塗り、専用のライトをあてて硬質化させます。
そのため、そのままの爪に比べ、爪が丈夫になるのです。

私には小さい頃から、考え事をしたりイライラしたりすると爪をむいたり噛んだりしてしまう癖がありました。
残念なことにそれは就職してからも直らず、エラーログを追いながら爪をむく、思い通りに動かないスクリプトデバッグしながら爪を噛むなどしており、1ヶ月の半分くらいは爪がボロボロという状態でした。
しかし、ジェルネイルをしてからは硬くてつるつるの爪なのでむくことも噛むこともしなくなりました。

ネイルが女性と話すきっかけになる

爪を綺麗にしていると、女性と話すきっかけになります。
「わーネイル可愛いですね」と話しかけてもらったときは、ファッション誌でしか見たことなかった会話が自分の身にも起こった!と感動しました。

タイピングで爪が割れなくなった

私はタイピングが荒い上に爪が弱くて、タイピング中に爪が欠けたり割れたりすることがありました。
ネイルを始めてからはまだ1回も割れていないです。

残念ながら、タイピングがソフトになったわけではなさそうです。
(たまにEnterキーを押す勢いで机が揺れています)

ネイルを続ける方法

でもネイルサロンってこまめに通わなきゃいけないんでしょ?面倒だなぁ・・・。と思ったあなた!
はい、通うのは面倒です。
ここでは面倒くさがりな私なりに考えたネイルを続ける方法を紹介します。

自宅最寄り駅からの帰り道中にあるネイルサロンに通う

帰宅途中に寄れるのであれば、通う面倒くささが1/3くらい減ります。

ネイルブックでデザインをあらかじめ選ぶ

ネイルサロンでかかる時間を短縮するために、デザインをあらかじめ決めてからサロンに向かうのがオススメです。
ネイルをオフ(落とす)時間や爪をケアする時間は減らせませんが、デザインを決める時間は減らせます。

私は、ネイルブックというネイルデザインを集めたアプリを使用して、こういうデザインにチャレンジしたいというのを隙間時間に考えておきました。
ネイルブックは、自分の気に入ったデザインをクリップ(お気に入り登録)しておくことができるので便利です。

nailbook.jp

Web予約

電話をしなくて済むので予約の気持ち的なハードルが下がります。

チャレンジしたネイル

ここでは私がチャレンジしたネイルのデザインを紹介します。
初回の写真は撮っていなかったのでありません。

2回目 3回目
4回目 5回目
6回目

まとめ

可愛いだけじゃない、女性エンジニアとしてもメリットがあるネイル。
皆さんもはじめてみませんか?
綺麗な指先から生み出されるコードはきっと美しいはず・・・!

女性エンジニア+ネイル=レディなエンジニア
を目指したいと思います♡

♡おまけ♡

ネイルで爪を綺麗にしたら、ちょっと良いお店にご飯を食べに行きましょう!
そんなときにはペコッターというグルメQ&Aアプリでお店を探すのがオススメです☆
素敵なネイルで楽しい女子会♡というのもいいかもしれないですね。

pecotter.jp