Elasticsearchで簡単な検索をしてみる


リンクバルの井上です。
システムのデータの規模が大きくなるにつれて必ず問題になるのが検索パフォーマンスかと思います。
今回はその改善で利用されるLuceneベースの全文検索・解析ができるElasticsearchで簡単なユーザ検索をしてみます

##ElasticSearchとは?
Elastic社提供のLuceneベースのマルチテナント・スキーマレスで
クラウドに最適化されたサーチエンジンサーバー

##ElasticSearchの導入メリット
・全文検索が高速
・導入しやすい
・プラグインが豊富
・RESTfulAPI
・データの可視化が簡単(Kibanaの導入)

##ElasticSearchを入れる

###Javaのinstall

brew install java

###ElasticsSearchのinstall
今回は最新の5.0ではなく2系を使います
brew install homebrew/versions/elasticsearch24

###kibanaのinstall
ElasticSearchにversionを合わせないとエラー起こるのversion指定してinstall

brew install homebrew/versions/kibana44

###kibanaのplugin Senseをinstall

/usr/local/opt/kibana44/bin/kibana plugin --install elastic/sense

###Elasticsearchの起動

/usr/local/bin/elasticsearch

port 9200で起動されるので下記でアクセスできます
http://localhost:9200

###kibanaの起動

/usr/local/bin/kibana

こちらはport5602で起動します
http://localhost:5601

##検索機能を使う

###indexの作成
kibanaのSenseでsample_indexという名のindexを作成します。
““POST sample_index
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-29-12-06-07

###mappingの作成

PUT http://localhost:9200/sample_index/_mapping/user
 {
    "user" : {
        "properties" : {
           "name" : {"type" : "string" },
            "message" : {"type" : "string"}
        }
    }
}

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-25-15-43-54

####データの登録
““POST http://localhost:9200/sample_index/user
{
“name”: “user”,
“message”: “user_message”

}
““
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-25-15-43-54

####検索してみる

GET http://localhost:9200/sample_index/_search?pretty=true
{
  "query" : {
    "simple_query_string": {
       "fields": ["name"],
       "query": "test1"
    }
  }
}

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-25-15-57-16

ユーザの検索ができました!
次回はkuromojiを使った日本語全文検索をやりたいと思います
リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。


私が愛してやまないWordPressスターターテーマ「Underscores」


WordPressに詳しい人には、今更すぎる内容です

最近WordPressのテーマを1から作る案件が多いのですが、WordPress経験がなさすぎて苦労しております。
とりあえず「スターターテーマ」と呼ばれるものをベースに作成するですが、これも様々なテーマがあって迷いました。
これまでに、以下のテーマが候補に上がりました。

Bones

bones

http://themble.com/bones/

ググってみたところかなり有名とのことで上記サイトにアクセスしましたが、目に飛び込んできた骸骨のイラストが気に入らない為不採用となりました。

Sage

sage

https://roots.io/sage/

こちらもWebサイトを見てみると、gulpのセットアップ済みでデザインもスッカラカンなのは嬉しいですが
Docsを見ると、インストール方法が無駄にSUTAIRISSHUだった為、今回はお見送りとさせていただきました。
私は情弱なので、zipをアップロードしてボタン押すだけじゃないと嫌です。あとBootstrapは使わない予定(多分)なので却下です。

JointsWP

jointswp1

http://jointswp.com/

Sageと同様のイケてる雰囲気を醸し出しておりますが、導入方法はもっとシンプルです。

しかし
jointswp2
今はそういうのはいらないので、そっとブラウザを閉じました。

Underscores

underscores

http://underscores.me/

こちらもかなりメジャーなテーマのようです。レイアウトも何もない真っ白です。
といってもSassのディレクトリ構造はなかなか気が利いており、便利クラスやミックスインも取り揃えています。
そして余計なものは一切入っていないので、かえってやりやすいです。


結局、Underscores + gulp + Bourbon(Neat)でいくことにしました。
結局面倒になって、Bootstrapさんのお世話になる予感がしなくもありませんが…

<

p style=”padding: 4em 0; text-align: center;”>クリック!株式会社リンクバルでは一緒に働くエンジニアを募集中です!クリック!


Google Wifiについて


前回に引き続きWifiネタになってしまいますが、今回はGoogle Wifiについて書きたいと思います。
先日Google社がwifiルータを発表しました。
その名もGoogle Wifi(そのまんまですね・・・。)

一般的なWifiルータと同様の使い方はもちろん可能ですが、
現状普及している機器にはないさまざまな機能が搭載されています。

###802.11s ワイヤレスメッシュネットワークについて
前回の記事では出てこなかった規格になりますが、
そもそも802.11sとはなんぞや?というところを記述します。

端的にいいますと、複数のアクセスポイント(Wifiルータ)を設置し、メッシュ状に各アクセスポイント間を結ぶことで電波のカバー範囲を強化するという技術になります。
たとえば、広いオフィスのどこにいても同じアクセスポイント設定でLANへの接続が可能となります。

###Network Assist機能について
複数設置を行うことで快適なWifi環境を構築できることは前述のとおりですが、単体設置であっても最適化を行う機能が搭載されています。
それがNetwork Assist機能です。
Wifiルータの設定を行ったことがある人は見たことがあるかと思われますが、Wifiにはチャンネルという概念があり、規格ごとに複数のチャンネルが割り当てられています。
複数あるチャンネルの中から最適なチャンネルを自動で選択し、速度低下を防止する仕組みとしてこのNetwork Assist機能が搭載されているそうです。

###最後に
発表を見た限りですが、さすがGoogle社が出す製品で先鋭的!と感じました。
あとは気になる価格と発売日ですが、米国ではすでに予約が始まっており1台129ドル、3台セットで299ドルとのことです。
日本向けの展開が待ち遠しい限りです。

リンクバルはいろいろな技術を習得する機会に恵まれています。
今までの経験をベースにさらに新しいことにチャレンジしたい方、ぜひ応募お願いします。
採用情報はコチラ


【11/25開催】Ruby on Rails初心者ハンズオン#2~ToDoアプリを作ってみよう!~ フォローアップ


こんにちは、リンクバル 技術部 エンジニアの中村です。

弊社主催の2016/11/25(金)「【11/25開催】Ruby on Rails初心者ハンズオン#2~ToDoアプリを作ってみよう!~」のフォローアップを掲載いたします。

「Ruby on Rails初心者ハンズオン」の続編の勉強会として、「タスク管理アプリ」の開発を通して、Ruby on Railsを学習します。

シンプルなアプリケーションですが、Ruby on Railsを始めて学ぶ上で、役立つエッセンスがたくさん詰まっています。

募集要項

https://linkbal.connpass.com/event/44224/

機能一覧

  • タスクの一覧表示
  • タスクの新規追加
  • タスクの編集
  • タスクの削除
  • タスクの完了チェック

スライド

完成版のソースコード

後で、復習ができるように、ソースコードを共有いたします。

https://github.com/ynakayu/todoapp

開発環境構築

今回は、ブラウザのみで、プログラム開発ができる、クラウドIDE「Codeanywhere」の、無料プランを利用します。

https://codeanywhere.com/

多くのユーザーに利用されている

02_codeanywhere_%e5%88%a9%e7%94%a8%e8%80%85%e6%95%b0

※前回の勉強会で使用した、nitros.io はサービス終了。AWSに買収されて今後が期待されるCloud9 は、クレジットカード登録が必須となったため、今回は利用しません。

トップ

サービスサイトへ遷移

https://codeanywhere.com/
※ Google Chromeの利用を推奨します。

01_codeanywhere_top

「Sign up for free」をクリック。

登録情報入力

03_codeanywhere_%e7%99%bb%e9%8c%b2%e6%83%85%e5%a0%b1%e5%85%a5%e5%8a%9b

  1. メールアドレス
  2. パスワード
  3. 私はロボットではありませんをチェック
  4. Register をクリック

Welcome

04_codeanywhere_welcome

here をクリック。

コンテナの作成

05_codeanywhere_container

  1. Container を選択
  2. Name: Techlink
  3. Search : ruby
  4. Ruby CentOS 6.5 を選択
  5. CREATE をクリック

06_codeanywhere_create_container

IDEのレイアウトを使いやすいように変更しておくと便利

07_codeanywhere_%e3%83%ac%e3%82%a4%e3%82%a2%e3%82%a6%e3%83%88

View > Layout > Split Horizontal

IDEの説明

08_codeanywhere_ide%e8%aa%ac%e6%98%8e

おわりに

Ruby on Rails の基礎を学ぶ上で、基礎となる要素が含まれた、TODOアプリの開発を勉強しました。Ruby on Rails で開発する上きっかけになればと思っております。

リンクバルでは、テクノロージーと人を繋ぐ勉強会テックリンクを今後も開催予定です。勉強会で取り上げて欲しいテーマなどありましたら、アンケートにご記載くださいませ。

また、リンクバルでは、Ruby on Railsで開発された自社サービスを一緒に開発するエンジニアを募集しておりますので、興味を持っていただきましたら、ぜひお問い合わせください!


DigitalOceanを使う5つのメリット

DigitalOcean

リンクバル技術部の川畑です。最近というより1・2年前から海外で流行っているVPS DigitalOcean についてまとめました。IaaS界の巨塔 AWS と比較して良いところを5つか列挙させて頂きます。

コストが安い!

  • DigitalOceanは1番下のスペックのDroplets(AWSのEC2インスタンスみたいなの)で比較した場合、1時間あたり $0.007 1月あたり $5になります。
  • AWSの1番下のスペックのEC2インスタンスだと、t2.nanoが1時間あたり $0.01 1月でEBS 8GBで起動すると $14.64になります。

続きを読む


【WordPress】固定ページで親子関係を探る


こんにちは!社会人2年目エンジニアの関です!
先日WordPressの開発を行っていたとき、私はあることに気づきました。

「固定ページには親子関係を判定するための関数がない・・・だと・・・!」

そう。私の大好きな「cat_is_ancestor_of」のような関数が、固定ページの場合だとWordPressデフォルトで備わっていなかったのです。
そこで今回は、固定ページの親子関係を判定するための関数を作っていきたいと思います。

固定ページでの親子関係の作り方
WordPressデフォルトの機能として、以前ご紹介したカテゴリー同士での親子関係付けの他に、固定ページでの親子関係付けを行う機能も備わっています。
設定方法はカテゴリのときと同じく、とっても簡単な2ステップのみです。

続きを読む


カスタマーサポートツール「HelpScout」を使ってみた


HelpScoutの導入

つい先日、社内のプロジェクトでサイトをローンチした際に、社内全体からたくさんの問い合わせを受けることがありました。

その時に導入したのが「HelpScout」というカスタマーサポートツールです。
https://www.helpscout.net/

2週間くらい無料で使えたので試しに試験導入しました。

良かったところ

このツールは、特定のメールアドレス宛にメールを送るとHelpScout上で問い合わせの管理を行うことができます。
今までこう言ったツールは使ったことがなかったのですが、実際に使ってみると、問い合わせがメールに埋もれることなく管理することができました。

_9__assigned_-_help_scout

各問い合わせに対して優先度付けをしたラベル(low、high、doing等)を貼ることで、状態管理も見やすいことも利点だったと思います。

気になったところ

やや使いづらいところとしては、メーラー上でメールを返信するとHelpScout上に新しい問い合わせとして起票されてしまうことや、HelpScout上で返信したメールをメーラーで見ると返信したメールが見れなかったところだったと思います。

ステータスを「Close」にした問い合わせの返信があった場合、「Open」に自動で変更される機能も面白かったと思いました。
例を上げると、「ありがとうございました。」というメールが来ると新しい問い合わせとして再Openします。

おわりに

簡単に導入することが出来る、使い勝手も良く、現在も使っているHelpScoutのご紹介でした。
カスタマーサポートツールを使ったことのない方や、少し使ってみようと思われた方は、導入も簡単ですので一度使ってみるのも良いかも知れません。

リンクバルではエンジニアを募集していますので、ご応募お待ちしております。
採用ページはこちら


CEATEC JAPAN 2016 イベントレポート


アジア最大級の最先端IT・エレクトロニクス総合展のCEATEC JAPAN 2016参加について、リンクバルの技術部中村がレポートいたします。

参加目的は、新規事業や既存業務に使えるアイディアに関するテクノロジの情報収集です。

今年のトレンドは、フィンテック、A.I.(機械学習)、 IoTでした。

特に印象に残った講演1件と展示3点、ついて記載致します。

講演:金融機関のオープン化が示す未来の可能性

MUFGデジタルイノベーション推進部 シニアアナリスト藤井達人氏

2つの大きな波

  • 金融サービスは、モバイル、AIでより便利に。
  • 金融サービスへの新規参入増加する。

MUFG スタートアップ・アクセラレータ設立

  • 銀行APIを題材としたハッカソン開催
  • オープンイノベーションメディア開設(造語)

FinTechがもたらすもの

  • 今まで貸せなかった、会社に融資。
  • Cabbage, Inc. ビッグデータ融資サービス。 審査して翌日入金。
  • 現時点、北米のリテールバンク1%のシェア 2020年 20-30%

フィンテック投資の対象領域。

  • 今、個人、中小企業。
  • これからは、大企業向けへ。

FinTechはブームか?

  • 技術進化のモメンタムは不可逆の事象。

Whats’ the next thing?

  • AIがサービス、社内プロセスのあらゆる部分で活用される。
  • 量子コンピューティングが金融サービスの質を変える

銀行API

  • 欧州、Banking APIの試行/標準化の動き。

今後どうなっていくのか予想

  • 来年以降、APIの本格普及が始まる。ただし、開発の状況、法制度による
  • 競争優位性のアクション
  • APIのアグリゲータの出現
  • ブロックチェーン
  • 約束手形電子化
  • 小切手電子化
  • MUFGコイン
  • Coinbase社への出資

ブロックチェーンは金融サービスで活用できるのか?

  • パブリックチェーン「を」活用
  • コンソーシアム/プライベートで構築

Innovation

  • 金融機関はデジタルカンパニーへ
  • サービスの外部委託から内製化
  • テクノロジーR&Dへの取り組みを強化
  • デジタル人材の採用、人事制度の対応も。
  • デザイン・シンキングの取り組み
  • デベロッパーコミュニティー

三菱東京UFJ銀行のようなメガバンクが、銀行APIをすでに用意していて、パートナーと協業することで成長を目指しているところから、この動きは不可逆なものだと思いました。

展示:村田製作所 RFIDソリューション

紙の台紙に導電性ペーストでアンテナを印刷し、RFIDチップと接続したものを、希望者全員に配布していました。

ceatec_2016_rfid

台紙を、専用端末にかざすことで、ユーザーをトラッキングできます。

スマホアプリを入れて、なにか操作してください、という方法もありますが、ハードルはあがります。このソリューションでは使い捨てのカードをユーザーに配ればいいだけなのは、手軽さがあると思いました。

混雑情報の把握や、ユーザー行動トラッキングの、1ソリューションとして、利用できる可能性を感じました。

RFIDと端末の距離はどれくらいまで届くのかですが、リーダー側、RFID側の構成によるため、個別相談になるとのこと。

また、気になる価格ですが、ロット数によって違うため、お問い合わせくださいとのことでした。ただ、CEATECの来訪者の希望者に無料で配っているところを見ると、実用レベルの価格帯なのではないかと思いました。

ファーストリテイリング社の衣料品ブランドGUでも、RFIDを使ったセルフレジの試験運用が始まっているところから、RFIDの普及もいよいよ、本格的になってきそうだとも考えられます。

参考:ムラタのRFID

参考:GU SHOP blog

展示:激安3Dプリンター

3Dプリンタが22,600円(定価25,714円)で販売されていました。

こちら、amazonでも販売するとのことで、一般の人も簡単に購入可能です。

ceatec_2016_3d%e3%83%95%e3%82%9a%e3%83%aa%e3%83%b3%e3%82%bf

ものづくりの敷居が、どんどん下がっていると感じました。

展示:seven dreamers 「laundroid life」

世界初。全自動衣類折りたたみ機。

ceatec_2016_%e3%83%a9%e3%83%b3%e3%83%88%e3%82%99%e3%83%ad%e3%82%a4%e3%83%88%e3%82%99

一生で9000時間375日分洗濯物を畳んでいる時間から解放する、画期的なプロダクトとのこと。
画像解析 x A.I x ロボティクス と、最近のめざましい技術革新により、実現可能となったプロダクトです。

共働き、子育て支援といった課題への解決策ともなりそうです。

いわゆるAIの活用は、当たり前の時代になりつつあると感じました。

laundroid

おわりに

リンクバルの技術Gでは、テック系の勉強会やイベントへ参加して共有することで、チームのレベルアップに取り組んでいます。

自社サービスを一緒に開発するエンジニアを募集しておりますので、ぜひ弊社採用ページより、お問い合わせください!


私が愛したくても愛せないCSSフレームワーク


CSSフレームワークというのは、Bootstrapとかああいうヤツらのことです。
便利なので導入することは多いのですが、何故かあまり良い思い出がありませ
特に以下の条件に当てはまるものは、ちょっと苦手です。というかぶっちゃけ嫌いです。

いわゆる重量級

BootstrapとかFoundationのようなタイプですね。
デザインもcssの設計も、とにかく余計なお節介が多く融通もきかないと感じます。
そこはかとなく漂うテンプレ臭も気になります。

マテリアルデザイン

Material-UIMaterialize等。
素敵だとは思うけれど、とりあえずこれにしとけばいいだろ的な、
全身ファストファッションで固めてる人みたいな残念さを感じます。

Sassじゃない

フレームワークと名乗りながら、このご時世にLessとかで頑張ってる意味がよくわからないです。

インストール方法が限られている

プロジェクトフォルダにファイル一式放り込めばOKみたいなのでいいんですが
そういうのはあまり多くないのが残念です。

コンポーネントを用意しているが、種類が少ない

こういう中途半端なのが一番嫌です。
よくあるパターンは網羅するか、コンポーネントは一切無しか、どっちかにしてほしいです。


ほとんど全部嫌いじゃねえか!

こんな私でも「素敵やん?」と思うのが
Bourbon, Neat, Bitters, Refillsの、いわゆるthoughtbot四兄弟です。

Bourbon
Sassのmixin集。Compass的なもの
Neat
グリッドだけのフレームワーク。
Bitters
タイポグラフィ、カラー等のベーススタイル。リセット+α的な?
Refills
コンポーネント集。

用途に応じてRefillsまで全部のせにする、BourbonとNeatだけにしておく等融通がききます。
もちろん全部Sass製です。
インストールはgemで行いますが、生成されたファイル一式の取り扱いは割と自由です。
Refillsにはデザインが適用されていますが、Refillsサイト上のソースコードをコピペする形式なのでカスタマイズが楽です。

また四兄弟と書きましたが、実は5人目の兄弟がいます。
その名はEmpties。見た目のスタイリングを取っ払ったRefillsのようなものです。
コンポーネントの種類はRefillsより少ないですが、1から好きなようにデザインできます。


クリック!株式会社リンクバルでは一緒に働くエンジニアを募集中です!クリック!


【学ぶ夜シリーズ・第2弾】徳丸浩とWordPressのセキュリティを学ぶ夜 セミナーレポート

セキュリティ

リンクバル技術部の川畑です。先日HASHコンサルティング主催の「【学ぶ夜シリーズ・第2弾】徳丸浩とWordPressのセキュリティを学ぶ夜」に参加してきました。
主な内容は、簡単な攻撃デモとセキュリティ対策についての解説と少し宣伝といった感じとなります。そのうちのセキュリティ対策の内容についてのレポートとなります。

続きを読む