YAPC::Tokyo 2019に参加してきました

こんにちは,ミツバです.

YAPC::Tokyoに参加してきたので,その参加レポートを書きます.

参加したきっかけ

普段はPerlを書いたことが全くない僕ですが,シェル芸などのトピックでPerlを利用したワンライナーがあったりして少し興味はあったりしてました. しかし普段はawksedに甘える毎日を送っており,Perlを触る機会を作ってこなかったです. そんなときにYAPC::Tokyoというカンファレンスがあることを知り,ここでPerl入門を決意しました.

前夜祭(カンファレンス前日)

カンファレンス前日には前夜祭があり,なんとか遅刻せず参加してきました. 前夜祭では,テンポよくLTが繰り広げられ楽しい会でした.

発表も面白く,内容としては,

  • PerlLispインタプリタを書いて,その上でPerlを動くようにしたものの発表を聞いたり,
  • 日本の祝日についてのライブラリ更新事情を聞いたり,
  • AWS CDKのお話を聞いたり,

様々な方面で楽しい会でした.

以下に会場の様子の写真を貼っておきます.

f:id:MitubaEX:20190127173214j:plain
ご飯の様子です

カンファレンス当日

カンファレンス当日は11時からオープニングトークが開始されました. 今年のテーマは報恩謝徳,「恩に感謝し報いること」という意味があるそうです. 深い.

僕が聞いたトークを並べるとこんな感じです.

  • チームが前に進み続けるために僕たちが考えたこと
    • papixさん
  • 私とOSS活動とPerl
    • duck8823さん
  • メッセージングのプロトコル
    • 加藤亮さん
  • ゲストスピーカー: 大仲さん
  • ゲストスピーカー: 広木さん
  • ログにやさしいDB設計
    • fist0さん
  • CPAN Module Hacks
    • akiymさん
  • ISUCON8予選問題作成の裏側
    • karupaneruraさん
  • 多くのCPAN Authorに育てられ、息をするようにCPANモジュールを書けるようになり、そして分かったこと
    • songmuさん
  • キーノート: tokuhiromさん

どの発表もためになるものばかりで聞いていて気持ちよかったです.

特にゲストスピーカーのお三方の話は,どれも興味をそそられ釘付けになって聞いていました.

大仲さんは,Perl on RailsというテーマでRailsの力を用いて,Perlのプロダクト開発の効率を高めることを目指したお話をされていました. 名前からすごく面白いテーマですが,中身はすごくしっかり考えられていてAPI REPLなども作成し,より効率化を図っていました. APIのテスト用のREPLという発想は僕には全然なかったので,すごく知見をえれました. そしてActiveRecodeを入れてER図を自動で生成できるようにしたりと,Rubyを長年やってきた大仲さんだからできる応用力なんだなと思いました.

次に広木さんのお話では,「エンジニアリング組織論への招待」に関連したお話を聞きました. ここで印象的だった言葉が,「エンジニアと非エンジニアの非対称性を埋める」という言葉です. ここでの「非対称性を埋める」という言葉は,他者との知識の共有度合いを均等にすることだと,私は捉えました. そしてこれによって,ソフトウェア開発の様々な不確実性を減らしていこうというテーマのお話でした.

speakerdeck.com

最後にキーノートのtokuhiromさんのお話では,tokuhiromさんのPerlに触れてきた人生のお話を聞きました. そしてコミュニティへの貢献方法のお話も聞きました. 僕はsongmuさんのトークも聞いており,それと合わせてもっとアウトプットしていかないとと思いました. 最後のスライドには「Future Perl Community is You!」という言葉がありすごくエモかったです.

以下に会場の写真を載せておきます.

懇親会

Acmeという言葉がよくわかっていなかったのですが,丁寧に教えていただき興味を持ちました. あとは内定先のメンターと話したり,楽しく過ごしていました.

感想

Perl全然わからんという状態で参加したものの,すごく初心者にも親しみやすい発表が多くて勉強になりました. 今年が初参加だったのですが,来年も参加してLTとかしてみたいなと思いました.

最後にPerlに入門できたのか?という話なのですが,モジュール周りのお話は入門できたかなと思いました.これから他もやっていきたいと思います.

freeeに内定をもらうまでの人生

こんにちは,freeeに19卒で入社するミツバ(中村潤)です. これはfreee 19新卒Advent Calendar 2018の14日目の記事です

adventar.org

内定式では特にニックネームについて言ってなかったのですが,ミツバが僕の本名みたいなものなので気軽にミツバと呼んでください.😎

最近の関心ごとは,Haskell圏論です.趣味は,アニメ鑑賞(GRIDMAN)とVTuber鑑賞(ハニスト)です.

何書こうかなぁとか考えましたが,みんな内定をもらうまでのいろいろを書いているので,僕も便乗することにします. ちなみに僕が過去に書いたそれっぽい人生の記事はこちらです.

note.mu

インターンまで

freee社のことは逆求人で知って,去年先輩がインターンに行ったとのことだったので少し興味が湧いてエントリーしました. 面接を何回行ったとかはあまり覚えていませんが,GO言語がよさみに溢れてそう!みたいなことを喋ったら通った記憶があります.

インターン

僕が参加したインターンは,2017/8/21(月)~ 2017/8/25(金)の一週間のものです.

あと,当時の僕のツイートも合わせて載せておきますね.(なんで?)

インターン初日

この日は,会社に初出社し挨拶なりなんなりをしてメンターと挨拶をした後,即昼飯って感じでした. ここでAdvent Calendar1日目のスポーンくんと奇跡の邂逅を果たします.

そのあとは,PCのセットアップ周りをずっとして1日がすぎました. 特にリポジトリをcloneするのにすごい時間がかかり,僕はその間にコーラを3杯は飲んだと思います. そしてこのインターンのおかげでコーラが飲み放題の会社,神では!?と思ってしまい,この後の就職活動で出会った会社にはコーラが無料か?と質問しまくる人間になってしまった・・・😫


インターン2日目

業務のissueを一つもらってそれをやる流れでした.

某社員の人にVim (Editorです)はやべぇみたいなことを言われた気がします.でも当時の僕はそれほど強くなかったので,お恥ずかしい限りです.😱

  • これが当時の僕のvimrcです.

  • これが今の僕のdotfilesです.

◯◯が入ってないやん!って思った方は,優しく裏で教えてください!


そしてissueでは,フロントの改修を任されていたのでReactを学びつつコードを読んでいました.

Reactをインターンで初めて触って二日目で概念を理解するところまでいけました.最高にqiitaを漁った記憶があります.同じインターン生でインターン中にTour of Goをやって即実践している人もいて,みんな早えぇなって感じでした.


インターン3, 4日目

こっからはずっとコード読んでた気がします.

3日目には退勤後,串カツ田中で社員の方達と飲みを行いました. ちなみに串カツ田中は,関東圏に大量にあるのですが関西には全然ないので存在を知ったのはこの時でした.

👇は串カツ田中のスタンプで,社内slackでなかなかの頻度で使われていました.

f:id:MitubaEX:20181214135102g:plain
串カツ田中スタンプ


インターン最終日

最終日は,自分の一週間でやったことを紹介する感じでした. 僕の発表は,ぼちぼちウケていたのでウケる.😼

その後

インターン後,面接がぽつぽつあり気づいたら内定をもらっていて,内心は!?!?って感じでした. そこからは12月まで就職活動を続けて,freeeの内定を承諾した流れです.

言いたいこと

インターンに行ったことで物事の考え方が変わったし,本当に行って良かったなと思ってます. 僕は個人的にいろんなものを雑に触るのが好きで,そこまでスペシャリストになるわけではないという人間です. なので,初めて触る技術の取っ掛かりも雑に理解しようとしました. それが逆に良かったのかなぁと思ったりしています. もしすごく奥の奥まで調べ上げるような人間だったら,多分インターン中に一つもissueをこなせなかった説が濃厚です.(そもそも実力があまりない)

何が言いたいかというと,別に未経験とか経験が豊富とかはあんまり関係がなくてどう物事を自分の考えに落とし込むかがこの先たくさん必要になってくるだろうから,頑張っていこうぜ!ということです. なので,みんな爆速で「完全に理解した!」と言うべきだと思っています.はい.🙋‍♂️

偉そうなことを言いましたが,こういうポエムが好きなので仕方ない.

ちなみに同じ19卒内定者のnakochiさんの記事が最高に心に響く内容だったので,ぜひ読んでください.😆

note.mu

最後に

長くなりましたが,こういう記事を書ける機会を作ってくれたfreee19卒内定者のみんなに感謝.

明日の記事は中川くんです.お楽しみに!

Macの日本語入力のためにSKKを導入した

SKKとは

Emacsのために開発された日本語入力システムだそうです。(僕はVim使い)

SKK - Wikipedia

Install

今回はMacを利用するので、codefirst/aquaskkを利用しました。

↓のReleaseページにpkgファイルが置いてありました。

releases

Usage

まずインストールが完了したら、キーボードの環境設定から入力ソースの中にAquaSKK 統合を選択してください。 すると利用できると思います。

SKKにはいくつかモードがあるらしく、それを紹介しておきます。

  • 日本語入力モード
  • カナモード
  • 英字モード

日本語入力モード (Ctrl + j で 切り替え)

日本語入力モードは、なにも押さない状態で日本語を打つとそのままひらがなが入力されます。 そして漢字変換をおこない場合は、Shift + 何か入力したい文字 を入力してください。 すると▽が出てくると思います。 そこで変換したい文字列を打ち、Spaceを入力するとその漢字の候補があれば変換してくれます。

そして、SKKは辞書に登録されていない変換をしようとすると、候補がないことを伝えてきます。 この時、ユーザはSKKに自分の変換したい文字列を伝えることで、SKKは次からその単語を候補として出してくれます。

つまり、自分で育てる日本語入力システムという感じですね。

辞書への登録を行なう時は、そのまま [登録:へんかんしたい]変換したい のように入力すると登録してくれます。

カナモード (q で 切り替え)

ただカタカナが無限に打てるモードです。

英字モード (l で 切り替え)

ただ英字が無限に打てるモードです。

↓のマニュアルに書いてあることが大体いけます。

SKK Manual

感想

SKKの個人的に気にいっている所は、エンターを入力する頻度が少なくなったことです。 普通の日本語入力だとひらがなでも、エンターを入力しないといけませんもんね。 しかし、Shiftを入力する頻度がすごく多くなっている感じで、どっちがいいのかはわかりません。 でもこれで少し日本語入力が楽しくなった気がします。(モードという概念)

Rust本を読んだので,学んだこと諸々を書いておく

若干理解が足りない部分もあるが,個人的に面白かった項目を書いておく.

参照周り

Rustは値ごとに所有権を有しており,その扱い方がいろいろある.

移動

所有権を移動した値を再度使おうとするとエラーが出る. メモリ上の動きとしては,sのヘッダ情報には {ヒープ領域へのアドレス,capacity, length} が入っており,このヘッダ情報(3ワードのみ)をtに移動する.

下は移動された後の変数を使おうとするとエラーを吐く例.

fn main() {
    let s = vec![1, 2, 3];
    let t = s;
    println!("{:?}", t);
    println!("{:?}", s);
}

// error
3 |     let t = s;
  |         - value moved here
4 |     println!("{:?}", t);
5 |     println!("{:?}", s);
  |                      ^ value used here after move

関数の引数として移動する場合もエラーを吐く.

fn print_vec(v: Vec<i64>) {
    for val in v {
        println!("{}", val);
    }
}

fn main() {
    let v = vec![1, 2, 3];
    print_vec(v);
    println!("{:?}", v);
}

// error
9  |     print_vec(v);
   |               - value moved here
10 |     println!("{:?}", v);
   |                      ^ value used here after move

借用

参照を渡すことで,所有権を借用できる. 所有権は一時的に貸し出され,その後帰ってくる. なので以下のコードはエラーを吐かない.

fn print_vec(v: &Vec<i64>) {
    for val in v {
        println!("{}", val);
    }
}

fn main() {
    let v = vec![1, 2, 3];
    print_vec(&v);
    println!("{:?}", v);
}

// output
1
2
3
[1, 2, 3]

Copy型

Copy型は移動した場合,Stack領域に値のコピーが作成される.

下のコードは,Copy型であるi32を移動させた時の例. 基本的にヒープ領域にある値を参照している型は,Copy型ではないので,移動した時にコピーは作成されない.

fn main() {
    let s: i32 = 1;
    let t: i32 = s;
    println!("t: {}", t);
    println!("s: {}", s);
}

// output
t: 1
s: 1

Box

T型の変数を受け取りそれをヒープ領域に写してその参照を得る. Boxの変数の参照が切れると,内部の参照がもつ領域は解放される.

以下のexampleがわかりやすい.

Box, stack and heap - Rust By Example - Rust Documentation

エラー周り

Result型

Eitherみたいなアレみたいな感じ. 値を取り出すときはパターンマッチで,OkかErrを判定して値を取り出す. ?演算子は,その関数でエラーが起こったらErrを返し,正常に関数が実行できたら次の行へと処理を移せる最高のやつ. 難しいことを考えず,手続き型のように書けるのがいいですね.

use std::io::prelude::*;
use std::fs::File;
use std::io::Result;

fn read_file(filename: String) -> Result<String> {
    let mut file = File::open(filename)?; // => Err?
    let mut contents = String::new();
    file.read_to_string(&mut contents)?; // => Err?
    return Ok(contents);
}

fn main() {
    let contents = read_file("foo.txt".to_string());
    match contents {
        Ok(v) => println!("{}", v),
        Err(e) => panic!(e),
    }
}

// foo.txt
1
2
3

// output
1
2
3

Option

SomeとNoneでパターンマッチして,分岐したりできるいろんな言語でよくあるやつ.

fn div(a: i64, b: i64) -> Option<i64> {
    if b == 0 {
        return None;
    }
    return Some(a / b);
}

fn main() {
    let val = div(10, 5); // => 10 / 5
    match val {
        Some(v) => println!("{}", v),
        None => println!("None value"),
    }
    let none_val = div(10, 0); // => 10 / 0
    match none_val {
        Some(v) => println!("{}", v),
        None => println!("None value"),
    }
}

// output
2
None value

パターンマッチ

Rustには,パターンマッチがあるのでいろいろ分岐が可能. listパターンみたいなものはないっぽい?

下のexampleがわかりやすくて良いです.

All the Pattern Syntax - The Rust Programming Language

トレイト

みんな大好き型クラス的なアレみたいな感じ. impl <trait> for <struct name>とかで実装する.

use std::ops::Add;

struct User {
    name: String,
}

impl Add for User { // impl Add trait
    type Output = Self;
    fn add(self, other: Self) -> Self {
        return User{name: self.name + "_" + &other.name};
    }
}

fn main() {
    let mituba = User{name: "mituba".to_string()};
    let mother = User{name: "mother".to_string()};
    let mituba_mother = mituba.add(mother); // mituba + _ + mother
    println!("{}", mituba_mother.name);

    let mituba = User{name: "mituba".to_string()};
    let father = User{name: "father".to_string()};
    let mituba_father = mituba + father; // こうも書ける
    println!("{}", mituba_father.name);
}

// output
mituba_mother
mituba_father

PartialEqを実装して,assert_eqとかできるようにする.

use std::cmp::PartialEq;

#[derive(Debug)]
struct User {
    name: String,
}

impl PartialEq for User {
    fn eq(&self, other: &User) -> bool {
        self.name == other.name
    }
}

fn main() {
    let mituba = User{name: "mituba".to_string()};
    let mother = User{name: "mother".to_string()};
    assert_ne!(mituba, mother);

    let mituba = User{name: "mituba".to_string()};
    let mituba2 = User{name: "mituba".to_string()};
    assert_eq!(mituba, mituba2);
}

下のドキュメントにポリモーフィズムぽいやつも記載されている.

Advanced Traits - The Rust Programming Language

クロージャ

関数っぽく書けたり,map関数などに渡せる高階関数的なアレな感じ.

fn main() {
    let cl = |x: i64| -> i64 x + 1;
    println!("{}", cl(1));

    let cl2 = |x: i64| -> i64 {
        let x1 = x + 1;
        return x1 + 2;
    };
    println!("{}", cl2(1));
}

// output
2
4

mapにクロージャを食わせる

fn main() {
    let v = vec![1, 2, 3, 4, 5];
    v.iter().map(|x| x + 1).for_each(|x| println!("{}", x));
}

// output
2
3
4
5
6

移動(クロージャ)

fn main() {
    let v = vec![1, 2, 3, 4, 5];
    let cl = |vc: &Vec<i64>| vc.iter().for_each(|x| println!("{}", x));
    cl(&v);
    println!("{:?}", v);
}

// output
1
2
3
4
5
[1, 2, 3, 4, 5]

fn main() {
    let v = vec![1, 2, 3, 4, 5];
    let cl = |vc: Vec<i64>| vc.iter().for_each(|x| println!("{}", x));
    cl(v);
    println!("{:?}", v);
}

// output
9  |     cl(v);
   |        - value moved here
10 |     println!("{:?}", v);
   |                      ^ value used here after move

下のドキュメントに他の事柄はいろいろ載ってます.

Closures: Anonymous Functions that Can Capture Their Environment - The Rust Programming Language

まとめ

Rustは,今までのプログラミング言語には若干ない概念があったりして,少しとっかかりづらい面もある感じですが,やってみると意外と面白かったりするので是非. お堅い言語かと思いきや意外と柔軟だったり.

本を読んだ後に参考にしたドキュメントです.ドキュメントが本当にしっかりしているのに感動したりして最高.

Foreword - The Rust Programming Language

arch linuxのwindow managerとしてi3を導入した

arch linuxにwindow managerのi3を導入したので、やったことを書いておきます。 デスクトップ環境はfcitxを使用しています。

i3の導入

sudo pacman -S i3

# 背景画像とかを設定する場合
sudo pacman -S feh compton

.config/i3/configを記述する

設定ファイルは以下に置いています。

github.com

ほぼ下のconfigファイルを参考にしました。 少し加えたところとして、fcitxを用いるのでexec --no-startup-id fcitx を追加しました。 あとは不透明度とかを変更しています。

設定ファイルに書かれている $mod とは、MacだとCmdキーになります。(おそらくPCで変わると思います)

github.com

i3を用いて起動する

rebootしてログインするところまできたら、右上の電源ボタンなどが並んでいるメニューバーがあります。 そこのおそらく一番左端にあるボタンを押しi3を選択し起動でOKです。

$mod + Returnでターミナルが立ち上がると思います。(僕はalacrittyが起動するようにしています)

スクショ

こんな感じになる

まとめ

window間をゆるく移動できるようになり、移動しているだけで楽しい感じになりました。 みなさんもぜひこの楽しさを味わってください。

Arch LinuxをMac Book Proにインストールした

こんにちは.

やっとの事でArch Linuxのインストールに成功したので,やったことを書いておきます.

Bootable USB

以下のWikiのコマンドでいけます.4GのUSBでも十分でした.

USB インストールメディア - ArchWiki

Install

手順は,下記のブログを参考にしてコマンドを打っていったらできます.ありがとうございます.

Arch LinuxをUEFI + GPT環境にインストールする

ここで最後にarch-chrootから抜けてrebootをするのですが,僕は無線LANでネットに繋いでおりwifi-menuというコマンドを使っていました. このコマンドはインストールメディア内だったら動くのですが,実際にインストールしたディスク上では動きません. その理由として,wifi-menuの起動に必要なwpa_supplicantdialogが存在しないからです.

arch-chrootを抜ける前に,以下のコマンドでInstallすることを忘れないようにしましょう.(wifi-menuを利用する場合)

 pacman -S wpa_supplicant dialog 

ちなみにwifi-menu -oとするとnetctl用の設定を吐いてくれるので,後はnetctl enable <config file>とかで設定してネットワーク設定も可能です.

Configuration

以下の二つの記事を見つつ設定すると,動きました

ここは特に問題なくいけました.

Keyring

gitを使う上で毎回パスワードを求められる現象が起こるので,以下の記事を参考に設定します.

hajime-mat.hateblo.jp

その他

以下の記事も参考にしました.

qiita.com

qiita.com

まとめ

今の所は,起動がすげぇ早かったりMacで動かなかったHaskellのコードが動いたりありがたい感じの毎日を過ごしています.

すぐ消して再度インストールできるようにインストールスクリプトを作成しようと思います.

#builderscon 参加記 3日目

builderscon 三日目

聞いた話のメモと感想を書いていきます.

全てのエンジニアに知ってもらいたいOSの中身について

speakerdeck.com

ariakiさん MEDIA DO

最近のOS事情

  • OSの選択やOSのカスタマイズをする必要があまりなくなって来た
  • Dockerなどが登場して関心ごとがアプリケーション側へ
  • setenforce 0
  • OS認知の低下
  • PaaS, FaaSの流行り
  • Web,機械学習の流行
  • アセンブラC言語の認知度の低下
  • OSの中身を知ると少し幸せになるかも

CPU

  • x86はIntel8086が元,x86,16bit ia32,32bit
  • 40年前のCPUと互換動作する
  • メモリが1MBだったら640KBしかアクセスできず,セグメントで区切られている
  • プロテクトモードにバグがあり,使えないはずの64KBが使えるようになった
  • バグだったがこのバグを閉じず,今も使用できる

レジスタ

  • 変数を記憶できるやつ
  • めちゃくちゃ早い
  • メモリよりレジスタの方がCPUの中にあるので高速
  • 汎用レジスタは4つしかない

モード

  • リアルモード -> プロテクトモード -> ロングモード
  • リアルモード,いろんな場所に書き込み可能,フリーダム
  • プロテクトモードでいろいろと制限されるようになった

プロテクトモード

特権管理

一般保護例外

メモリ管理

  • 一番小さい範囲 -> ページ
  • ページのリストみたいな -> PTE
  • PTEのリストみたいな -> PDE
  • ページング
  • リニアアドレス(上記の領域)をまとめた区間 -> セグメント

タスク管理

ブートシーケンス

  • BIOS -> Bootstrap Loader -> Kernel Loader -> Kernel
  • 0x7c00に書き込む -> 先頭は予約されており末尾から読み込むことを考えた

システムコール

  • Application -> User Land -> System call -> Kernel
  • User Landにはシェルなどが入っている
  • straceでシステムコールを確認
  • puts -> writeが呼ばれる

system call table

感想

結構知らなかった知識がふんだんに盛り込まれていたので,楽しく聴くことができました. やっぱり昔を振り返ることも重要なんだなと思いました.

高集積コンテナホスティングにおけるボトルネックとその解法

speakerdeck.com

pyama86さん ボトルネックの探し方

sntsを作成

HACONIWA -> mruby製コンテナエンジン

コンテナの話

  • コンテナ=プロセス

namespace

  • ip a -> bash -> unshare --net -> ip a
  • unshareでホストとゲスト間の分離を行える

chroot

cgroup

  • リソース割り当て

capability

  • プロセスが持つ特権を調べる
  • LXCで学ぶコンテナ入門が参考になるらしい

FastContainerアーキテクチャ

  • FastCGIから
  • プロセスをフォークし一定時間動いたら止める
  • コンテナを起動して,一定時間動いたら止める
  • データはストレージに置く

コンテナの起動をいかに早くするか

  • 監視コンテナが落ちる
  • ネットワークネームスペースの追加に一分ぐらいかかってる
  • ipコマンドでネットワークネームスペースを区切る
  • 名前が被ってるかも? -> そんなことはなかったらしい
  • straceコマンドでしらべる
  • unshareコマンドが遅いらしい
  • perf recode call graph -> 重くなっている処理を確認できる
  • slab -> deactivate_slabが重いらしい
  • dentryキャッシュ(ファイルのパスのキャッシュ)が多かった
  • キャッシュをクリアするようにして解決

  • Linuxブリッジの上限がある

  • ブリッジを分散して解決

  • cadvisor -> コンテナの情報を取れる

  • gdb -> コマンドの履歴を取得できる

  • ボトルネックが遷移した

  • 2500コンテナにするとまた遅くなる
  • ipコマンドにいらない処理があったので削除して高速化
  • valgrind -> HEAPのサマリーをとる
  • 4000コンテナ弱の起動ができた

感想

流れるようなプレゼンでそれでも多くの知識を漏らさず丁寧に発表されており,すげぇといった感じでした. 知らない便利コマンドがいろいろ知れてよかったです.

遠いようで身近なサウンドエンジニアリング

speakerdeck.com

@karupaneruraさん DeNA

趣味:サウンドエンジニア

レコーディング

一発どり

  • ノリでいけるが編集しづらい

バラどり

  • 楽器が多くなると編集が大変になってしまう
  • 市販のイヤホンで聞いて,聞きやすい音質に調整する
  • リマスター版とかは,音質をより良いものに調整して再配布する感じ
  • マイクは音の振動を電圧の変化に変換する
  • コンピュータの限界の音量を越えると音割れする

実際のギターによる実演

  • ギターの録音する位置によって音が違う (すごい)

感想

いきなりギターが出てきたときは,すげぇってなりました. でもサウンドにもいろいろ気を配ったりする箇所があるのだと知れて,とても嬉しかったです.

業務時間で書いたパッチは誰のもの? OSS 活動にまつわる罠

uchan_nosさん サイボウズ SRE

OSSに問題があったら自分で直す

OSSに不具合があったら,パッチを書く.そして貢献する.

もともと趣味で作っていたものが業務で使われている

業務時間を趣味のプロダクトに使っているのはいいのか?

ポリシー

Read the Docsで公開

policy

感想

まだ学生なので仕事上でのOSSの貢献の大変さについて知れてよかったです.

Building Self-Hosted Kubernetes

nasa9084さん

自動化された自律システム

いい感じにしてくれる

システムが落ちた時に自動で直してくれる

k8s

  • マイクロサービスと相性がいい
  • k8sもマイクロサービスである
  • k8sk8sで管理したい
  • k8s on k8s,上の層はk8sで管理されているが,下の層は人間が管理しないといけない

self hostedでのk8s

  • k8sを自分で自動で管理
  • k8s自体のログ:kubectl logs
  • k8s自体のstatus:kubectl describe

感想

k8sという言葉を無限に聴くことができて幸せでした. k8s on k8s は夢が広がります.

自作キーボード

speakerdeck.com

残念ながら立ち見でTwitterしかしていなかったのですが,自作キーボードあるあるが非常に詰め込まれてて共感できました. 私もつい先日自作キーボードのために半田付けやらをやっていて,今もまだ少し動いていない状態で放置しています. なので帰ったらまた再チャレンジしたいと思います.

LT

クッソ面白かった

まとめ

学生でぺーぺーの自分が初めてカンファレンスに参加して,それでも大いに楽しめたのでbuildersconに感謝してもしきれません. また来年も機会があれば行きたみが深いです.