KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

ISUCON本を読んだ感想

こんにちは、KMC-ID: karakasaです。

今回は「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践」、通称「ISUCON本」をご恵贈いただきましたので、早速読ませていただいた感想を書かせていただきたいと思います。

gihyo.jp

そもそもISUCONとは

ISUCONとは「Iikanjini Speed Up Contest」の略で、LINE株式会社が主催する、Webサービスのパフォーマンスチューニングコンテストです。

7/23に開催を控えているISUCON12オンライン予選の参加登録では、わずか数分で参加枠が埋まるほどの人気ぶりを見せています。

本書について

そんなISUCONで数々の実績を誇り、現場でも活躍する達人たちが、Webサービスを高速化する手法について解説するのが本書です。

タイトルにISUCONを冠してはいますが、単にISUCONの対策に限らず、実務で作成されるWebサービスに対しても役に立つような知見が詰まっています。

本書の内容について

本書で扱われている内容は多岐に渡ります。 モニタリングの方法やDBのチューニング、キャッシュの活用やリバースプロキシの利用など、ISUCONでも必要となる基本的なトピックについては一通り網羅されていると言えるでしょう。

本書の良いところの一つは、これらの話題についてprivate-isuという、pixiv株式会社で過去に開催された社内ISUCONにおける問題を題材に、種々の改善手法を具体的に適用して学ぶスタイルを取ってるところです。 実際にログを出力してボトルネックを解析する手順であったり、各種改善手法を適用した時に、単にスコアが上がる以外にどのような変化が見られるのか、といった内容を手を動かして学べるので、より理解が深まる形式になっているかと思います。

github.com

もう一つの良いところは、コラムなども使用して細かいチューニングの方法まで、広く浅く記載してあるところだと思います。 ISUCONにおいて、インデックスの作成やN+1問題の解消などは初心者にとってもとっつきやすい内容であり、多くの方が認知している内容だと思います。 しかし、例えばMySQLの設定(innodb_buffer_pool_size や innodb_flush_log_at_trx_commit など)について多くを知っている方々は、かなりISUCONに慣れた層になってくるでしょう。

これらのパラメータはそもそも存在を知らなければ、チューニングのしようもなければ、検索して認知することも難しいでしょう。 本書を読むことで、このようなパフォーマンスチューニングに役に立つが、そもそもその知識について知らないということすら知らないレベルの話題にも触れることができます。

結果として、パフォーマンスチューニングにおける選択肢が増えます。 N+1問題などのわかりやすい問題に対処した後に、何もすることがなくなった、次に何をすればいいのかわからない、といったことにならず、とりあえずこれを試してみよう、という動きが取れるようになるかと思います。

先日、練習のためにISUCON11の予選問題に取り組んでみたのですが、そこでも「そういえばISUCON本にこんなことが書いてあったけど、今まさに試してみたらスコアが上がるのではないか?」といった場面が多々ありました。

他にも、ISUCONの参加者側には直接的な関わりはないかと思いますが、負荷試験の実施方法や、ISUCONでの採点にも使われるようなベンチマーカーの作成法といった話題もあります。 特にベンチマーカーの作成に関しては、個人的に読み物として面白かったです。

まとめ

ISUCONに初めて参加する方の中には、スコアを伸ばすために何をしたらいいのかわからない、という方が多いかと思います。 そういった初学者がまず何をしたらいいのか、その第一歩を踏み出す参考書として本書はおすすめです。

またISUCONへの参加経験がある方にも本書はおすすめです。 先に述べたように、この書籍を読むことでパフォーマンスチューニングでとれる選択肢がかなり広がると思います。

皆さんもISUCON本を読んで、ISUCON本番に向けて頑張っていきましょう。

Rustを完全に理解する2022 第8回~第10回

こんにちは、たまろん (@tamaroning) といいます。

私は2022年4月から6月に開催されていた「Rustを知ろう2022」の後釜として、「Rustを完全に理解する2022」の第8回~第10回の担当をしていました。「Rustを知ろう2022」については以下の記事をごらんください。

hsjoihs.hatenablog.com

さて、私の担当回ではRustを書いて実際に動くものを作るハンズオンを中心に行いました。

第8回 Rustのソースコードを解析しよう

この回ではMinippyを改造することを通して、簡単なLintを作成しました。MinippyはRust公式のLinterであるClippyの規模を縮小して作ったプログラムです。

参加者の方には、構文木を検査して 1+023*1 といった演算を警告する機能を追加してもらいました。

github.com

drive.google.com

第9回 Rustコンパイラについて知ろう

この回では、Rustコンパイラの概要について勉強しました。Rustのコンパイルがどのような過程を経て行われるかという質問が挙がっており、一般的なコンパイラの構成をふまえながら、borrow checkerなどのRustコンパイラ特有の仕組みについても説明しました。

また、ClippyとRustcのソースコードを読む時間も設けました。

drive.google.com

第10回 Actix-rsでWebアプリを作ろう

前回と前々回では似たような内容が続いていたため、第10回ではテーマを大きく変えて、Actix-rsを使って、タスク管理アプリを作りました。

Webサーバーを立てたことがない参加者も多く、苦戦したようでした。 最終的には、参加者の全員がAPIを作成して、タスク一覧を表示すことができ、多くの人が、アプリを完成させることが出来ました。

また、mutexやJSON形式といったRustとは直接関係のないことについても説明をしました。

github.com

drive.google.com

まとめ

三回という短い回数でしたが、この勉強会では、Rustを含め様々な話題について勉強しました。スライドやリポジトリは公開しているので、この記事を見てくださった方は、活用していただけるとうれしいです。

宣伝

KMCでは、このような勉強会を毎週開催しています。年齢や大学を問わず参加可能ですので、興味を持っていただければ、ぜひ入部を検討してみてください!

www.kmc.gr.jp

3DCG勉強会2022 第9回~第11回

こんにちはこんにちは! 3DCG勉強会2022 担当の crashRT です。今回は 3DCG勉強会2022 第9回~第11回の活動を報告します。

過去のレポートはこちらから

3DCG勉強会とは?

参加者に 3DCG制作を布教する 3DCG制作の雰囲気を知ってもらうことを目指して、毎週火曜日の20:30から開催している新入生向け 1 の勉強会です。

初めて3DCGに触れる参加者が多いので基礎を中心にゆっくり進めながら、3DCG を制作していく上で必要な知識や技術などについて話していきます。現在は無料の Blender を扱っていますが、今後 CINEMA 4D も扱う予定です。

現在は、昨今の情勢もあり Discord というサービスを用いて遠隔で開催しています。

勉強会の内容

第9回:配色の話

第9回では配色について話しました。配色は作品の雰囲気を大きく変える影響力を持っているにも関わらず、選択肢が多すぎて自分の感覚だけで選ぼうとするとよくわからなくなってしまいがちです。 そこで、配色を考える上で助けとなる理論について解説しました。 具体的には、まず色の三属性や色相環、トーンなどの基本的な部分について説明し、その後セパレート、類似性の原理、トライアド配色など(秩序の原理)などを紹介しました。 3DCG に限らずいろいろな場面で応用してもらえたらと思います。

第10回:構図の話

第10回では構図について話しました。構図はオブジェクトの配置やカメラの位置を考えるときに便利なものです。 全体のバランスを調整することができ、その上で見せたい部分へ視線を誘導することができるので、うまく扱えると作品がまとまってより良いものになります。 講座では、まず三分割構図・三角構図・シンメトリーなどのよく使われる構図を例を用いて解説し、 その後自分が見せたい部分へ視線を誘導する方法について話しました。

第11回:前期まとめ

第11回では今まで扱った内容を復習しながら、ちょっとした作品を制作してみました。 SDS や UV 展開、ライティングや配色、構図など今まで扱った内容にできるだけ触れ、 これらを実際どのように使えば良いのかについて話しました。 今までの話が一つにつながってくれたら良いなと思います。

第11回の作例

試験期間に入るため、前期はこれで終了です。お疲れ様でした。 後期では CINEMA 4D も使って映像制作を始めようと思っています。 時間を操ることもできるようになったときどのようなものを作ることができるのか、楽しみにしてもらえると嬉しいです。

参加してみたい方へ

講座はすべて録画しているので、今からの参加でも全く問題ありません。質問もいつでも受け付けているので、気軽に参加してください!

まずは、KMCの Twitterメール にご連絡ください。

KMC の宣伝

KMCではパソコンで何かしたい人々を大募集しています。入部資格に制限はありません。興味のある人は下のリンクからどうぞ!!

www.kmc.gr.jp


  1. ここでの新入生はKMCの新入部員のことで、大学での回生・年齢は無関係です。

3DCG勉強会2022 第5回~第8回

こんにちはこんにちは! 3DCG勉強会2022 担当の crashRT です。
だんだん暑くなってきている中レンダリングを回しているので室温が大変なことになっています。今回は 3DCG勉強会2022 第5回~第8回の活動を報告します。

過去のレポートはこちらから

3DCG勉強会とは?

参加者に 3DCG制作を布教する 3DCG制作の雰囲気を知ってもらうことを目指して、毎週火曜日の20:30から開催している新入生向け 1 の勉強会です。

初めて3DCGに触れる参加者が多いので基礎を中心にゆっくり進めながら、3DCG を制作していく上で必要な知識や技術などについて話していきます。現在は無料の Blender を扱っていますが、今後 CINEMA 4D も扱う予定です。

現在は、昨今の情勢もあり Discord というサービスを用いて遠隔で開催しています。

勉強会の内容

第4回までで Blender の基本的な使い方は一通り紹介できたと思うので、 作品の作り方や知識的なものを扱い始めました。

第5回:トンネルを作る

第5回ではトンネルを扱いました。 トンネルとはある一定の区画が繰り返されて通路のようになってるもののことで、正式な名前ではないですが慣例的にそう呼ばれています。 使える機能があまり多くなくても、それなりのものが作れることを感じてもらえたらと思います。

また、作品を制作する上で重要なリファレンスについて説明し、良い作品が集まっているサイトである PinterestBehanceArtStation と、リファレンスの管理に便利な PureRef を紹介しました。

3DCGのトンネル
第5回の作成

第6回:ビルのモデリング

第6回ではビルのモデリングを扱いました。 インスタンス機能や Array モディファイアなどを用いて、繰り返しのあるものを効率的にモデリングする方法を解説しました。

3Dモデリングされたビルの画像
第6回の作例

第7回:カメラとライティング基礎

第7回ではカメラとライティングの基本的な部分を扱いました。 ライティングとは ライトを設定し、3DCG の世界を照らす工程のことです。

カメラについては被写界深度と画角について、ライティングについては影の扱い方と、伝統的なライティングの手法である三点照明について解説しました。

被写界深度の例

三点照明された猿の3Dモデル
三点照明の例

第8回:ボリュームで遊ぶ

第8回ではボリュームについて解説しました。 ボリュームレンダリングとは光の通り道でのふるまいを計算するもので、光の通り道を可視化したり雲や煙などを表現したりするときなどに使われます。

Blender でのボリュームの使い方と、その応用例をいくつか紹介しました。

ボリュームレンダリングの例

参加してみたい方へ

講座はすべて録画しているので、今からの参加でも全く問題ありません。質問もいつでも受け付けているので、気軽に参加してください!

まずは、KMCの Twitterメール にご連絡ください。

KMC の宣伝

KMCではパソコンで何かしたい人々を大募集しています。入部資格に制限はありません。興味のある人は下のリンクからどうぞ!!

www.kmc.gr.jp


  1. ここでの新入生はKMCの新入部員のことで、大学での回生・年齢は無関係です。

Webサービス勉強会2022 第2回〜第4回

こんにちは!Webサービス勉強会2022を担当している ryokohbato (KMC ID: rhato, ID: ryokohbato) です。今回は、Webサービス勉強会2022の第2回〜第4回のレポートをお届けします。

過去のレポートはこちらから

Webサービス勉強会2022とは?

Webサービスについて1年かけて学ぶ勉強会です。以下リポジトリで環境および資料を公開しています。

github.com

第2回 書いて覚えるCSS

第1回「書いて覚えるHTML」 同様、手を動かしながらCSSに慣れてもらいました。資料は 第2回 書いて覚えるCSS です。

第2回裏講座 そもそもなんでこんなことをやらされているのか

第1回 イチからWebpackのconfigを書いてTypeScriptをコンパイルする では、TypeScriptをコンパイルするために、npmなどを使ってパッケージを入れたり webpack.config.js を書いたりする必要がありました。今回は、なぜこのような複雑な方法でTypeScriptの開発環境を整えたのか、歴史的な経緯も踏まえつつ扱いました。資料は 第2回 そもそもなんでこんなことをやらされているのか です。

第3回 デザインパターン1

第3回では、カード風のスタイルを作りながらHTMLとCSSを組み合わせた基本的な開発の方法を扱いました。また、スクロールバーの表示方法やmarginの相殺についても扱いました。資料は 第3回 デザインパターン1 です。

第3回裏講座 新しいCSSの機能を試してみる

最近使えるようになったセレクタである :is():where()、そしてカスケードレイヤー (@layer) について、実際に書いて動かしてみつつ、書き方や動作を確認しました。資料は 第3回 新しいCSSの機能を試してみる です。

第4回 Webアクセシビリティの基礎

スクリーンリーダーやキーボードによるコントロールを使って閲覧されることを念頭に置いたWebページの開発について扱いました。今回はWebアクセシビリティについて学ぶ上で最も基礎になる部分について扱うにとどめましたが、今後より発展的な内容も扱っていきたいと思います。資料は 第4回 Webアクセシビリティの基礎 です。

コンテナ、Docker、Kubernetes って何が嬉しいの?という例会講座をしました

はむはー!最近は私たち人間に優しい気温になってきました。ずっとこれくらいの気温になっててほしいです。

今日、KMC の例会講座で「コンテナ、Docker、Kubernetes って何が嬉しいの?」というタイトルで例会講座を行いました。

docs.google.com

コンテナや Docker、Kubernetes はアプリケーションを書いたりサーバーを触ったりしていると目にすることがあると思いますが、「なんか難しそう」「今の運用でうまくいってるしな」と敬遠する人も多いと思います。また、アプリケーションを使うときに README の通りに Docker コマンドを打って、よくわからないけど動いている、でもなんか普通に立ち上げた時と違ってよく分からん、といったこともあるでしょう。

そんな人達がコンテナ技術に触れるきっかけとなるよう、「コンテナとはなんなのか?Docker や Kubernetes は何をしてくれて、使うと何が嬉しいのか?」ということに焦点を置いて講座をしてみました。

コンテナ、Docker、 Kubernetes を使うとっかかりが欲しい人に、ぜひこの資料を読んでいただければと思います!

Webサービス勉強会2022 第0回〜第1回

こんにちは!Webサービス勉強会2022を担当している ryokohbato (KMC ID: rhato, ID: ryokohbato) です。今回は、Webサービス勉強会2022の第0回、および第1回のレポートをお届けします。

Webサービス勉強会2022とは?

Webサービスについて1年かけて学ぶ勉強会です。以下リポジトリで環境および資料を公開しています。

github.com

第0回 (5/8)

第0回は環境構築回でした。Node.jsなど必要なツールをインストールした上で、開発用サーバーを立てました。

また、Webサービス勉強会2022では、Dockerを使用した開発環境も提供しています。こちらを使用して環境を構築してくれた部員もいたようですね。

第1回 (5/15)

さて、いよいよ勉強会の本格始動です。Webサービス勉強会は、大きく3つのパートに分けられています。

  1. メインパート (私が資料をもとに説明をしていく)
  2. 演習パート (扱った内容に関する演習を行う)
  3. 裏講座 (演習パートと並行して開催)

1. メインパート

今回のメインパートでは、「書いて覚えるHTML」と題して手を動かしながらHTMLに慣れてもらいました。第1回の資料は こちら です。手軽にリッチなUIを作れる楽しさが感じてもらえたと思います。

2. 演習

今回の勉強会では進捗管理シートを用意しています。みなさん演習もかなり解き進めてもらえたようで何よりです。

3. 裏講座

さて、演習の時間を利用して、Webサービス勉強会2022ではより発展的な内容を扱う講座、裏講座を開催しています。第1回の今回は「イチからWebpackのconfigを書いてTypeScriptをコンパイルする」と題し、TypeScriptをコンパイルするために必要な webpack.config.jstsconfig.json の書き方を学びました。次回は、コンパイルのためになぜこんな複雑なことをしているのか、について扱う予定です。

裏講座の様子
裏講座の様子

宣伝

Webサービス勉強会2022では、Botの開発やWebサービスの開発を学びます。興味のある方は、以下の入部案内を参考にメールやTwitterのDMなどでいつでもご連絡ください。お待ちしております!

www.kmc.gr.jp