リンクバル

踏み台サーバを用いてTableauに外部のMySQLサーバを接続する

こんにちは、リンクバルの佐藤です。

最近BIツールのTableauを導入し始めたのですが、Tableau単体では外部サーバーのMySQLに接続できません。

開発用DBはAWS上にあるので、接続するには踏み台サーバーを経由する必要があります。

なのでSSH ポートフォワーディング(SSHトンネルともいう)で踏み台サーバーを経由する方法を備忘録的に書いておきます。

一度踏み台にアクセスしてしまえば、あとは放置で大丈夫です。

お膳立て

以下のコマンドを打ってsshポートフォワーディングしましょう。 参考URLはこちらです。

[code lang=text] ssh -f -N -L 10000:localhost:3306 ユーザー名@サーバーホスト名 -p 22
[/code]

これでSSHポートフォワーディングが完了しました。 一応接続できているかをtelnetを使って確認しましょう。 飛ばしても問題ありませんが念のため。

[code lang=text] telnet サーバーのホスト名 10000
[/code]

10000はローカルの10000ポートを指定しています。 先ほど接続先の3306ポートにマッピングしたものと同じポートを指定しています。

Connected to localhost.とターミナルに表示されれば接続されています。 明記してませんでしたが、ここまですべてMacです。Windowsではtelnetはデフォルトでは使えないので、有効化してあげる必要があります。

さてここまでお膳立てしてあげてから、Tableauを起動します。

Tableau起動後

サーバーへMySQLといって、

  • サーバーホスト名
  • ローカルポート番号
  • ユーザー名
  • パスワード

をぽちぽちしてサインインしてください。ここまでの設定で接続できるでしょう。

設定が終わったらググってTableauを存分に使い倒してやりましょう。 Tableauの作図方法は次回書くことにします。 では。

Packerでマシンイメージを管理する

packer

リンクバル技術部の川畑です。サーバの構成管理はどこの会社でも課題になっていると思われます。このあたり構成管理ツールをつかってコードをGitHubとかで管理していきたいですね。構成管理ツールでもマシンイメージ・ミドルウェア・デプロイツールなどいくつかの階層によって適用できるツールがあると思われるのですが、今回はマシンイメージを管理する「Packer」を検証してみました。

1.Packer設定ファイル

  • json形式で記載
  • 「builder」でマシン環境を定義
  • 「provisioners」でサーバ上の動作を定義
  • ここでは「digitalocean.json」で保存

続きを読む

リンクバルの”お菓子ちゃん”のこだわり(お菓子支給制度について)~ITアレルギーな私の技術部奮闘記~

こんにちは。
リンクバルの山本(♀)です。25歳です。

リンクバルの看板商品「街コン」のイベントプランナーでしたが、ひょんな事からリンクバルのシステム系の部署である技術部に異動となり、
今はシステム開発のディレクターになるべく修行中です。
「~入門」「初心者でも分かる~」が読めないぐらいITアレルギーな私のWEB部での奮闘をお楽しみください。

皆さんは覚えているだろうか。

前回の私の記事の最後のコメント・・・

プログラミングに苦手意識を持っていた私だったけれど、ようやく第1歩を踏み出した記念のブログ。

「そして今日も、エラーと戦っている私なのです」
エラー箇所を探し、修正し、の繰り返し。
私の苦労が滲み出ている・・・ちょっと感動的な文章。

ところがつい先日、夫(ちょっとだけプログラミングできるらしい)からズバット言われたわ。

は?

確かにエラー箇所に小さな”レ点”のようなものが見える。
夫いわく、エラーがでたからって、そんなに四苦八苦する事でもないらしい。

気がつかなかった。不覚。
今までエラーを1から探していた時間を返せ!

という事で、

「そして今日も、エラーと戦っている私なのです。」改め、
「そして今日も、”レ点”しかでない私なのです。」
に変更します。はい。

ココからが本題、株式会社リンクバルの”お菓子支給”制度

全ての社会人の皆さん共通の悩み。それは仕事中の空腹。
仕事中は例えガンマGDPの数値がアレでも空腹なんて我慢してられない。そんな時・・・
リンクバル社員は動きだす。

お菓子があるこの場所へ。
中はこんな感じ。

欲しい味がここにある、それがリンクバルの”お菓子支給制度”

「あーお菓子支給ね。」と楽観視したそこのアナタ。
うちの”お菓子支給制度”を侮るべからず。
不思議と「この味が欲しい」と思ったときに、必ずここにある。
まるで私たちの心を見透かしているように。

例えばこんな感じ、ある日のお菓子事情

ある日の朝、その日は胃が元気が無くて、ちょっと軽めなものが欲しいと思ったの。
すると見て!私の心を見透かすように煎餅が。
さらに、中にサクサク系の何かが入ったチョコレートもある。
胃にやさしい組み合わせだ。

朝一でお菓子エリアに行ったのに、もう誰かが煎餅を持っていった痕跡が見える。
もうお気づきかもしれないが、社員同士で熾烈なお菓子争奪戦が勃発している・・・多分。

午後、少しお疲れぎみ。
こんな時は変り種が欲しいところ・・・と思ったら見て!

こ、これは、中にチョコレートが入ったマシュマロと、ウ〇イ棒ではないか。
中にチョコレートが入ったマシュマロは私の好物なの。
チョコの分量が極めて少ないのに、甘くて美味しいから、(多分)太らないし、満足感がある。

変り種と言えば、旅行のお土産なんかが置かれていて、
”ボーナス”菓子が支給されることもある。

お菓子ちゃんに突撃取材

このお菓子をいつもコーディネートしてくれる通称”お菓子ちゃん”を突撃取材しました。
ちょうどお菓子補充中。

山本「組み合わせの工夫は?」
お菓子ちゃん「まず煎餅とチョコレートは必須。これは代々お菓子ちゃんが受け継いでいるシキタリです。
それ以外はその時のお菓子ちゃんのセンスです。」

なるほど。色々考えながら組み合わせているのですな。

さて、今日のお菓子は

今日はお菓子から素敵なメッセージをもらったわ。
最近は新しい仕事もいただけて更に頑張ったので、誰かからやさしい言葉が欲しかったの。

ありがとう。
でもやっぱり・・・私はこっちをいただくわ。

 

”お菓子支給”のある株式会社リンクバルで
一緒に働くエンジニアを募集中です!
新しい事にチャレンジしたい、もっともっと成長したい、そんな
フロンティアスピリットをお持ちの方が生き生きと働ける会社です。
詳細はコチラ

最後まで読んでくださり、ありがとうございました。

開発者必見!Slackカスタム絵文字でコミュニケーションが楽しくなる。

リンクバル技術部エンジニアの中村です。リンクバル技術部では、Slackを活用してコミュニケーションをとることで、日々の開発業務を進めています。

関連リンク:リンクバル新規サービス開発チームにおけるSlack活用事例

リモートで働く社外の開発パートナー様とのやりとりもSlackを活用しています。

Slackが無い開発は考えられないと思う利用頻度です。

そんなSlackには、コミュニケーションが円滑になる、絵文字機能があり、Slackを使っているチームであれば利用していると思いますが、オリジナルの絵文字を追加できるのをご存知ですか?

自社で保有しているキャラクターのアイコンやアプリアイコンを、カスタム絵文字(Custom Emoji)として追加することで、コミュニケーションが楽しくなり、プロジェクトの雰囲気も良くなると思いますよ

この記事では、Slackのカスタム絵文字の登録の仕方を説明致します。

カスタム絵文字登録手順

Customize Slack

  • Slackを開き、チーム名の横の「∨」アイコンをクリック
  • 続いて、「Customize Slack」をクリック

customize_slack

Customoize Your Team 画面へ遷移します。

アイコン画像のアップロード

「Customoize Your Team」画面で、下記の手順でアイコンを登録します。

  1. 「Chose a name」で、アイコンに名前をつける
  2. 「Chose an emoji」で、アイコン画像をアップロードする。
  3. Saveボタンをクリック

ここでは、自社サービス「カップリンク」のアプリアイコンを登録しました。

登録完了

「Custom Emoji」一覧に、登録したアイコンが表示されます。これで登録完了です!

カスタム絵文字の利用方法

デフォルトで登録されている絵文字と同様に利用することができます。

おわりに

この記事では、プロジェクトが楽しくなり、コミュニケーションが円滑になる、Slackのカスタム絵文字の登録方法をご紹介しました。

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

国勢調査のデータと R を使って結婚について考える

未婚のアラフォー、堀内(♂)です。

弊社は恋愛をテーマとする会社であるためか、我ら技術部のメンバーも既婚だったり、同棲していたり、恋人持ちだったりする割合が多いようです。僕が新卒で入った技術100%みたいな会社の壊滅的な状況と比べると異次元です。まあ、技術部は30代が多いですしね。みな結婚を考える時期です。

部署の外に目をやると、イベント系の方々がたくさんいます。弊社は基本的にイベント会社なのです。新卒でも恋人持ちが多いらしく(伝聞:あまり話したことがない)、そのリア充ぶりに卒倒しそうです。そんな中で、僕に恋人がいないのは日本の政治が悪いに違いなかろうと、国勢調査のデータを調べてみることにしました。ツールは R です。

まず、「国勢調査の配偶関係データを R で取得する」で作成した、都道府県別の婚姻状況データを読み込みます。このデータは、15歳以上の日本の居住者を、都道府県毎、年齢毎、性別毎に、「未婚」「離別」「死別」「配偶関係不詳」「有配偶」に分けて記載しています。一般的には未婚、既婚の2分類を使いますが、国勢調査では婚姻関係を結んだ後の離別(離婚)と死別(配偶者の死亡)も区別しています。

[code lang=”r”] census <- read.csv(‘prefs.csv’)
attach(census)
census$age <- as.integer(sub(‘歳.*’, ”, age))
census$area_code <- as.factor(area_code)
census$area <- ordered(area, levels=unique(area))
census$marital_status <- ordered(
marital_status,
levels=rev(c(‘未婚’, ‘離別’, ‘死別’, ‘配偶関係「不詳」’, ‘有配偶’))
)
detach()
[/code]

このデータは、全人口と、日本人の人口の両方を持っているので、外国人比率も参考までに押さえておきましょう。

[code lang=”r”] num_of_all <- sum(census[census$nationality==’総数(国籍)’,]$value, na.rm=T)
num_of_japanese <- sum(census[census$nationality==’日本人’,]$value, na.rm=T)
print(sprintf(
‘全人口は %s 人、外国人居住者は %s 人で、全体の %f %% を占める。’,
prettyNum(num_of_all, big.mark=’,’),
prettyNum(num_of_all – num_of_japanese, big.mark=’,’),
(num_of_all – num_of_japanese) / num_of_all * 100)
)
=> [1] "全人口は 109,754,177 人、外国人居住者は 2,129,711 人で、全体の 1.940437 % を占める。"
[/code]

全人口1.1億というのは少ないと思われるでしょうが、このデータには15才未満が含まれていないのです。婚姻関係を追うものですから。

15歳で結婚

参考までに、15〜18才の婚姻状態を調べてみましょう。

[code lang=”r”] census %>%
dplyr::filter(age <= 18, nationality == ‘総数(国籍)’, marital_status == ‘有配偶’) %>%
na.omit() %>%
group_by(gender, age) %>%
summarize(population=sum(value)) %>%
spread(gender, population)
[/code]

15歳の女性が144人、男性が86人も配偶者を持っているのですね。民法では女性16歳、男性18歳から婚姻が認められますが、国勢調査の「有配偶」は、届出の有無に関係なく、実態を表しています。事実上、周囲から夫婦であると認められている状態です。一般的な言葉で言えば「事実婚」です。

続きを読む

国勢調査の配偶関係データを R で取得する

平成27年国勢調査のうち、配偶関係(婚姻関係)のデータを R で取得します。ここでは estatapi パッケージを使います。appId は、e-statのサイトで事前に取得しておきましょう。

[code lang=text] library(estatapi)
statslist %>%
dplyr::filter(grepl('平成27年.*配偶', STATISTICS_NAME)) %>%
select(`@id`, TITLE) %>%
mutate(TITLE=substr(TITLE, 0, 50))
[/code]

求めるデータの @id が 0003149791 であることがわかったので、メタ情報を取得します。

[code lang=text] metainfo <- estat_getMetaInfo(appId='xxxxx', statsDataId='0003149791')
metainfo
[/code] [code lang=text] metainfo$cat04
# A tibble: 10 × 3
@code @name @level

1 0000 総数(配偶関係) 1
2 0010 未婚 1
3 0020 有配偶 1
4 0040 死別 1
5 0050 離別 1
6 0070 配偶関係「不詳」 1
7 0080 (配偶関係別割合(%)) 未婚 1
8 0090 (配偶関係別割合(%)) 有配偶 1
9 0110 (配偶関係別割合(%)) 死別 1
10 0120 (配偶関係別割合(%)) 離別 1
[/code]

メタ情報には、様々な「コード」が入っています。上記はカテゴリ04(cat04)のコードの例。

データ取得時間短縮のため、メタ情報の @code を用いて絞り込んだデータを取得します。データ取得には数分かかります。

[code lang=text] census <- estat_getStatsData(
appId='xxxxx',
statsDataId='0003149791',
cdCat02=c('0010', '0020'), # 男、女
cdCat04=c('0010', '0020', '0040', '0050', '0070'), # 未婚、有配偶、死別、離別、配偶関係「不詳」
cdCat05='00710' # 全域
)
census$tab_code <- NULL
census$表章項目 <- NULL
census$cat01_code <- NULL
census$cat02_code <- NULL
census$cat03_code <- NULL
census$cat04_code <- NULL
census$cat05_code <- NULL
census$`全域・人口集中地区(2015)` <- NULL
census$time_code <- NULL
census$`時間軸(年次)` <- NULL
names(census) <- c('nationality', 'gender', 'age', 'marital_status', 'area_code', 'area', 'value')
census <- census[!grepl('総数|平均|再掲', census$age),] census <- census[!grepl('市部$|郡部$', census$area),] attach(census)
census$nationality <- as.factor(nationality)
census$gender <- as.factor(gender)
census$age <- ordered(age, levels=c(paste(15:99, '歳', sep=''), '100歳以上'))
census$marital_status <- as.factor(marital_status)
census$area_code <- as.factor(area_code)
census$area <- as.factor(area)
[/code]

都道府県別、都市別のデータを取り出します。

[code lang=text] census_prefs <- census %>%
dplyr::filter(
area_code != '00000',
as.numeric(levels(area_code))[area_code] %% 1000 == 0
)

census_cities <- census %>%
dplyr::filter(as.numeric(levels(area_code))[area_code] %% 1000 != 0)
[/code]

今後の利用のために CSV で保存しておきます。

[code lang=text] write.csv(census_prefs, 'prefs.csv', row.names=F)
write.csv(census_cities, 'cities.csv', row.names=F)
[/code]

この中に入っているデータは、こんな形式のものです。


リンクバルでは、Ruby と React と R を使って世の中をハッピーにしたいエンジニアを募集中です。この記事にピンと来た方は、是非ご応募ください。

【プログラミングやりたいけど・・・的な人を元気にするお話】アメリカ旅行中の飛行機の中で、プログラミングに全く触ったことない私がPythonをさわってみた!~ITアレルギーな私の技術部奮闘記~

こんにちは。
リンクバルの山本(♀)です。25歳です。

リンクバルの看板商品「街コン」のイベントプランナーでしたが、ひょんな事からリンクバルのシステム系の部署である技術部に異動となり、
今はシステム開発のディレクターになるべく修行中です。
「~入門」「初心者でも分かる~」が読めないぐらいITアレルギーな私のWEB部での奮闘をお楽しみください。

###突然ですが。新婚旅行に行ってきました!
場所はニューヨーク。
img_20161222_153433-1

NYといえば、最近巷で”オシャレなNYファッション”的な雑誌をよく見るので、流行にのって私のNYファッションを紹介します。
img_1590
耳がキーンとなる氷点下のニューヨークで、オシャレも〇ソもあったもんじゃない。

###暇な飛行機内で・・・そうだ!Pythonやろう!
行きの飛行機はウキウキ間で乗り切れるけど、帰りの飛行機って結構つらかったりする。
しかも今回は時差の調整がうまくいかず、飛行機で寝れなそうな雰囲気。
という事で、Pythonやってみることにした。

###備考:何でよりによってPython?
分かりやすそうな本がPythonしかなかったから。

###Pythonやる前に、まず下準備から。
荷物を重くしたくなかったので、iPadにPythonのアプリを入れてもっていきました。
img_1612
ただコードを書くだけなら、Wifiもいらないから準備が簡単。

###いざ!機内でPython
取り合えず、本の導くままに打ってみた。
img_1613

ふむふむ。順調順調。
img_1617

あれ?エラーになった。
img_1614

四苦八苦が続く・・・あ!
オヤツの時間♪
img_1610

エラーの原因が分からないまま四苦八苦が続く・・・あ!
ご飯の時間♪
img_1611

更に四苦八苦が続き・・・あ!
もうちょっとで着陸の時間♪
img_1618

さ、iPadしまって着陸だ。(←よくも悪くも諦めが早い)

###ITアレルギーでしたが、やってみて変化が起こった。
プログラミングに対して苦手意識をもっていた私ですが、今、自主的にサイトを使って練習するようになっています。
きっとエンジニアの方から、「こんなのやったうちに入らん!」とお叱りを受けそうですが、私にとっては次につながる大きな一歩でした。
プログラミング系の本を読んで幾度となく戦線離脱してきた私ですが、ちょっと打ってみて「出来た!」と少しですが感じたことで、次のモチベーションにつながりました。
そして、少しずつ練習していくうちに、初心者系の本も読めるようになり始めています。
初めの1歩、ようやく踏み出せました。

そして今日も、エラーと戦っている私なのです。

株式会社リンクバルで
一緒に働くエンジニアを募集中です!
新しい事にチャレンジしたい、もっともっと成長したい、そんな
フロンティアスピリットをお持ちの方が生き生きと働ける会社です。
詳細はコチラ

最後まで読んでくださり、ありがとうございました。

ElasticSearchでログ収集する〜Logstashとは何だろう?

リンクバルの井上です。
今回はElasticSearchにデータを取り込むLogstashとは何かについて調べた内容をまとめてみました

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

###Logstashとは?
Elastic社が提供するオープンソースログ収集管理ツールです。
プラグイン形式で機能を拡張できるのが特徴でプラグインにより様々なファイルデータを収集できます。

###プラグインの種類
(沢山ありすぎるので一部紹介します・・・)

####logstash-input-jdbc
JDBCプラグインを使用してデータをDBにからデータを取得します。

####logstash-input-file
任意のファイルの内容を永続的に読み取ります。ファイル読み取り開始位置や読み取る間隔も調整することができます。

####logstash-filter-csv
カンマ区切りの入力をフィールド単位に分割します。separatorも指定することが可能です

####logstash-filter-date
日付フォーマットを変換します。

####logstash-output-jdbc
JDBCプラグインを使用してデータをDBにアウトプットします。

これらのプラグインを使い下記のような流れでデータを収集します。
1.Input ログを記録するイベントを監視
2.Codec Inputから受け取ったデータを指定した形式に整形
3.Filter Codecから受け取ったデータをフィルタ処理(解析)
4.Output Filterから受け取ったデータを出力対象に出力

基本的なLogstashの内容は以上です。
pluginをより活用すれば大抵のデータは取り込めるのであらゆるデータ収集ができそうですね!

リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。

【WordPress】プラグインがサイトを危険に晒す4つの方法

こんにちは!社会人2年目エンジニアの関です!

WordPressを利用する上で、プラグインはなくてはならないものです。
しかし間違った運用を続けていると、時にサイトを大破させる凶器にもなります。
今回は、突然の大事故を避けるためのプラグインの正しい導入・運用方法について紹介していきたいと思います。

1. 実績のないプラグインを導入する
WordPressには実に多くのプラグインが用意されています。そのため、中には粗悪なプラグインも紛れ込んでしまっているのも確かです。
プラグインの導入は良くも悪くもサイトに大きな影響を与えるため、慎重に選んでいきたいところです。

とりあえず「/)( ◕ ‿‿ ◕ )(\ わけがわからないよ」という方は、プラグインのダウンロードページで以下の3点に注意して選んでみてはいかがでしょうか。

続きを読む

【街コン】街コンに参加して●●●をお持ち帰りした話【初参加】

こんにちは! 12月に新しく入社した佐藤です。
我が社のメイン事業は街コン事業であります。
しかしながら、私はまだ街コンに参加したことがありませんでした。
そこで今回は12/17に行われた街コンに初体験したレポートを書こうと思います。

ちなみに目標は、LINEを10件交換する、です。

(結論をいいますと、未達でした。)

表参道の開催地にちょっと遅れて到着しました。 すでに長蛇ができています。
先に入っている男女は談笑し始めています。 しかしこっちは男だけの列で受付を待っています。
なんだか出遅れた感が、、
ちなみに女性は優先的に受付ていたのでスムーズに入ってました。

受付を終えるとドリンクを取るようにと指示を受けます。
選ぶとすぐに男性スタッフの方にテーブルに案内されます。
ここでドリンクを選んでいる女性に話しかけたのですが、すぐに引き離されてしまいました。*1

テーブルに案内されると、すでに男性5名女性3名が談笑していました。
自己紹介をしながら、男性が女性を仲良く談笑という感じです。
仕切ってた男性が気に入らなかったので黙ってました。

イベント開始時刻と同時にスタッフからの説明事項、そしてシャッフルタイム、5人の異性と乾杯せよとの指示でした。
たくさんの異性と交流できるというわけですね。
乾杯してドリンクをおかわりに行きました。

このイベント、多分キャパ100人ほどの会場に160人ぐらい入っていたので、めちゃくちゃ混んでました。
なので、ドリンクの列もごちゃごちゃしててきとうです。
そこら中で人が話しているので、周りに聞かれているというハードルがすごい低かったです。
列に並んで待っている時に事務の女性とLINEを交換しました。

イベントのスケジュールでは、ドリンクを持って、テーブルについて、その場でLINEを交換、そしてシャッフルタイム。
というのを3回回す手順でした。おそらく。
が、テーブルに人が収まらないので、パーティ会場内全体で小さいグループが形成されていました。
LINE交換タイムが5分間運営スタッフから設けられていたので、LINEを自分で聞かなくても交換できちゃいますね。
すごいラクですね。
シャッフルタイムとLINE交換タイムがあるのは人見知りも十分LINEが交換できるようになっていると思います。

2回目のシャッフルタイムではフードが出ました。
フードの列もめちゃくちゃです。
並んでいる間に3人組で来ていた看護師の方々とLINEを交換しました。

3回目のシャッフルタイムでは、もう女性だけで固まって行動している人や、男性同士で固まって話している人たちも見られます。
フードの列は相変わらず長くて、並ぶ気がしませんでした。
ここでは学生の女性とLINEを交換しました。

最後に2人組の女性とLINEを交換して、初めての街コンは終了しました。。

 

 

 

 

 

いかがだったでしょうか。

街コンでは普段の仕事では出会わないクラスタの方々と出会えることがわかりました。
しかも、LINEも気軽に交換できます。

もちろん、街コンとはいえ全ての女性と話せるわけではないです。
3人組のうち1人がブラジル人設定で日本語通じない(他の2人がクスクス笑いだす)とか、2人組の先輩が行っちゃってついてく後輩とか、女性の顔がこわばるとか、男が割り込んで来る等、、、

 

いい思い出を持ち帰ることができました! *2

 

街コンに興味を持った方、ぜひ一度街コンデビューしてみてください! 私は次は、趣味コンに参加してみようと思います!

弊社で働きたいと思われた方はこちらまで!
街コンに参加したいと思われた方はこちらからご登録お願いします!

*1 もう出会うことはありませんでした。君の名は…
*2 文句は受け付けません。