JuliaBoxではじめるJulia言語

Juliaとは

Juliaは2009年に開発の始まった比較的新しいプログラミング言語です。
Julia がどんな言語で何を目指しているのかについては、開発初期に書かれた「なぜ僕らはJuliaを作ったか」という文章が志高くてたいへん素晴らしいです。
たとえばこんな感じ。

僕らが欲しい言語はこんな感じだ。まず、ゆるいライセンスのオープンソースで、Cの速度とRubyの動的さが欲しい。Lispのような真のマクロが使える同図象性のある言語で、Matlabのように分かりやすい数学の記述をしたい。Pythonのように汎用的に使いたいし、Rの統計処理、Perlの文字列処理、Matlabの線形代数計算も要る。シェルのように簡単にいくつかのパーツをつなぎ合わせたい。チョー簡単に習えて、超上級ハッカーも満足する言語。インタラクティブに使えて、かつコンパイルできる言語が欲しい。

そしてネット上での評判を見る限りでは実際そのような言語になりつつあるようです。曰く、簡潔で書きやすく実行速度も速い。
中でも目立つのは数学系の方々による賞賛の声です。曰く、数式を直感的に扱えてパッケージもそこそこ揃っていて可視化も容易、そしてなにより高速。

現時点のバージョンは0.6.2で活発に開発が進められています。逆に活発過ぎて仕様が安定しないという面もあるようですが。

JuliaBox ですぐにはじめる

Julia を実際に使ってみる場合、もちろん自分のローカルな環境にインストールしても構いませんが、前述の通り開発が活発なため最新を追っかけるのはなかなか大変です。また、環境によってはインストールが難しい場合もあるようです。

そこで、入門の間はJuliaBoxを使うことにします。
JuliaBox はブラウザで利用できる Julia のインタラクティブな実行環境を提供してくれます。その時々の最新版を利用できます。
Jupyter Notebook と統合されているため、データ分析などのようにコードを書きつつ記録を残すような作業に非常に便利です。もちろんコードの断片を実行しながらJuliaを勉強するのにも使えます。

Google,GitHub,LinkedIn のアカウントを持っていれば JuliaBox はすぐに使い始められます。
ログインしてみるとチュートリアルのドキュメント群が既に用意されています。

チュートリアルに含まれるコードはその場で実行して結果を見ることができます。

グラフ描くのも簡単です。

また、練習問題を解くコードをその場で書いて実行することもできます。
自分で書いたコードを保持した状態でドキュメントを更新することができるので、まさに自分のノートを作っていく感覚でチュートリアルを進めて行けます。

JuliaでFizzBuzz

ある程度までチュートリアルを進めたところで、Hello World よりもうちょっと手の込んだものということで FizzBuzz を作ってみました。
といっても、チュートリアルの制御構造の節で FizzBuzz のコード(if..elseを使った普通の解き方)が出てきます。また、FizzBuzz でちょろっとググったら関数型らしい解法も見てしまったので、それとも違う解き方を考えないといけなくなってしまいました。
そこで作ったのが以下のコード。


function fizzbuzz(n)
    all = Dict(i => string(i) for i in 1:n)
    fizz =Dict(i => "fizz" for i in filter(x->x%3==0, 1:n))
    buzz = Dict(i => "buzz" for i in filter(x->x%5==0, 1:n))
    fizzbuzz = Dict(i => "fizzbuzz" for i in filter(x -> x % 3 == 0 && x % 5 == 0, 1:n))
    merge(merge(merge(all,fizz),buzz),fizzbuzz)
end

function print_fizzbuzz(fizzbuzz)
    for key in sort(collect(keys(fizzbuzz)))
        println("$key => $(fizzbuzz[key])")
    end
end

Dictionary を merge するときに重複するキーがあれば後の方の値が使われることは merge のドキュメントで確認しています。


n が大きくなると破綻するのでダメなコードではあります。マクロを使った遅延シーケンスのパッケージがあるようなので、それを使っての改良は今後の課題としたいと思います。

デザイナーでも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^)/