みなさん、最近、技術系の雑誌、読まれていますか?ホスティング事業部インフラエンジニアの harasou です。
ネットでも、かなりの情報を得ることができる昨今ですが、まとまった内容であったり、知らない知識に触れるには、雑誌という媒体の方が向いていると思うのですが、いかがでしょうか?
今回、技術評論社から出版される「WEB+DB PRESS Vol.99」で、たまたま2本同時に、ペパボスタッフが執筆させていただく機会に恵まれました。
- 特集「良いコードってなんだろう?」
- 連載「実践!先進的インフラ運用」
せっかくなので、執筆した内容と、どのように執筆活動を進めていったのか、執筆陣を代表して genkiroid、harasou、shoyan からご紹介させていただきます。
特集「良いコードってなんだろう?」
ホスティング事業部ロリポップグループの genkiroid です。ロリポップ!のWEBフロントまわりのエンジニアです。私からは特集についてレポートします。
今回の特集のテーマは、ズバリ!「良いコードってなんだろう?」でした。みなさんはどんなコードが良いコードだと思いますか?おそらく、様々な答えが出ると思いますし、ひとことで「良いコードとは、こういうコードです!」と答えるのは難しいのではないでしょうか。
決して簡単とは言えないテーマを前にして、執筆陣も記事を通して伝えたいことを簡単に決められたわけではありませんでしたが、日々コードと向き合っている現場のエンジニアとして、ひとつの答えを導き出した結果となっています。もし記事を通して、私たちGMOペパボの現場の空気などを少しでも感じていただけたら、とてもうれしいです。
それでは、記事の概要と担当について、章ごとに簡単に紹介します!
第1章 良いコードを書く理由
今回のテーマを語る上で前提となる「良いコード」に対する定義についての提案を行っています。また、「絶対良感」という特徴的なワードを用いて、「良いコード」を書けるようになるためにはどうすれば良いのかを考察しています。さいごに、今回の特集の構成を紹介し、読者が読み進めやすくなるように案内をしています。
第2章 変数、定数、メソッド
コードの中で最も多く登場する要素のひとつである変数や定数、メソッドについて、それぞれを使う際の「良さ」の定義を試みています。そして、「良さ」を実現するための手法が実際のコード例を用いて説明されています。粒度が小さいこともあり、この章で紹介されている手法は、みなさんの現場でも、すぐに効果が出るものが多いのではないでしょうか。
第3章 クラス
オブジェクト指向プログラミングにおけるクラスについて、「良さ」を出すためのテクニックが紹介されています。適切な責務を持たせたり、効果的なデザインパターンを導入するといった手法が、コードを例にして解説されています。変数などより粒度は大きくなりますが、その分「良さ」の効果も大きくなるのではないでしょうか。
第4章 モジュール
Rubyの機能であるモジュールについて、その背景にある多重継承やインタフェース、ダックタイピングなどの概念を踏まえたうえで、「良さ」を出すための考え方や使い方が紹介されています。第3章で扱ったクラスよりもさらに汎用的なトピックが扱われているので、いろいろなプログラミング言語に応用出来そうです。
担当:@genkiroid
第5章 チーム開発でのテクニック
これまでより俯瞰的な視点となっています。チーム開発や設計をするうえで、前章までに紹介されてきた実例を含めて、どのようにすればより良いソフトウェアに結びつけられるのかということについて、さまざまな技術的トピックを取り上げて解説されています。そして、今回の特集についてのまとめとともに、執筆陣の思いが述べられています。
担当:@unionsep
連載「実践!先進的インフラ運用」
連載第1回目を担当した harasou です。今回から「インフラ」をターゲットとした連載が開始されます。
GMOペパボでは、ホスティングやEC支援、ハンドメイド、コミュニティなど様々なサービスを展開しており、そこで培った「現場のインフラ」を紹介する内容です。執筆は、GMOペパボ福岡支社のスタッフを中心に、持ち回りで行っていく予定です。
第1回
連載第1回目は「Linuxの機能を駆使した負荷対策」として、OSが持つリソース制御の機能や利用方法を紹介しています。
旧来から利用されている「rlimit」や、コンテナや systemd で利用される「cgroup」、さらに、このようなリソース制御の仕組みをミドルウェア(NginxやApache)に組み込む方法、などの内容です。
リソース制御の機能は、かなり裏方的なものですが、システムの安定運用には欠かせないものです。また、今回取り上げた cgroup は、namespace と並び Docker のような「コンテナ」を実現するための核となる技術です。ぜひ読んでいただき、実践することでリソース制御を体感していただければと思います。
担当:@harasou5
次回以降
2回目以降については、次のような内容を予定しています。
- 完全 HTTPS 時代の「SSL証明書管理」
- 「HTTP/2 の動作」と Nginx を利用した本格運用
- 「コンテナとは?」- コンテナの本質とアーキテクチャ
- 「行動ログによるサービス改善」を継続的にしていくための「ログ活用基盤」
- HashiCorp Vault を利用した「秘密情報の一括管理」
一口にインフラと言ってもさまざまなものがありますが、みなさんの興味・お役に立てそうな内容になるようがんばりますので、ぜひご期待ください。
執筆をふりかえって
ホスティング事業部ヘテムルグループの shoyan です。最後に私たちがどのようにして執筆を進めてきたかを紹介します。
WEB+DB PRESS Vol.99の特集である「良いコードって何だろう?」は、たくさんのメンバーの協力によって生み出されました。7人の執筆者、2人のレビュアー、そして技術評論社さんに編集に携わっていただいています。場所は東京と福岡の2拠点で行いました。
キックオフ
3月13日、GitHubのイシューで良いコードについての執筆に興味のある人を対象に募集が行われました。ペパボはやりたい人が率先してやるという文化を大切にしているので、本人の立候補で決まることが往々にしてあります。今回はその形で執筆メンバーが決まりました。執筆者は募集からわずか2日で決まりました。このスピード感もペパボらしいところだと私は思っています。
その4日後にキックオフMTGを行いました。東京と福岡のメンバーでの顔合わせです。初めて顔を合わせるメンバーもいて、私自身も少し緊張しました。リモートでのMTGはSkypeのビデオ通話機能を使って行いました。
その後、良いコードとは何だろう?ということをGitHubのイシューやSlackの執筆メンバーのチャンネルで議論して、メンバー間の認識を共有、整理していきました。
執筆開始
4月20日に技術評論社の担当者さんを交えて、2回目のMTGを行いました。今回も東京と福岡の2拠点で行いました。MTGではどのような内容、構成にするかを決めました。その後、各メンバーに書きたい章を選んでもらい、各々の執筆に入ってもらいました。原稿はGitHubのリポジトリで管理しており、各章ごとにPull Requestを作成して執筆を行いました。
執筆の日々
原稿を書いてレビューをしてもらい、その部分を修正し、またレビューをしてもらうということを繰り返して原稿をブラッシュアップしていきました。また、個人的にメンバー間で相談をしたいこともあったので、その時はappear.inという登録不要でビデオ通話ができるサービスを利用しました。
原稿の完成
原稿が完成し印刷所に提出されました。この時は「ついにやり遂げたぞ!」という気持ちになり、Slackの執筆メンバーチャンネルも大いに盛り上がりました。
最後に
ふりかえってみると、とても貴重な体験をさせていただいたなと思います。日頃書いているコードについて、あらためて考える機会をいただけたことがその1つであり、執筆についても多くのことを学ばせていただきました。読者の皆さんには、良いコードについての何か新しい気づきをもたらすことができましたら幸いです。