RubyKaigi 2019 感想

RubyKaigi 2019に行ってきました!!

f:id:takezyo:20190424204458j:plain

きっかけは,偶然@saboyutakaさんのツイートで招待ツアーのことが書いてあり最近Ruby書く機会もあり興味あるしとりあえず申し込むか精神で申し込みました。そしたら,招待ツアーに選ばれてとても嬉しかったです。

esminc.doorkeeper.jp

 

招待ツアーに選ばれたこともあって前夜祭含めて全日程参加することを決めました。

前夜祭ではクルージングに乗って立食パーティーでした。船めっちゃ豪華でした。船のご飯も豪華でお酒にめちゃくちゃあう感じで景色もきれいでした。

f:id:takezyo:20190424200443j:plain

 

 

esminc.doorkeeper.jp

RubyKaigi 2019当日では,ランチスポンサーもあってお昼ご飯にも困ることなく過ごすことができました。特に驚いたのは屋台を出展していたことです。雰囲気こんな感じです。

f:id:takezyo:20190424204502j:plain 

ノベルティたくさんあり,スタンプラリーもたくさんの企業と関われるチャンスだったので回るわくわく感が楽しかったです。

 

f:id:takezyo:20190424203005j:plainf:id:takezyo:20190424204644j:plain

f:id:takezyo:20190424203242j:plain

ノベルティたち

2日目にはBoardGame.rbに参加してみなさんで交流して遊んだりもしました。

boardgamerb.doorkeeper.jp

 

 

全日程を通して印象に残った話を3つあげたいと思います。

 

・How to use OpenAPI3 for API developer

f:id:takezyo:20190424203238j:plain

 OpenAPI3の活用方法についてのお話でした。OpenAPIは利用したことがあったのでどうゆうものかある程度知っていたのですが,Railsでの活用方法はしりませんでした。OpenAPI3対応していないcommitteを対応させるように変更をしていました。committeeを用いてOpenAPI3で記述したことを保証してくれるようなことができる&バリデーションもしてくれるめちゃくちゃ便利な印象でした。OpenAPI3とcommitteを用いることで仕様書通りにスムーズに開発ができると思いました。

 

・RubyData Workshop

f:id:takezyo:20190424203523j:plain

 

 Rubyを使ったData分析の活動の紹介でした。Pythonを触っていたので興味があって聞きにいきました。IRubyというのがあってjupyternotebookで使いやすいようにしていたり,Rumaleで機械学習ができることの紹介がありました。Docker-stacksでRubyでデータ分析ができる環境も提供していて簡単に試すことができる印象でした。OSSの活動も紹介していて自分もOSS活動していきたいと思っているのでOSS gateに参加してみようと思いました。

 

 ・Ruby Committers vs the World

f:id:takezyo:20190424203516j:plain

 今回きているRubyコミッターの方が全員登壇して事前に受けとった質問に答えるものでした。これからのRubyの展望や新しい機能についての議論が繰り返されていました。言語が作られていく瞬間をみることができてとても感慨深いものでした。

 

f:id:takezyo:20190424205551j:plain

ミーティングの様子

 

まとめ

初めて参加したRubyKaigi 2019でたくさんのエンジニアの方からたくさんの話を聞き,たくさんの企業様と交流することができ,今まで知らなかったことがたくさんあることに改めて気づかされました。

今回,招待ツアーに選んで頂いた株式会社永和システムマネジメント様のおかげで4泊5日充実した日々を過ごすことができました。

誠にありがとうございます。

また,Rubykaigi 2019を運営して下さったスタッフのみなさまありがとうございました!!

YAPC::Tokyoに行ってきた^ - ^

YAPC::Fukuokaから初参加し,去年はYAPC::Okinawaでボランティアスタッフとして参加しました。

 

初めて参加した時からPerlを全く書くことはできませんが,YAPCはとても熱いカンファレンスだと思っています。OSS活動やコミュニティ運営でみんなで支えながらいいものを作ろうとする姿勢が私はとても大好きで今回のYAPC::Tokyoにも参加することを決めました!!

f:id:takezyo:20190128165537j:plain

はじまる5分前

 

初参加から技術力も上がり理解できることも増えて違った印象でトークをきくことができました。

 

特に印象に残ったトークを紹介していきます。

チームが前に進み続けるために僕たちが考えたこと

f:id:takezyo:20190128165622j:plain


チームが前に進み続けるために僕たちが考えたこと / YAPC::Tokyo 2019 - Speaker Deck

 アルバイトをしていることでチーム開発をする機会があり,スクラムをとりいれた開発をする機会があります。別にスクラムマスターでもないので,深くスクラムのことは知らなかったのですが,考え方や試行錯誤のやり方の勉強になりました。特に振り返りをするときに感情を導入して可視化するところはとてもいいアイデアだと思いました。

 

座談会

f:id:takezyo:20190128165607j:plain

座談会はYAPC::Fukuokaに参加しYAPC::Okinawaにはボランティアスタッフとして参加したこともあって聴講しました。コミュニティ運営の大変さや横との繋がりの大切さを聞くことができました。また,モデレーターとゲストのやりとりも軽快で面白く最高でした。

 

最後に

3回目の参加になったのですが,YAPCでトップエンジニアの方のトークを聞けることやコミュニティへの考え方を学べることはとてもいい経験になり,将来大きなカンファレンスを駄目もとでもやってみたいとも思いました。

 

交通費支援をして頂いたスポンサー,運営設営してくださったスタッフ,面白い技術のトークPerlに対する熱い思いを話してくださったスピーカーの皆様本当にありがとうございました。

YAPC::Fukuokaに初参戦!!!

今回参加したきっかけは友達の一言でした。


YAPCがFukuokaであるよ!!


出身が福岡県ということもあり速攻で参加することを決めました!

 

僕は,Perlの基礎が少しわかる程度で全く書くことはできないのですが,

それでもエンジニアの方と交流できるだけで参加の価値があると思ったので参加しました。

 

 

僕は,前夜祭からの参加したのですが,

もう前夜祭のLTソンから凄まじい盛り上がりでとてもびっくりしました!

f:id:takezyo:20170704011016j:plain

 当日はLINEキャラクターのお出迎えがありました。

 

 印象に残ったトークの話になります。

f:id:takezyo:20170704011010j:plain

ベストトーク賞を獲った@ockeghemさんの「ウェブセキュリティの最近の話題早分かり」,まったくPerlがわからなくてもIT業界にいるなら知っていた方がいいことや最近の脆弱性を知ることができました。また,かなり分かりやすいデモと笑いも少しあってとても勉強になるものでした。

 

Perl6の話題もかなり興味深いものになっていて,わからないことのほうが多かったのですが,調べて勉強してみようと思います。

 

f:id:takezyo:20170704011116j:plain

懇談会終了後,中洲の屋台で食べた焼きラーメンも最高でした!!!

まとめ

今回初めてYAPCに参加して,さまざまな技術の話を聞くことや技術者の方と交流することができ,素晴らしい経験ができたと思います。

これもスポンサー,スタッフ,スピーカー,参加者の皆様のおかげだと思います。

本当にありがとうございました。

次回のYAPC::Okinawaにもぜひ参加したいと思います。

 

YAPC::Fukuoka サイコー!!!!!

西野カナの歌詞スクレイピングしてみたよー

3ヶ月前くらいの話です。
GithubGistに公開したのでブログ更新します!!!

なぜ西野カナスクレイピングをしようと思ったかと言うと, PyData.Okinawa #20であったRNN(リカレントニューラルネットワーク)で 次にくる文字を予測というのがあり誰かの歌詞を予測してみようということから西野カナの歌詞をスクレイピングしてみました。

歌詞の情報をスクレイピングできるサイトは限られています。
※正直コードは汚いです。

Ryu SDN Framework を導入する

<構築環境>

<VMを作成>

$  mkdir ryu
$  cd ryu
$  vagrant init
$  vim Vgrantfile

ubuntuのイメージのダウンロード

$  vagrant box add ubuntu1604lts https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box

Vgrantfileを編集

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu1604lts"

  config.vm.network "private_network", ip: "192.168.33.16"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
  end
end

編集が終わったらVMを立ち上げます

$  vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu1604lts'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: ryu_default_1493789865556_15822
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
<省略>

立ち上がったらログインします

$  vagrant ssh

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-38-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

ubuntu@ubuntu-xenial:~$

<Ryuのインストール>

まずapt-getをアップデートします

$  sudo apt-get update

pythonがなかったのでpythonをインストール(pythonは2.7系)
同時にpipとその他もインストールします
pipがインストール終わったらアップグレード

$  sudo apt-get install -y python
$  sudo apt-get install -y python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
$  sudo pip install --upgrade pip

それではRyuをインストールします

$  sudo pip install ryu
$  ryu --version
ryu 4.13

Ryuのインストールが完了
Mininetを使用することにより、ユーザは複数台のPCを用意する事なくOpenFlowが動く環境を簡単に用意できるので次にMininetインストール
gitがインストールされてないならgitをインストール

$  git --version
git version 2.7.4
$  git clone git://github.com/mininet/mininet
$  cd mininet/
$  git checkout -b 2.2.1 2.2.1
$  cd ..
$  mininet/util/install.sh -nfv
$  man mn

man mnインストールできているか確認 Mininetのインストールが完了

<RyuとMininetの動作確認>

サンプルが以下のディレクトリに入っている /usr/local/lib/python2.7/dist-packages/ryu/app/ 実行時にこのパスを入力するのは面倒なのでシンボリックリンクを作る

$  ln -s /usr/local/lib/python2.7/dist-packages/ryu /home/ubuntu/ryu

コンソール2つ開いてMininetとryu-managerを触る
まず,コンソール1でsimple_switch.pyを起動し、接続する

$  ryu-manager ryu/app/simple_switch.py

この時に,error: [Errno 98] Address already in useというエラーがでたら下記を実行する

$  sudo lsof -i -nP
ovs-testc 16342   root    3u  IPv4  40523      0t0  TCP *:6653 (LISTEN)

上記のプロセスがあるならkillする

$  sudo kill 16342

コンソール1でsimple_switch.pyを実行しておき
コンソール2でMininetを実行する

$ sudo mn --controller remote
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet> 

pingallと入力すると下記のようになればOK

mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 
h2 -> h1 
*** Results: 0% dropped (2/2 received)

これで動作確認完了です

<参考文献>

【SDNチャレンジ】 第16回 Ryuコントローラインストール編
Mininet + ryu インストールと実行まで