【惨敗しました】ISUCON9予選に向けて準備してきたこととやったこと

前回の更新が徳丸試験受験だったのでちょうど1ヶ月ちょっと空いてしまいましたね。

この1ヶ月の間、割とこのISUCON9予選に向けて準備してきたので、そのことについて書きたいと思います。 どんな問題だったかや、何をしたら早くなるなどの解説や、運営方針で色々あったことについては、この記事では触れません。

あくまで忘備録的に自分たちが何を準備してきて、当日何が出来たかをまとめておきます。 惨敗とはいえ、用意はかなりしてきたつもりなのでそれなりにためになる情報もあるんじゃないかなと思ってます。

f:id:zoe302:20190914152904p:plain f:id:zoe302:20190914152713p:plain

ISUCONってなに?

去年の参加記に説明あるので読んでみてください!

blog.zoe.tools

準備してきたこと

上記の通り去年のISUCON8で点数的には割と惜しいところまで行ったこともあり、今年こそは予選通過を本気で目指していました。 予選通過に向けて去年の振り返りをもとに練習を重ねました。

役割を決めての練習をする

今回チームメンバーは アッキー (@akki_megane) | Twitter02 (@cocoeyes02) | Twitter と参加しました。 それぞれ早い段階で役割を決めたのでその役割で練習をしました。 役割はざっくりこんな感じです。

役割を決めての練習は全部で6日ほど練習しました。 練習には過去問のISUCON5やISUCON8の予選問題を再現して練習してきました。

デプロイスクリプト用意しておく

これも前回の反省からの行動です。 事前に、用意できるものはできるだけ用意してきました。 用意したスクリプトなどはすべてgithub上で管理していました。 また当日のタイムライン管理もwikiで予めやることを書き出し、迷うことなく作業できるようにしておきました。

github.com

特に初期、サーバをもらってからやることはだいたい決まってるので、まとめています。

pprofを見れるように

ここは前回に比べて割とうまくできるようになったと思います。 web pprofを アッキー (@akki_megane) | Twitter が色々調べてくれたおかげでとても見やすく、分析に置いてもとても役立ちました。

f:id:zoe302:20190914153034p:plain

(写真は↑しかとってなかったのでこれだけ、、)

2チーム参戦

これについては自チームの話とは関係ないですが、身内のコミュニティから今回ついに3チーム参戦しました。 ずっとISUCON面白いぞ、といいながら練習会をやってきた甲斐がありました。どのチームもコミュニティ名の「oysters」に少しかけた名前で出場してくれてました

当日やったこと

書こうと思ったけど疲れてきたので特に工夫したことだけ書いて、あとは当日のgithubレポジトリを貼っておきます。

工夫したこと

ポモドーロ

25分で作業を行い、5分でやったことの報告と次やることの報告。2ポモドーロ進捗なかったらみんなで解決に当たる。という方針でやってました。

環境構築について

今回はalibaba cloudのコンソールから各参加チーム代表者が運営に共有されたイメージをもとにインスタンスを立てベンチを回すと言う形式でした。 なので、まず最初1台を立て準備を整えベンチを回し、初期バックアップなどのスクリプトを実行した後、そのインスタンスをもとにカスタムイメージを作成し、作成したカスタムイメージをもとに 4台 インスタンスを立てました。 2台は最初に立てたものと合わせて競技用のインスタンス、残り2台はチームメンバーの開発環境として配布しました。

施策の検証方法について

これは試行錯誤しながら思いついた方法ですが、開発環境として本番同等のインスタンスを渡すことが出来たので、アプリ側で改修したものが正しく改修出来ているかを確認する方法として、本物のポータルのベンチを使う、ということができることに途中で気づきました。具体的にはポータルでベンチを回す際にはグローバルIPアドレスとインターナルIPアドレスを入れてサーバを登録後、ベンチを回すのですが、どうせ本番提出時もベンチに使うIPはproxyしているwebサーバだけなので残り2つをチームメンバー二人のサーバを登録することで施策をそれぞれ改修してベンチを回してデバッグするということが出来ました。 おかげで、本番に上げたらベンチ落ちてまた改修、みたいなことを減らすことが出来ました。

当日レポジトリ

github.com

基本的に当日はこのissueをもとに行動していきましたのでだいたいやったこと、やろうとしたことはこれを追えばわかるはず。 (このレポジトリはこのブログを書くにあたって公開にしており、ISUCON開催中はプライベートリポジトリでやっていました。)

当日の様子 (ちなみにこのとき僕は熱を出していて、しんどかったのでノーリアクションですが、めっちゃ楽しかったのでISUCON終わる頃には熱が治ってました)

振り返り

チームで振り返りをしたら追記します!

最後に

運営さんいつもありがとうございます。 ISUCONもかなり規模が大きくなってきたので今まで通り出来ない部分や、期待も大きくなり大変な部分も多くあるかと思いますが、 いつも問題作成、運営してくださり、とても楽しく参加させていただいております! 特に今回は問題のクォリティも高くとても準備に力が入っておりとても満足させていただきました!

徳丸基礎試験を受けてきました

f:id:zoe302:20190808203904j:plain

こんにちは。 暑い日が続いてますね。 最近は 徳丸基礎試験(試験名:ウェブ・セキュリティ基礎試験) に向けて勉強してきていたので、受けてみての感想などをざっくりまとめたいと思います。

徳丸基礎試験(試験名:ウェブ・セキュリティ基礎試験)とは

これです。

peatix.com

セキュリティ界隈で有名な徳丸さん監修のウェブセキュリティ試験です。 今回はその基礎試験のベータ試験(第一回目)でした。

公開して1時間くらいで枠が埋まってしまったらしいです。

自分が申し込んだときは増枠前の最後の1枠だったので滑り込みセーフでした。

受けてみようと思ったきっかけ

徳丸試験のベータ試験が公開される前から徳丸試験というものを作っているという話は聞いており、 セキュリティは自身も気になっていた領域ではありました。 受験フォームが公開された日に知り合いが受けよう!と言ってシェアしていたので一緒に受けてみよう、という軽い気持ちで受けることにしました。 それに第一号合格者って響きが少しかっこいいなぁと思ったのもあります。

試験までの勉強方法について

試験までは約1ヶ月弱くらいでした。試験までの間の土日などを使い主に下記の本を読みながら勉強をしていました。

出題範囲の本の内容を軽くまとめて事例ベースで紹介しているような感じの本でした。 期間もあまりなかったので基本的にはこの本を読んで出そうなところを勉強するスタイルですすめていました。

受験ページに書いてありますがこちらが出題範囲の本です。この本はウェブセキュリティについてすごくまとまっておりとてもいい本で、ウェブエンジニアなら一冊は手元に置いておきたい本ではあるのですが、一ヶ月で読むには少し量が多かったですwなので基本的にはサラッと読み、自分の知識が足りない部分について補てんするように読んで行きました。

受けてみての感想

正直自分はあまりこういう試験を受けた経験がないことと、この試験は今回が第一回目だったこともあり、どれくらい勉強をすればいいか、合格ラインがどれくらいか、というものがわからず、割と闇雲に勉強していました。 まぁセキュリティの勉強なので勉強して無駄になるということは特にないので、問題はないのですが資格試験を受けるための勉強方法としてはコスパ悪い勉強方法だったな、と少し振り返りました。 また、試験の内容については口外できないので省きますが、勉強してみた結果、自分のセキュリティ知識でどこらへんが弱いのか認識できたことはとても良かったです。 意外と知らない攻撃手法や脆弱性があったり、知ってるつもりでもいざ説明しようとするとできないところとかがありました。

試験勉強をするということ自体久しぶりで少し懐かしい気持ちになったりもしました。普段は自分の今使いたい技術を思いつきで調べて学ぶということが多いので たまには、今回のように目標を決めて時間をとって体系的に技術を学んでみるのも面白いですね。

試験結果は3ヶ月くらいで出るらしいです。 結果が出るのが楽しみです。ドキドキ。結果出たらまたブログに書こうと思います。

【開催レポ】無限LT会 #2 【まだLT事前に作ってんの!?】

無限LT #2 運営一同
無限LT #2 運営一同

気づけばあっという間に7月ですね。 LT会やらもくもく会やらいろいろイベント企画したりISUCON練習してたりしてたら6月も終わってました。 あ、あと最近知り合いに誘われてサバゲにもちょこちょこ顔だしていました。

無限LT会 #2 開催しました

前回 5/12 に無限LTを開催しました。

blog.zoe.tools

前回のイベントを開催したときは準備期間が実質1週間ほどでしたが、

今回は準備期間1ヶ月ちょっと時間を取って入念に準備をしてきました。

準備期間を多く取ったので、いろいろ新たな取り組みをしてみたりしていました。

参加者の皆さんに少しでも楽しんでもらえてたら幸いです。

コンパスページは下記です。だいぶ煽ったサブタイトルですねw

このコンパスページを公開してから1日と経たずに参加枠が埋まってしまい、運営一同ビックリしていましたw

oysters.connpass.com

当日の様子

当日はハッシュタグで参加者の皆さんにいろいろつぶやいてくださってるので見てみてください〜。

togetter.com

発表順は司会がシャッフルして決めます。

発表順をシャッフルするキュアセブン
発表順をシャッフルするキュアセブン

下記発表の一部です。

今回からの取り組みとして、各LTのなかからベストLTを決めました!

無限LT会 #2 のベストLTに輝いたずんださん

ベストLTに輝いたずんださんには「無限LTシャツ」を贈呈させていただきました。

最後は懇親会でみんなでのんびりお話してました。

懇親会の様子
懇親会の様子

最後に

次回の無限LT会の運営準備もすすめています。また準備ができたら、コンパスページで募集しますので楽しみに待っていてください!

【開催レポ】 Oysters ゆるゆる無限LT #1 【運営視点】

f:id:zoe302:20190515112703j:plain

どうもお久しぶりです。

今回は私が所属している Oysters という若手ものづくりコミュニティで企画、開催したゆるゆる無限LTの運営側の立場で記事を書きたいと思います。

oysters.connpass.com

無限LT 開催のきっかけ

もともと、OystersにはLTジャンキーが多数存在しており、LT会を不定期開催していました。

そんなLTジャンキーが集まったLT会が普通に終わるはずもなく、気づいたらみんなLTを聞いているうちに次のLTネタを作り、そのまま発表しだす、ということが起きました。この発表スタイルがLTジャンキーたちにはひどく好評で無限LTと勝手に名付けられ、その後も不定期で開催されていました。

その後、某氏によってオープンな活動としてやってみたい、ということで提案を頂き、開催に至りました。

その経緯などについては下記ブログ参照。

www.nyamucoro.com

Oysters 所属メンバーから運営メンバーを募り、内容や会場確定、企画から開催までを急ピッチで準備を進め公開したイベントページが上記のコンパスページとなります。

会はどうだった?

会の運営は参加者の協力もあり非常にスムーズにいきました。会のアンケートもとったのですが、皆さんとても満足いただけたようで、運営としてとても嬉しかったです。

実際の会がどうだったか等については参加者がいい感じにまとめてくれてたり、ツイッターハッシュタグに投稿してくれているので、ここでは言及はしませんが、気になる方はぜひそちらも参照してみてください。

ハッシュタグ

twitter.com

参加者のブログ

shiningcureseven.hatenablog.com

scrapbox.io

blog.pinkumohikan.com

(こちらは主催、企画者だけど) www.nyamucoro.com

どんなことしたの?

今回、主催は ういろう🍤👩🍤@新卒3年目PHPer (@nyamucoro) | Twitter が引き受けてくれたので、私の方では必要そうなタスクの洗い出しや、相談役、手が回ってなさそうな部分のサポートに徹するようにしていました。

タスクの洗い出しや、タスク管理に関しては github の イベント企画 issue で議論の上、別途派生した issue を切り、プロジェクトで進捗管理をしていました。

開催までの issue github.com

タスク管理用のプロジェクト

github.com

特にどんなことに気をつけていたの?

会の開催までで気をつけないと行けない大きなタスクとしては、下記の通りです。

  • 日程のFIX
  • 会場の確保
  • イベントページ(Connpassページ)の公開

上記タスクについては、どれがかけても開催することができず、それぞれ相互に作用し合うタスクでもあるため、慎重に進める必要もあります。

それ以外で今回、特に気をつけたこととしては、イベントの開催名についても議論を行いました。

もともと仲間内で無限LTという名でやっていたのですが、どうしても無限LTという名前だけでは、LT初心者や初参加者に「難しそうなイベント」と思われてしまわないかという懸念がありました。

というのも無限LTの効果として、「一日に何回もLTを作って発表してを繰り返し、かついろんな人のLTを聞くことでLTのスキルが一日で大幅に磨かれる」と考えていたため、LT初心者こそ参加の価値が高いと考えていたためです。

なので、LT初心者でも参加しやすいイメージを持ってもらうためにどうすればよいのかについて議論を重ねました。その結果、イベントに「ゆるゆる」をつけ、ターゲットユーザも初心者がわかるようにして、初心者歓迎の雰囲気を出してみました。少しでもゆるい雰囲気が伝わっていれば嬉しいです。

今後は?

公開版第一回をやってみた所感としては、参加者にもかなり好評だったかなと思っていますので、第二回以降も企画していきたいと考えています。

ひとまず、今週振り返りを行うので、その後振り返り内容を活かし、次回開催を企画していきます!

なので第一回の発表時間でLTしたりないよ!という方や、第一回行けなかったから第二回参加したいよという人は今のうちにLTネタに磨きをかけておいてくださいw

それでは第二回の無限LTでお会いしましょう〜。

f:id:zoe302:20190515112758j:plain

【Macセットアップ】WindowsからMacに開発用PCを移行時にしたこと

f:id:zoe302:20190425201449j:plain

いきなり本題ですが、最近業務で使っていたWindowsPCが古くなったので、新しくMacPCに慎重してもらいました。

その際にMacPCでセットアップした内容を忘備録代わりに書いておこうと思います。

アカウント連携系

App Storeアカウント連携

もともと使ってたAppStoreアカウントがあったのでサインイン

カレンダー連携 Gmail

会社で使っているGmailでカレンダー連携しておくとカレンダーがMacのカレンダーで見れるので便利。

設定変更系

テーマダークモード

なんとなくかっこいいのでダークモードにする。 (ダークモードにするとChromeのプライベートモードと見分けがつかなくなる)

CapsLockをControlに変更する

設定 > キーボード > 修飾キー

で変更できる

キーリピートの設定

キーボードのキーを長押しにしたときの反応が遅いので設定

Spotlight検索のショートカットを無効化

IDEのショートカットと競合しやすいので無効化する。

f:id:zoe302:20190425200704p:plain

システム環境設定 > キーボード > キーボード(タブ) > キーのリピート > 速い f:id:zoe302:20190425192337p:plain

マウス左下でロック

画面の四隅にマウス持っていったときに指定アクションを実行できる設定。

左下で画面のロックができるように設定した。

システム環境設定 > Mission Controll > ホットコーナー

解像度

Macのモニタをそのまま使うと狭いので広く使えるように解像度を上げる

システム環境設定 > ディスプレイ > 解像度 > 変更 > スペースを拡大

トラックパッド

デフォルトだと鈍い(大きく動かさないと動かない)ので変更

システム環境設定 > トラックパッド > 軌跡の速さ > 速い

その他の設定は下記

f:id:zoe302:20190425192023p:plain

f:id:zoe302:20190425192042p:plain

f:id:zoe302:20190425192106p:plain

アプリインストール

よく使うアプリのインストールをする。 多いのでどこからインストールするとか使い方についてはここでは書かない。

Slack

言わずもがな。

Chrome

デフォルトブラウザをChromeに。gmail連携しておくとよく使うWebサービスや、拡張機能も同期できるので便利!

Clipy

クリップボード監視ツール。コピー履歴が取れる。

※Alfled課金したらクリップボード監視機能も合ったから最近あまり使ってない。。

Alfred

便利。なんでもできる。課金した。

googleIME

デフォルトIMEが不安定だったので、導入した。とてもいい変換心地。

IntelliJ

最強のIDEIntelliJ設定については別エントリにまとめたい気持ちが高い。

cheatsheet

各アプリケーションのショートカットを表示できるアプリ。強い。たまに誤爆する。

Karabiner

キーボードの高等な設定ができる。 自分はもともとWindowsで右Altに変換を割り当てていたので、それと同じ使い心地にするべく導入。 karabinerを入れて右commandで入力切替できるようにした。

f:id:zoe302:20190425193744p:plain

f:id:zoe302:20190425193814p:plain

f:id:zoe302:20190425193725p:plain

Iterm2

特に深い理由はないがデフォルトのものより使い勝手がいいので入れている。特に反転した文字が自動でコピーできるのが強い(Command+Cを押す必要がない)。がiterm2で単語移動をするためには少し設定が必要なので要設定。

参考:

qiita.com

Docker for Mac

正直このPCでは今のところ使っていない。がいずれ必要になるかもしれないので入れている。 いれたらBash Completionの設定もしておこう

参考:

uorat.hatenablog.com

Sequel Pro

MySQLGUIクライアント。正直CUIで操作することが多いんですが、テーブル数が多いときや、いろんなDB見たりするときなどはGUIが見やすくて便利だったりするので、入れてます。

Dockの整理

自分はDockにごちごちゃアプリがあるのがきらいなので不要なものは消す。

CLI操作系

いよいよCLI系の設定周り。

brewインストール

Macのパッケージ管理ソフト。いろいろ入れるのに必須なので入れよう。 入れ方は公式に書いてあるのでそれを参照のこと。

公式: brew.sh

htop

topコマンドをグラフィカルにしたもの。見やすいの入れておくとよい。

bash_completion

補完を使うために必要なパッケージ。自分は何のコマンドも満足にタイプできないのですべて補完だよりなので必須。

参考:

mawatari.jp

鍵の生成と各種サービス、サーバに登録

Macで使うようの鍵の生成を行い各種サーバやサービスに登録していく。

keyの生成はこちらのコマンドを基本的に使っている

gist.github.com

dotfilesの反映

自分の使っているdotfilesの反映。dotfilesとは . ドットから始まる各種設定ファイルを管理するレポジトリ、またはそれをセットアップできるように自動化されたもの。

私のdotfilesはこちら

github.com

DLディレクトリ掃除バッチ

DLディレクトリに重要なものとそうじゃないものが溜まっていくのがつらすぎるので定期実行で削除されるようにした。 下記のような感じで定期的にDownloadsディレクトリ配下のものを/tmpに移動させて削除するようにしています。

#Download file move /tmp
0 18 * * * mv /Users/{userName}/Downloads/* /tmp

※ちなみに/tmpは3日間アクセスが無かったものは削除されるらしいです。

www.d-wood.com

最後に

今回の記事はほぼ自分の移行用メモを揮発しないようにブログにまとめただけなので、あまり参考になるかわからないですが、少しでも役に立てれば嬉しいです。

また、もっとこの設定やアプリ便利だよ、というご意見もお待ちしております!

ペチコン仙台に行ってきた

f:id:zoe302:20190126154613j:plain

PHPカンファレンス仙台

去年の年末のペチコンに出た時に存在を知り、仙台出身なので秒で参加登録しました。

phpcon-sendai.net

当日

セッション

聴講したセッションについて聴きながらツイッターにメモを取っていたのでまとめていく。

AWSWordPressのスケールアウト (金澤 裕毅 / ランサーズ株式会社)

資料:

独立したコアレイヤパターンによる PHP アプリケーションの実装 (新原雅司)

資料:

(ランチセッション) ランチセッション: オミカレを支えるチーム開発 ~ プロダクトを支える文化 ~ (高橋 一騎 / 株式会社オミカレ)

資料:

(ご飯に夢中でメモ取ってなかった、、)

チーム開発はコミュニケーション大事ですよね、複数の勤務地でも円滑にコミュニケーションとるためにスラックボットをうまく使ってコミュニケーションを円滑にしたよ、という感じの内容でした。

再発防止策を考える技術 (杉浦 颯太 / 株式会社メルカリ)

資料:

PHPではじめるCQRS (丹賀 健一 / 株式会社インフィニットループ)

資料:

ブース回ったりとか

その他資料

2018年買ってよかったものランキング

この記事は Willgate Advent Calendar 2018 の1日目の記事です。

アドベントカレンダーが19日に突然できたので、一周回って埋めなおしている事実は秘密です。


さて12月に入って、いよいよ一年が終わるんだなという感じですね。

ということで、今回は一年の振り返りを含め今年購入したもので、買ってよかったものを紹介して行きたいと思います。

[一位] FireHD10

私はスマホはIPhone7なのですが、ゲーム専用機として購入しました。ゲーム中に通知などがでるのが本当にストレスだったので、、

私はとある方法で、GooglePlayStoreをインストールして利用していますが、普通に新しいゲームでもサクサク動くので、コスパはとても高いと思います。

Fire8も持っていますが、それよりも動作はとてもサクサク動きます。

[二位] ケーブル結束バンド マジックテープ マジックバンド ケーブルコード

私はガジェオタに近いのですが、色々なガジェットの充電や配線がとても気になるタイプで、収納の際もコードがぐちゃぐちゃになってしまうのにとてもストレスを感じてました。そんなところにこの商品を見つけ、配線ストレスから解放されました。

配線をまとめるために結束バンドなどを使う人も少なくないとは思いますが、これは言うなれば再利用可能な結束バンドというところですね。

[三位] E-WIN ゲーミングチェア パソコンチェアー CL-BG1C (グレー)

長時間デスクワーク(ゲーム)をするにはちゃんとした椅子が必要ですね。これを使うようになってから腰が痛くなくなりました。

[四位] LG モニター ディスプレイ 32UD60-B 31.5インチ/4K/VA 非光沢/HDMI、DisplayPort/スピーカー搭載/高さ調節対応

LG製の4Kモニター、めっちゃ最高。これでPS4のゲームやアニメをみています。開発も効率よく進んでる気がしますw

[五位] HHKB BT 無刻印

エンジニアとして一度は夢見るHHKBのBTモデルです。会社で使ってますがとても使い勝手がいいです。特に自分の場合会議で離席することも多いのでコードレスの方が使いやすくて便利です。充電も2〜3ヶ月に一度くらいしかきれません。一つ難点をいうとするとHHKBが悪い訳ではないですが、Windowsとの最初のペアリング時に少しコツが必要で、「プリンタとデバイス」から新規デバイス追加でペアリングしないとできないことがありました。

[六位] LANCERTECH NiZ ATOM 66 キー 静電容量無接点方式 USB/Bluetooth 4.0両対応 消音 35g荷重 デュアルFNキー 超コンパクト Type-C充電 プログラマブル 英語配列

NIZと呼ばれるキーボードです。おそらく私が知っている限り静電容量無接点方式でBT対応しているものの中で一番コスパ高いです。

正直打鍵感はHHKBまでには及ばないもののBTの機能に関してはHHKBのそれを軽く超えるほどの性能と機能を持っています。HHKBは接続一つまで記憶、こちらは3つまで同時に記憶可能。

Windows専用のソフトを使えばキー配置も自由に変えられ、かつキーボードが記憶するので、Macでもそのまま使用可能。若干癖はあるものの安いので一度買ってみても損はないかも。

[七位] Apple Magic Trackpad 2

トラックパッドです。いうまでもありませんが、めっちゃ便利です。充電も全然きれません。Mac利用している人は一度買ってみてもいいかと思います。

[八位] SanDisk microSDXC ULTRA 128GB 80MB/s SDSQUNS-128G Class10 サンディスク

128GBのマイクロSDカードです。10年前くらいは同じ値段で8GBとかだったんですがね、、技術の進歩はすごいですね。

これは特にお安いのでおすすめです。利用も問題なくできています。

[九位] ツインバード スロークッカー ブラウン

スロークッカーです。ツイッターで話題になってるのをみて購入してみましたが、本当に楽に料理ができてめちゃ便利です。お手軽に煮込み料理ができます。

[十位] ナイスデイ 敷きふとんカバー グレー シングル マイクロフリース あったか フィットゴム式

めっちゃふかふかな布団カバーです。気持ちよくあったかく眠れます。そんなことより私はこのゴム式の布団カバーを初めて知ってつけるのがめっちゃ楽なことに感動してしまいました。

[おまけ1] 4ポートHDMI USB KVM 自動切替器 1080P Windows 2000 / XP / Vista/ LinuxおよびMac対応

ディスプレイの切り替え装置です。ガジェオタなので、PC2台、タブレットNintendo SwitchPS4を一台のモニターでやるために購入しました。

ボタン一つで切り替えできるのでとても楽です。ガジェオタなら買って損はないはず。

[おまけ2] TIORU バスタオル 大判 4枚セット マイクロファイバー タオル コットン 肌触り抜群 ふわふわ 70×140cm 吸水速乾抗菌

たかがタオルだと思うかもしれませんが、入浴後の拭き心地は最高です。高級ホテルに行った気分になれます。しかも一度撫でるように拭くだけで完全に水分が取れます。