RubyKaigi 2019に参加していました
遅くなりましたが、福岡国際会議場で2019/04/18(Tue) - 4/20(Sat)に開催されたRubyKaigi 2019に参加しました。
業務の都合で4/18は不参加でしたが、4/19, 4/20の2日間で10以上のセッションを拝聴しました。
参加してみての感想
過去にPHPカンファレンス福岡やBuildersconなどに参加したことがありますが、RubyKaigiは1000人規模のイベントで自分が過去に参加したカンファレンスの中で一番規模が大きいもので、参加人数も多いだけにかなり熱いイベントでした。
今年は福岡での開催でしたが、本編だけでなく初日のOfficial Partyは中洲川端商店街を貸し切って行っていたりと運営の本気さを感じたり、会場内の各企業ブースも気合が入っていて様々なノベルティを用意してくださっており、それらを見て回るのもすごく楽しめました。
今回、福岡での開催だったこともありかなり気軽に参加できたのですが、来年は長野の松本市での開催ということですが、機会があればまた参加してみたいと思いました。
印象に残ったセッション
最終日の最終セッションだったRubyの最適化周りについてのセッションは内容的にかなり印象的でしたが、 Optimization Techniques Used by the Benchmark Winners - RubyKaigi 2019
最適化周りでいうと個人的にはMessagePack-Rubyの話も大変面白かったです。
Performance Optimization Techniques of MessagePack-Ruby - RubyKaigi 2019
そして個人的に自分が一番印象に残ったセッションのタイトルはTerminal curses
でした。 理由としては普段の業務でターミナルをよく使っているため身近なものであったということがあります。
Terminal curses - RubyKaigi 2019
内容としては、前半はターミナルについての入門的な説明で、後半はcursesを使ったTUIを実装するための実装例の紹介でした。
また、発表自体もテキストエディタを使って発表されていて面白かったです。 github.com
まだ5/12日時点ではこのセッションの動画は公開されていませんが、Hall AでのセッションはYoutubeですべて公開されていそうでした。 www.youtube.com
RubyKaigi後
Terminal curses
というセッションを聴いたあと、発表内容で出てきた端末についてや、普段何気なくターミナル上でコマンド実行していたのですが、その処理の全体像についてについて調べたことを簡単にまとめてみました。
TLDR
- SSH接続したサーバ上では
/dev/pts/X
というデバイスファイルでサーバに端末(ターミナル)が認識されている$ tty
コマンドで現在のptsがわかる
- ターミナル上での標準入出力
- 標準入力: キーボード
- 標準出力、標準エラー出力: ターミナル
- 標準入出力とファイルディスクリプタ
端末(ターミナル)の種類
- tty
- 物理端末
- pts
- 仮想端末
- SSH接続した際に表示されるターミナルはpts端末として接続したサーバ上で扱われる
- 動作としてはttyと同じ
VagrantでCentOS 7を起動後、vagrant ssh後にtty実行してみた結果
[vagrant@server01 ~]$ tty /dev/pts/0
さらにもう1つターミナル開いてsshしてttyした
[vagrant@server01 ~]$ tty /dev/pts/1
参考: ttyとptsとptmxとpty - tweeeetyのぶろぐ的めも
標準入出力
- Linuxのキーボードでの入力は標準入力にデフォルトで紐付けられているため、普通に文字を入力するとターミナル上に入力文字が表示される
- Linuxの標準出力はデフォルトでターミナルに紐付けられているため、
$ echo foo
などの実行結果がターミナル上に出力される
Linuxターミナル、コマンドtips その3: stdin, stderr, stdout, リダイレクト, パイプ - 百日半狂乱
標準入出力とファイルディスクリプタ
- Linux上でファイルをオープンした場合、ファイルディスクリプタが返される
$ echo foo > out.txt
などのリダイレクトを用いた記述を理解するにはこのファイルディスクリプタ番号との関係を知っておくと良い
- 標準入力、標準出力、標準エラー出力の順でファイルディスクリプタ番号が0, 1, 2と割り振られている
ファイルディスクリプタとプロセスの関係性
- ファイルディスクリプタはプログラミングする上で普段はあまり意識しなくてよい
- しかしプロセスをForkして処理を実行するようなプログラムを作る場合には意識しておく必要がある
http://shinpeim.github.io/process-book/
まとめ
入出力周りはまだまだ面白そうなことがありそうなのでもっとLinuxの内部的なところを調べて行きたい