デザイナーでもgrepコマンドをサクッと使いたい!

 

こんにちは、Vimmerもある程度板についてきたLQヒロシです。

 

コーディング業務で「CSSのクラスがどのファイルでどこに使われているのかざっと知りたい」ってことありますよね。

統合開発ツールなどを使っているとツールそれぞれで検索方法があると思いますが、Vimmerである以上ターミナルで行う必要があります。そこで活躍するのが「grep」コマンド!

 

今回はターミナルで利用するUNIXLINUX)検索コマンド「grep」のご紹介になります。
なお対象がデザイナーなのでMacユーザー(ターミナル)を前提にしております。

 

grepってなんかややこしいイメージ

 

grep 使い方」などでググると結構なリファレンスが出てくるのですが、やたらオプションは多いし説明が分かりにくい!さらにfgrepだのegrepだのがあってLQLow Quallity)な私は敬遠しがちでしたが、エンジニアさんに聞いてみるとよく使うやり方は決まっているようでしたので、デザイナーに最適なgrepの使い方をまとめてみました!

 

結論、「fgrep -rn ‘検索文字列’ ファイルのパス」を使っておけば問題無い!

 

いきなりfgrepが出てきて恐縮ですが、その説明は後でさせてもらうとして、まずは簡単に使い方の説明から。

 

 

grepもfgrepも検索方法が若干異なるだけで基本的な使い方は同じになります。
はじめにコマンド、次にハイフンを付けてオプション。検索したい文字列と検索対象となるファイルパスを入力します。オプションをつけることで検索方法や検索結果の表示方法を細かく指定することができます。

 

[よく利用するオプション(grep、fgrep共通)]

r

再帰的に検索する
要するにサブディレクトリまで全て検索範囲にできるということ

n

検索結果に行番号を出力する
検索結果は、ファイル名だけでなく対象文字列が使われている箇所も抽出されるので、行番号を表示するとより分かりやすくなります

 

例えば以下のようなディレクトリ構成でCSSのクラス名を検索する場合、

 

$fgrep -rn ‘hoge’ home/assets/css/

 

と入力すれば、サブディレクトリがあっても全てのCSSファイル内のhogeクラスを検索できるというわけです。CSSルートにアクセスして以下のようにしてもOKです。

 

$fgrep -rn ‘hoge’ ./

 

例えばプロジェクトルートからだとこのようにすることもできますね。

 

$fgrep -rn ‘.hoge’ ./

 

※「.hoge」とするとCSSクラスである可能性が高いので、プロジェクトルートからでもCSSのみを抜き出しやすくなります。(jsは引っ掛かってきますが。。)

 

 

なぜgrep ではなく fgrepを使うのか

 

grepは正規表現が利用できるので、「.hoge」と「hoge」では結果が異なる場合があるため。

 

正規表現では「.」をワイルドカードと認識します。grepの場合「.hoge」は正規表現を使っていることになり、ahogebhogeという文字列が存在していると一緒に検索されてしまうのでエスケープ処理を行う必要がでてきます。

 

$grep -rn ‘¥.hoge’ ファイル名

 

その点、fgrepは正規表現が利用できないので、エスケープ処理を省くことができます。さらにfgrepの方が抽出速度が早いというメリットもあります。

 

正規表現で検索したい場合はgrepが良いですが、単純な文字列であればfgrepが良さそうですね。(ちなみにgrepで「-F」オプションを使うとfgrepとほぼ同様の機能になります。)

 

 

文字列を「’」シングルクォートで囲むのを忘れずに

 

半角スペースや「*」「?」などはシェル(ターミナル)にとって特別な意味をもつ文字列になります。これらの文字列が含まれる場合に展開されないようにシングルクォート(ダブルクォート)で囲む必要があります。

 

例えば以下の例だと検索結果が変わってきます。

$fgrep foo bar assets/css/   //foobarから検索
$fgrep ‘foo bar’ assets/css/  //foo barを検索


これはシェルにとってスペースは引数の区切り文字として展開されるためです。文字列に半角スペースや記号文字が含まれる場合は注意しましょう。

 

 

少し慣れてきたら…

 

複数の文字列を指定して検索する

$fgrep -e ‘hoge’ -e ‘foo’ /assets/css/

 

指定した複数の文字列を含む行を取り出す

$fgrep ‘hoge’ /assets/css/index.css | fgrep ‘foo’

 

なんてこともできます。

 

 

いかがでしたでしょうか。まとめてみると、そこまで難しくなさそうな気がしてきました!LQな私はこのぐらいでお腹いっぱいですが、他にも便利なオプションがたくさんあるので使ってみても良いかと思います!

 

以上、簡単ではありますがgrepの使い方のご紹介でした。

なおターミナル・vimの使い方はこちらをご覧ください。

https://blog.splout.co.jp/3249/

 

 

第11回ライトニングトーク大会を開催してみた

こんにちわ。
リエです。
 
先日第11回ライトニングトーク大会(以下、LT大会)を開催しました。
過去のLT大会の記事は下記リンクからご確認いただけます\(^o^)/
第1回目
第2回目
第4回目
第5回目
第6回目
第7回目
第8回目
第9回目
第10回目
※第3回目の記事はありません。
 
11回目の今回は今年一発目のLT大会でした。
四半期に1回の開催ですが、あっという間に開催月になりますね。
開催が近づくと、ネタどうしよう〜(TдT)という声が社内からよく聞こえます。(わたしもそのうちの1人。。)
でも、発表となるとみんなしっかり資料を作ってくるので本当にすごいです。
 
わたしは最初これにしよう!と思った内容を途中で変更したのですが、変更前の内容が他のメンバーとかぶっていました(*_*)
途中で内容を変えてよかったですw
 
今回は趣味の話よりも開発に関するお話しが多かったです。
最初に比べると、時間配分もみんなうまくなり安定した発表ができるようになったと思います。
 
みんな順番に発表し、最後は毎回恒例優勝カップ授与!
優勝おめでとうございます\(^o^)/

ちなみにこの2人は優勝常連者。
優勝カップのリボンには名前がたくさんついています(*´∀`*)
 
そして優勝カップのリボンがいっぱいになってきたので、年内のLT大会が終わったら優勝カップを新調する予定です。

徳島県神山町の桜まつり

こんにちわ。
リエです。
 
先日徳島県神山町へお伺いしてきました。
その時に桜を見に行きましたが、とてもきれいに咲いていました❀

今年は全国的に桜の開花が早いですよね。
 
神山町は桜の名所で、この時期は全国各所からたくさんの方が桜を見に来られるそうです。
桜まつりは4月1日(日)に開催されます。
鬼籠野さくら祭り情報
 
今が見頃で、本当にきれいに咲いていたのでお近くの方(遠くの方も!)ぜひ足を運んでみてはどうでしょうか(*´∀`)
桜まつりだけではなく、神山はたくさんの場所で様々な桜が咲いているので、いろんな場所で桜を見てくださいね。
桜見所マップ
 
特にしだれ桜は幻想的で見ものですよ。


 
この時期は平日でも駐車場が満車になるそうです。
渋滞する恐れがありますので、お気をつけください。
渋滞予測マップ
 
神山町に訪れた理由はまた別の記事にて書きます!

 鼻炎と寄り添い共存する2018

こんにちわ。
リエです。
 
今回のブログは鼻がムズムズするかもしれません。
ごめんなさい。(先に謝っておきます)
 
わたしはかれこれ2年ほど、通年性のアレルギー性鼻炎に悩まされております。
色々検査したのですが、原因わからず365日症状が出るので毎日お薬を飲んでいます。
お薬を飲み忘れた日は地獄です。

 
今は花粉症の時期でもあるので、花粉症の方もおつらい日々を送っていますよね。
 
この鼻炎ですが、もう治らないのかなぁと半ば諦めて自分の個性として受け入れようかなと思ったのですが、お薬で毎日眠たいし、最近鼻の皮がすごくムケちゃうしで、これじゃいい生活が送れない!と思い脱☆鼻炎を目指し色々試してみることにしました。
あと普通に鼻炎疲れですね。。(鼻炎疲れってなんやろ)
※これからのお話しはあくまで個人の意見です。参考程度にとのことご了承ください。
 

乳酸菌を取る

これは最近よく耳にする方も多いのではないでしょうか。
アレルギー対策としては免疫力を向上させアレルギーに勝つ身体づくりが大事とのこと。
その免疫力を高めることができる乳酸菌が最近売られていますよね。
わたしはそれを、毎日飲んでいます。
今で続けて1ヶ月半ぐらいですが、最低2ヶ月は続けないと効果がわかりにくいそうなので2ヶ月は飲もうと思っています。
まだ効果は実感していませんが、味は美味しいので楽しく続けています。
 

ゆるいカフェイン断ち

これはアレルギー対策というよりは体質改善になります。
効果については、ググると出てくるので割愛させていただきます。
(気になる方は、「カフェイン断ち」でググってね!)
日々そんなにカフェインを取っていたわけではありませんが(たぶん1日お茶を1〜2杯くらい)、体質改善に効果ありとのことなので、手軽に始められるしやってみようかなと思い始めてみました。
お家ではずっとノンカフェインのお茶を飲んでいたので、週末からスタート。
会社ではルイボスティーを飲むようになりました。
外でお茶する時はジュースやハーブティーにチェンジ。(本当は甘いものには紅茶が大好きですが。。)
自分でできる範囲なので、食べ物や頭痛薬(カフェインが入っているそう)や、外でいただくお茶などはありがたくいただいております。
誰かのお家に行く時はどうしようかなと思ったのですが、自分で飲み物を持参することで解決しました(゚∀゚)w
今でゆるいカフェイン断ちをして2週間ぐらいですが、最近夜すんなり眠れるようになったので効果があるのかな?と感じています。
 

保湿ティッシュを買いました

これだけ鼻炎が続いているのに、ずっと普通のティッシュで鼻をかんでいました。
そのせいで年中鼻の皮はムケておりまして(泣)←自業自得。
最近特にひどかったので、やっと奮発して鼻セレブを買っちゃいました。(お家と会社に1個ずつ常備!)
結論から言うと買ってよかった!お鼻に優しい!
鼻の皮ムケもだいぶマシになりました。

会社にはブタさん(*´ω`*)

自分にあったお薬に出会う

これは本当大切だと思います。
わたし自身、中々自分に合うお薬に出会えず、鼻炎を止める代償に眠気とつねに戦ってきました。
最近色々なお薬を試す中で、やっと自分に合うものに出会えました。
これだけでかなりQOL(生活の質)が向上しました。
 
という感じで特別なことはしていませんが、脱☆鼻炎に1歩踏み出せたかなと思っています。
治すというよりは、いかに身体に負担なく鼻炎を押さえ込んで日々楽しく過ごせるかに考え方をシフトしたら、だいぶ気持ちがラクになりました。
 
なんか鼻炎とたくさん連呼してしまったので、鼻がムズムズするブログになってしまいごめんなさい。
また脱☆鼻炎の進捗があったら書きたいと思います\(^o^)/

知らないと損をするNginx設定

以前Ubuntuに最新のnginxをインストールという記事を書きましたが、今回はその後の特殊な設定について少しご紹介いたします。

プロキシされた環境で正しいIPを取得する

Nginxの前段にELB・バランサ等プロキシがあった場合、何も設定しないと正しいクライアントのIPがとれなくなります。
この場合は下記のような設定が必要となります。
例)
プロキシサーバが複数あり、IPが10.0.1.2、10.0.1.3だった場合
/etc/nginx/conf.d/realip.conf

set_real_ip_from 10.0.1.2;
set_real_ip_from 10.0.1.3;
real_ip_header X-Forwarded-For;

※real_ip_headerはプロキシサーバから送られてくるヘッダを指定します。ほとんどの場合はX-Forwarded-Forです。
これで$remote_addrへクライアントIPが入るようになります。
また、この場合どのサーバを通って来たかは$realip_remote_addrに入っています。※Nginx 1.9.7以降

参考
http://nginx.org/en/docs/http/ngx_http_realip_module.html

Nginx + PHP-fpm環境でNginx設定でPHP設定をする。

ちょっと何を言っているかわからなくなっていますが、これにより特定のロケーションのみ設定を加えることができます。
下記ではphp.iniやini_setで設定するような値である「memory_limit」「post_max_size」「upload_max_filesize」を設定しています。

Location /foo {
    fastcgi_pass unix:/var/run/php-fpm.sock;
    include fastcgi_params;
    fastcgi_param PHP_VALUE 'memory_limit = 256M \n post_max_size = 250M \n upload_max_filesize = 200M';
}

参考
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param

今回は少しマイナーな設定を紹介してみました。
お役に立てれば幸いです。