開発者必見!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分類を使いますが、国勢調査では婚姻関係を結んだ後の離別(離婚)と死別(配偶者の死亡)も区別しています。

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()

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

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 % を占める。"

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

15歳で結婚

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

census %>%
  dplyr::filter(age <= 18, nationality == '総数(国籍)', marital_status == '有配偶') %>%
  na.omit() %>%
  group_by(gender, age) %>%
  summarize(population=sum(value)) %>%
  spread(gender, population)

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

続きを読む


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


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

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

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

metainfo <- estat_getMetaInfo(appId='xxxxx', statsDataId='0003149791')
metainfo
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

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

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

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)

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

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)

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

write.csv(census_prefs, 'prefs.csv', row.names=F)
write.csv(census_cities, 'cities.csv', row.names=F)

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


リンクバルでは、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をより活用すれば大抵のデータは取り込めるのであらゆるデータ収集ができそうですね!

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