駄文型

プログラミングとか英語とかの話題を中心にした至極ちゃらんぽらんな日記です。

Go言語でWebSocketを使ったチャットアプリを作ってみた

Rubyにもだんだん慣れてきたので、今度はGoを触ってみようと思ってGo言語によるWebアプリケーション開発を買ってみた。Goを学びながらチュートリアル形式でいい感じのWebアプリを作ることができる。そこそこ高度な内容っぽかったので、Goの基本的な文法などはA Tour of Goで予習しておいた。

アプリのソースはGitHubに公開した。今はまだ基本機能だけで、チャット画面を複数のタブやウィンドウで開くと、Postした内容が同期されるだけ。今後進めていけば、OAuth2でのログインやプロフィール画像の設定などが行えるようになる。

追記:OAuth2によるログインやSNSからのプロフィール画像の取得までは実装した。まだプロフィール画像のアップロード機能などが残っているが、いまのところそこまではやらない予定。

タイトルはWebアプリケーションだが、コマンドラインツールやREST形式APIなども対象としている。この本に沿って開発を進めていけば結構幅広くWeb開発を学べそう。GWはこれをいっきに進めようと思う。

以下メモ。

Goのインストール

$ brew install go

Goの設定

環境変数

環境変数GOPATH等の設定が必要なので、僕の場合は以下のように.zshrcに追記した。

export GOROOT=/usr/local/opt/go/libexec
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

goimportsのインストール

$ go get golfing.org/x/tools/cmd/goimports

と実行してgoimportsをインストールする。そうすると、

$ goimports -w *.go

と実行するだけでソース内で使用されているのにインポートされていないパッケージを自動でインポートの文を挿入してくれる。

Goの実行

ソースファイルが1つだけの場合は、

$ go run app.go

コンパイル、実行できる。複数のファイルに分けた場合は、

$ go build -o <アプリ名>

でビルド、

$ ./<アプリ名>

で実行できる。

参考

[asin:4798142417:detail]

[asin:4863541783:detail]

あわせてどうぞ

SinatraでTwitterアプリを作ってみた

動機

  • Sinatraで何か作ってみたかった
  • Rubyのお勉強したかった
  • TwitterAPIも触ってみたかった

何ができるか

  • 自分のツイートから画像を探して一覧を表示する。
  • それだけ。
  • 「あー、こんなんアップしたなぁ」と思い出してみてください。

ソース

github.com

使い方

git clone https://github.com/kohei-kimura/images-on-my-twitter.git
ruby app.rb

課題

  • 重い
    • めっちゃ重い
    • ツイートから画像付きのPostを探してくるのでめっちゃ時間がかかる
  • herokuにデプロイしてみたけど動かない
    • 原因探るのも面倒なので諸事情により原因特定が不可能になりました
  • instagramの画像が取得できない
    • instagramからのPostもURLから画像を取得するようにしてたけど、instagramの仕様が変わったっぽくていつの間にか動かなくなってた

[asin:4797386290:detail]

[asin:4873113946:detail]

[asin:4426608376:detail]

あわせてどうぞ

AWSビギナー勉強会 in Yokohamaに行ってきた

AWSビギナー勉強会 in Yokohamaについて

横浜で勉強会ないかなーと思って探してたらAWSの勉強会が見つかったので、試しに行ってみた。

connpass.com

AWSは知っているけど、どんなサービスがあるの?

使ってみたいけど、どんな風に役立てたら良い?

ビギナーだから知識を深めたい!

そんな方はいらっしゃらないでしょうか? みんなで集まってAWSについて勉強してみませんか?

自分一人じゃ心細くても、みんなでやれば怖くない。

感想

  • 発表者の方々もAWSビギナーで、使ってみた率直な感想が聞けてよかった。
  • AWSのサービスがこれほどあるのすら知らなかったのでいい機会になった。
    • AWS Mobile Hub便利そう
  • 横浜会場の勉強会もっと増えてほしい

あわせてどうぞ

R/RStudioに関するメモ 基本編

koheikimura.hatenablog.com

前回の続き的なやつ。検定編的なやつもやるかもしらないしやらないかもしれない。

ファイルの読み込み

  • Import Dataset → From Local File...
  • csvの一行目にタイトルを入れておくと使いやすい
  • 読み込んだらファイル名で呼び出しできる
    • データセットというらしい
    • data.csvが↓の場合、data$SecでSecの列を呼び出せる
No.,Title,Sec
1,ttttt,20
2,yyyyyyy,7
3,hhh,12

sum関数

合計値のほか、条件に一致する要素のカウントもできる。

# Titleが”ttttt”の行の個数を返す
sum(data$Title == "ttttt")

subset関数

データセットから特定の要素を切り出すことができる。

# データセットからTitleが”ttttt”に一致する行のSecの平均を求める
subt <- subset(data, Title == "ttttt")
mean(subt$Sec)

プロット関数

# 棒グラフ
barplot(c(data$Old, data$New), names = c("Old ver.", "New ver.")

# 箱ひげ図(外れ値を表示しない)
boxplot(data$Old, data$New, outlin = F)

# ヒストグラム(2つのデータを重ねて表示)
hist(data$Old, col = "0000ff50", breaks = "Scott")              # 青、不透明度50
hist(data$New, col = "ff000050", breaks = "Scott", add = T)     # 赤、不透明度50

[asin:4873117151:detail]

あわせてどうぞ

RStudioを使ったら楽にR再入門できた

Rは学生時代に少し使っていたのだが、いろいろと面倒な面があって最近はずっと使っていなかった。仕事で統計っぽいことをする必要が出てきたので、またRについて調べていたらRStudio*1に行き着いた。

RStudioはR用のIDEで、エディタとコンソールとプロット画面がひとつになっていて使いやすい。Rは素晴らしいツールなのだが、ユーザビリティがあまり良くない。R使うなら絶対RStudio!という人もいるらしいので、Rを触ってみようという人は一緒にインストールした方がいい。

RとStudioについては以下の記事が詳しい。

qiita.com

書籍ならデータサイエンティスト養成読本 [ビッグデータ時代のビジネスを支えるデータ分析力が身につく! ] (Software Design plus)がおすすめ。

今はRStudioでグラフ書いたり簡単な検定かけたりしている。プログラムも書けて統計もそこそこできますって言うと、ちょっとイケてるエンジニア感出るだろうか。

あわせてどうぞ

今聴いてるおすすめ英語Podcastまとめ

多聴多読(たちょうたどく)マガジン 2016年4月号[CD付]

ちょうど1年ほど前から英語学習のためにいろいろなPodcastを聴き始めたのだが、最近ようやく固まってきたのでまとめておこうと思う。

英語のみのPodcasts

All Ears English Podcast

All Ears English Podcast

All Ears English Podcast

  • Lindsay McMahon and Michelle Kaplan
  • 言語学
  • ¥0

おすすめ度 ★★★★★
難易度 ★★★☆☆

教育カテゴリで常に上位の定番のPodcast。特定のシチュエーションで使えるフレーズを紹介することが多い。現代の自然なアメリカ英語を聴けるし、よく使われる言い回しや単語を学べるのでおすすめ。「その言い方だと伝わるけどフォーマルすぎる」「大きなカンファレンスの司会者みたい」「古臭くて小説みたい」「ものすごくカジュアル」といった感じで微妙なニュアンスについて詳しく説明されるので、とても勉強になる。週に4エピーソードと更新頻度も高いのもいい。平日の通勤時に聴くようにするとちょうど消化できる。

Hostのふたりがやや早口なので、難易度はやや高め。僕も1度聴いただけだと概要はわかるが聞き取れない箇所が多い。ただし大抵1エピソードにつき1つの話題なので、まったくついていけないことはないはず。たまにゲスト会があるのだが、電話の会話を録音しているのか音質が悪い。僕は聞き取れないので聞き流している。

続きを読む

Slackに天気予報を投稿するbot作ってみた(Ruby/Heroku)

photo by Kris Krug

Slackを使ってみたくて家庭用のチームを作って導入してみた。天気予報をSlackに流そうと思ってfeedを登録したりIFTTTから流すようにしたのだが、イマイチだったのでRubyの勉強がてら↓のエントリを参考にbotを作ってみた。

shoyan.github.io

出力サンプル

f:id:koheikimura:20160207130707p:plain

導入手順

ソースコードのダウンロード

git clone https://github.com/shoyan/slack-weather-notifier
続きを読む