Cybozu Inside Out | サイボウズエンジニアのブログ

 

プロジェクト引き継ぎのベストプラクティス、そしてアンチパターン

あじさいがきれいですね。そんなことを可愛い女の子に言ってみたい。

どうも!アプリ基盤チームの@yokotasoです。

唐突ですが、プロジェクトの引き継ぎはうまく行っていますか?

プロジェクトの引き継ぎを経験すると、「あのとき聞いておけばよかった…」経験あると思います。

社内でためた引き継ぎの知見を公開します!どうぞ!

開発のハードルを下げるための引き継ぎ

開発環境をコンテナ化する

人の移動が多くないプロジェクトでは、開発環境構築のドキュメントが長い間メンテナンスされないことがあります。 この手のプロジェクトを引き継ぐことになったら、最初に検討すべきは開発環境のコンテナ化です。

コンテナの内部でできるだけ作業が完結するように、依存するライブラリやパッケージはすべてコンテナの中に収めましょう。 動作確認もWebサービスであればコンテナ内にWebブラウザーをインストールし作業がコンテナ内で完結することを目指します。

コンテナ化すると嬉しいこと

  • 他の開発メンバーも参加しやすくなる
  • コンテナ化すれば、環境をコードで表すことができ、利用者がパッチを投げてくれる
  • 既存の開発環境を汚染しない

利用ライブラリのバックアップを忘れずに

開発時に必要なものはダウンロード可能な状態を維持するために、バックアップをしておきましょう。 本家のレポジトリが突然消えたりなど、なんらかのアクシデントでアーカイブがダウンロード不能になったりすることがあります。

CIシステムの引き継ぎ

CIシステムに関する引き継ぎもしましょう。スムーズにリリースできる仕組みを維持していく必要があります。

CIシステムが、突然動かなくなる可能性はあります。

  • CIシステムが不安定になるときの特徴、対処方法などを引き継ぎましょう。
  • 時間があるときに根本的な原因の究明を行うようにしましょう。

「いつか成功する」は圧倒的アンチパターンなので、撲滅していきましょう

問題の解決が難しい場合、監視など問題の発生に早く気付けるような仕組みを構築するのもよいでしょう。 CIシステム自体の問題に早く気付けるようになることで、問題の切り分けが容易になり調査のストレスを減らせます。

できるだけCI環境を停止するのはやめましょう。CIを復旧するのにそれ相応のストレスが伴います。

外部サービス連携の引き継ぎ

外部サービスの認証情報の切り替え

開発で利用している外部サービスの認証情報は、前任者がいるうちに利用しているアクセストークンの入れ替えなどを行っておきます。 前任者の退職に伴いアクセストークンの有効期限切れになり、連携している外部サービスがうまく動かなくなることがよくあります

引き継ぎ失敗あるある

  • 引き継ぎ完了後、JenkinsからGitHubのCommit StatusのAPIの実行に失敗する
  • テストは成功するが、Git Hubのステータス更新がされない
  • Git Hubのアクセストークンの更新を忘れていた

アクセストークンが有効なうちはPull Requestからアクセストークンの発行主を確認することができるので確認しておきましょう

f:id:cybozuinsideout:20170621115619p:plain

APNs の証明書の発行フローを確認する

Push通知を利用している場合、証明書の更新が1年に1回程度は必要になります(JWTを用いた認証方式を除く)。 証明書の更新が要求される外部サービスはかならず引き継ぐようにしましょう。

証明書管理のベストプラクティス

  • プロジェクトメンバーが複数人、証明書にアクセスできる状態を作る
  • 証明書の期限切れを3ヶ月ほど前にチームに対してリマインドする
  • 証明書の更新を優先度の高いタスクとして登録する

f:id:cybozuinsideout:20170621145909p:plain 弊社ではグループウェアのスケジュール上にリマインド予定を登録しています

開発者用アカウントの整備

Facebook,Twitterなど外部サービスと連携する場合は開発者用アカウントを整備しましょう。動作確認用に必要なアカウントを用意しましょう。 外部連携サービスの動作確認のハードルを下げることができます。

チームで共通アカウントを利用する場合は、どこかで一元管理すると良いでしょう。

共通アカウント管理のルールの例

  • 開発者用アカウントにアクセスできるのは、アクセス権をもつチームメンバーのみ
  • 情報システム部にパスワードを定期的に変更するリマインドをしてもらうルールを作る

外部連携APIのメンテナンス

「Facebookでログイン」など外部サービスのAPIと連携している場合、APIの期限切れに警戒しましょう。期限切れの半年前などにリマインドを設定しておくと安心です。 特にFacebookAPIは、APIの賞味期限が短いです。新しいversionが頻繁にリリースされていきます。

外部連携APIについてドキュメント化する

  • 利用APIを明記する
  • 動作確認方法を明記
  • 利用APIの期限切れをチームに対してリマインドする

バッチ処理などでFacebook APIを使うと、動作確認ミスが起きやすくなります。このあたりは注意が必要です

version無指定のAPI利用はアンチパターン

Facebook APIではversionを指定しない利用方法もあります。この場合、利用可能なAPIのうち一番古いversionのAPIが利用されることになります。 一見、便利な機能です。Facebookからも警告が届きます。ですが、version無指定が常態化するとFacebookの警告は、無視するようになるでしょう。 Facebook APIの仕様変更に気付けずログインができないなどの致命的なバグに繋がります。

version指定をしてAPIを利用しましょう

ライブラリへの独自パッチの適用を引き継ぎ

f:id:cybozuinsideout:20170621133108p:plain

レガシーなプログラムほど、既存のライブラリでは要求を満たすことができず、独自パッチが適用されていることが多いです。 ハックはビジネス的な価値を提供する一方で、メンテナンス性を悪化させます。

引き継ぎの担当者は独自改修の存在に気付けるようになっているでしょうか?レガシー・ブラウザ対応のための独自パッチは未だに必要でしょうか?

  • 独自パッチを適用するときは、適用した理由と箇所、ビジネス的な価値を必ずドキュメント化する
  • 止むを得ず独自パッチを適用しているときは、ライブラリのアップデート時にハックが外せないかを調査する
  • ビジネス的な価値を失った不要な独自パッチはは積極的にもとに戻す

サービス運用にまつわる引き継ぎ

メトリクスの共有

サービスに障害が発生している時にいつも見ているメトリクスは共有しておきましょう。 メトリクスがなければ、障害が発生しても何がおきているのか、わかりません。

メトリクスにあわせて、障害が発生するときの特徴的な負荷状況を共有しておきましょう。

いつも見るメトリクスに加えて、過去の障害のときの原因となったメトリクスも確認できるように、ダッシュボードをカスタマイズしていきましょう f:id:cybozuinsideout:20170621134840p:plain

無視しているアラートの共有

開発に注力するあまり運用やメンテナンスに力を避けていないプロダクトの場合、監視システムからのアラートを無視している可能性があります。 無視する正当な理由があることもあるので、無視しているアラートと理由、(わかっていれば)原因の共有を必ずしましょう。

新年度の切り替わり時などに発生する定期的な警告で無視しているアラートは必ず共有してください。 この引き継ぎをしないと新しい担当者が定期的な障害が発生した時に運用チームから問い合わせを受けても右往左往するしかありません。

稟議が要求されるタスクは作業手順書を作成する

運用チームが顧客情報を見せないなどのためににログ閲覧に制限を設けている場合があります。 ログを取得するために稟議を申請する必要があるときは、作業手順書を用意して後々の作業の負担を減らしましょう。

探求はつづく

プロジェクトの引き継ぎに関するベストプラクティスとアンチパターンを紹介しました。

未発掘のよいプラクティスがあると思うので、要探求です!「こんなのあるよ!」という方はコメントでぜひ教えてください!

プログラムが生み出してくれた価値に感謝することを常に忘れず、プログラムを愛でたいものですね。チャオ!

 

「サイボウズにスクラムを導入した話」を肴にミートアップ!

こんにちは、コネクト支援チームの風穴(かざあな)です。

早いもので、2017年の半分が過ぎようとしていますが、皆さん、進捗はいかがですか?(笑) それはさておき、今回は、5月30日に開催した「Cybozu Meetup #4 スクラム」についてレポートします。

f:id:cybozuinsideout:20170612173645j:plain

サイボウズのミートアップ

2017年2月からスタートしたこの企画も、今回で4回目となりました。

改めておさらいしますと、「Cybozu Meetup」は、サイボウズのエンジニアとカジュアルに交流する場として企画、開催しているイベントシリーズです。会場はサイボウズのオフィスなので、社内の雰囲気や社員の様子を、実際に肌で感じて頂ける機会でもあります。

今のところ、東京オフィスで月1回、大阪オフィスで数カ月に1回のペースで、開催していこうと考えています。毎回テーマを設定していて、これまで「フロントエンド」、「SRE」(Site Reliability Engineering)、「生産性向上」というネタで開催してきました。

サイボウズのスクラム/アジャイル

第4回のテーマは「スクラム/アジャイル」。

サイボウズでは、1年ほど前から、開発チームへのスクラム導入を本格的に進めています。その旗振り役となっている、kintone開発チームリーダーの天野 祐介(@ama_ch)が、

  • スクラム導入前に抱えていた課題
  • スクラム導入の経緯
  • 導入期の試行錯誤
  • 現在のやり方

について発表しました。

f:id:cybozuinsideout:20170612173720j:plain

公開したスライドからは除いてますが、当日のトークセッションでは、公開できない 生々しい 情報(=撮影禁止)もお見せしながら、サイボウズのこれまでの取り組みについて、お話しさせていただきました。こういうところは「ライブならでは」ですので、ご興味がありましたら、ぜひ一度、Cybozu Meetupに足をお運び頂ければ。

質問&交流タイム

トークセッションの後の交流タイムでは、スクラムを導入している開発チームのエンジニアや一般社員も参加し、スクラム話に花が咲きました。

f:id:cybozuinsideout:20170612173757j:plain f:id:cybozuinsideout:20170612173836j:plain

サイボウズでは、今後も開発チームへのスクラム導入を積極的に進めていくことになっており、スクラムマスターとして活躍してくださる方を大募集しています。詳細は、以下のWantedlyのページをご覧ください。

求む、スクラムマスター! 開発をさらに加速させるチャレンジ

7月以降も、毎月開催を予定しています。ご興味ある方は、connpassグループ「Cybozu Inside Out」をフォローして、情報をチェック頂ければ。

ではまた。

 

サマーインターンサイトのアクセシビリティ対応の裏話

こんにちは、デザイングループ所属の小林です。サイボウズのサービスや製品に関するアクセシビリティ対応をしています。

先日、サイボウズはサマーインターンのWebサイトを公開しました。 このサイト、実はWebアクセシビリティについて、さまざまな配慮をしながらデザインやマークアップを行なっています。今回はその制作裏話をしようと思います。

サイボウズサマーインターンWebサイトの表紙

なぜアクセシビリティ対応?

サイボウズでは、アクセシビリティを「ユーザがチームにアクセスできる能力」と定義してアクセシビリティの取り組みを進めています。

理想的には、サイボウズが制作しているすべてのWebサイトや製品、サービスについてアクセシビリティの配慮が行われることが望ましいですが、いきなり規模の大きい既存のWebサイトのアクセシビリティを改善するのは大きなコストがかかります。また、デザイナーやエンジニアのアクセシビリティに関するスキルも、一朝一夕に身につくものではありません。

そこで、まずは規模が小さく新規に作成するページについて、少しずつアクセシビリティに考慮することで、今後のサイトの改善のヒントを得ながら、一人ひとりのスキルを高めていこうということになりました。サマーインターンサイトは、1ページのみ、かつ新規につくるページだったので、目的に合致していました。

制作体制

サマーインターンサイトは、数名のデザイナーが人事やメンターと一緒に制作しました。制作中の成果物に対して、自分がアクセシビリティの観点から数回レビューを行い、各デザイナーに問題点や改善方法をフィードバックしました。

アクセシビリティレビュー

今回、アクセシビリティについては、以下のような観点を考慮して、チェックや改善を行いました。

色のコントラスト比

ロービジョンのユーザや、屋外で日光があたる環境などでは、コントラスト比の低い色同士を区別することが難しい場合があります。アクセシビリティの国際基準であるWeb Content Accessibility Guideline 2.0(WCAG 2.0)には、文字色と背景色のコントラスト比を一定値以上にせよ、という基準があります。

もともと「エントリー」ボタンについては、WCAG2.0の基準を満たしていませんでした。また、ボタンにマウスホバーをしたときには、コントラスト比がさらに低くなるデザインになっていました。デザイナーに相談し、マウスホバーする前後どちらでも、コントラスト比の基準を満たすように色を修正しました。

以下の画像は、修正前のエントリーボタンです:

修正前のエントリーボタン

以下の画像は、修正後のエントリーボタンです: 修正後のエントリーボタン

キーボードによる操作

マウスを使うことが難しいユーザにとっては、代替手段として、キーボードでマウスと同等の操作ができることが重要です。

当初のデザインでは、キーボード操作したときのインジケータがCSSで消されており、 キーボードでどこを操作したのかがわからない状態だったので、インジケータを復活させました。

以下の画像は、Chromeでページ内のテキストリンクにキーボードフォーカスしたときの様子です。 ここにはブラウザデフォルトのインジケータが表示されるデザインにしています。Chromeでは水色のインジケータが表示されます: Chromeでテキストリンクにキーボードフォーカスした様子

また、「募集要項」のボタンをクリックした時に表示されるダイアログは、当初LeanModalというライブラリを使って実装していましたが、 LeanModalはキーボード操作の対応が不十分で、ダイアログの裏側の要素にフォーカスすることができてしまっていました。 これではマウスで操作できない部分をキーボードで操作できてしまいます。

キーボード操作に対応しているライブラリを探したところ、BootstrapのModalが対応できていたので、 ライブラリを変更し、ダイアログを開いているときには、ダイアログの裏側にフォーカスがあたらないようにしました。

ダイアログのマークアップ

BootstrapのModalに関する文書には、アクセシビリティに関するポイントがまとめられています。 この文書には、ダイアログのマークアップについて、以下のように記載されています:

  • role=“dialog"をつける
  • aria-labelledby=“…"に、ダイアログのタイトル部分のIDを指定する
  • aria-describedby=“…"に、ダイアログのボディ部分のIDを指定する

これらの属性をつけることで、ダイアログを開いた時に、スクリーンリーダーが、ダイアログのタイトルやボディを読み上げます。デザイナーにマークアップの意味を説明し、各属性を追加しました。

画像の代替テキスト

当初、メンターの画像にはalt属性を使った代替テキストとしてメンターの名前がついていました。この指定方法でも大きな問題はありませんが、スクリーンリーダーなどで読み上げた際には、メンターの名前が二重で読み上げられることになります。今回は読み上げの冗長さを解消するため、画像のalt属性には空文字を指定するようにしました。

メンターの紹介のスクリーンショット。メンターの画像の下にメンターの名前、所属、FacebookとTwitterのリンクが書かれている。

アイコンフォント

「メンター」セクションのFacebookとTwitterのアイコンには、Font Awesomeが使われています。これらのアイコンは当初、以下のようにマークアップされていました。

<a href="..." target="_blank">
  <i class="fa fa-facebook-official fa-lg" aria-hidden="true"></i>
</a>

この実装では、アイコンにラベルがついていないため、 スクリーンリーダーなどでアイコンを読み上げようとしても、読み上げが行われません。

Font AwesomeのAccessibilityに関するページには、aria-labelを使ってラベルをつけるように指示されています。 これをデザイナーに伝え、アイコンフォントにはラベルをつけるようにしました。

<a href="..." target="_blank" aria-label="facebook">
  <i class="fa fa-facebook-official fa-lg" aria-hidden="true"></i>
</a>

レビューの効果

自動チェックツールによるエラーが0個に!

今回は、aXeというアクセシビリティ自動チェックツール(Chrome拡張)を導入し、 上記に挙げた以外にも、様々なデザインやマークアップの修正を行いました。 最終的に、aXeによるアクセシビリティエラーや警告の検出数を0個にすることができました。

aXeの自動テストでエラーが0個になった状態をChromeの開発コンソールで確認する様子。

デザイナーのスキルアップ

デザイナーのスキルも向上しました。例えば、「概要」の会社の「場所」につけられた地図アイコンは、 Font Awesomeで実装しましたが、デザイナー自ら、aria-labelをつけてくれるようになりました。

<a href="https://cybozu.co.jp/company/access/#tokyo" target="_blank" aria-label="地図">
  <i class="fa fa-map-marker fa-lg" aria-hidden="true"></i>
</a>

デザイナーに修正をお願いするときのポイント

できるだけ公式情報を参照する

デザイナーに修正をお願いするときは、個人のブログやTipの紹介等のページを参照することはできるだけ避けました。 個人のブログなどで紹介されている技術情報の中には、アクセシビリティに配慮されていないものがあったり、一部の障がいや環境のみを取り上げて解説している場合があるためです。 また、場当たり的な内容を伝えているという印象を与えかねないことも懸念のひとつでした。

代わりに、W3Cの提供しているページや、Font Awesome、Bootstrapの公式サイトを参照するようにし、標準的な対応であることを強調しました。 この方法は、スキルアップを望んでいるデザイナーからも好評でした。

デザイナーとのやりとり。デザイナー「小林大輔さんのアクセシビリティの話はホント勉強になるなぁ。今まで作ったサイトも見直そーっと」と書かれている。

スクリーンリーダーで効果を説明する

マークアップの修正の中には、ビジュアルブラウザのみでは、効果が確認しづらい内容もありました。 スクリーンリーダーを使って実際にサイトを読み上げながらマークアップの違いをデザイナーに伝えることで 修正がどのような影響をもたらすのか、理解の手助けになりました。

サマーインターンでアクセシビリティの講義を受けませんか?

サイボウズでは、サマーインターンの参加者を募集しています。 サマーインターン期間中には、アクセシビリティの講義を開催する予定です。 より詳しくアクセシビリティの話をきいてみたい、アクセシビリティに関してスキルアップしたいという方は是非エントリーしてみてください。

エントリーをお待ちしています!

 

サマーインターンシップ2017を開催します!

こんにちは、kintone開発チームの長谷川です。

今年もサイボウズではサマーインターンシップを開催します!去年好評だった3コース(Webサービス開発、UX/UIデザイナー、品質保証/セキュリティ)に加えて、今年はモバイルアプリやインフラの開発に興味のある学生向けのコースも新たに用意しました。

この夏はサイボウズでワンランク上のスキルを身に付けてもらえたらと思います。 皆さんのエントリーをお待ちしています!

サマーインターンシップ2017

募集要項

日時

  • 第1回 8月21日(月)~25日(金)
    • Site Reliability Engineeringコースは第1回目のみの開催となります
  • 第2回 9月04日(月)~08日(金)
  • 第3回 9月25日(月)~29日(金)

場所

※ Webサービス開発コースは3拠点で開催します。その他コースの東京オフィス以外での開催は応相談となります

就業時間

9:00~18:00

※ 初日は10時集合、最終日は懇親会を実施するため20時~21時頃解散となります

コース

対象

2019年4月の入社が可能な学生

募集人数

各コース1回につき5名程度

選考

書類選考、面接(Webも可)1回

待遇

日給8,000円

※ 遠方からご参加いただく方には、交通費・宿泊費を支給します

エントリー方法

こちらよりエントリーしてください

お問い合わせ

  • 人事部: 中江 麻未
  • メールアドレス: recruit@cybozu.co.jp
  • 電話番号: 03-4306-0870

Webサービス開発コース

Webサービス開発コース

概要

サイボウズが提供するWebサービスの実際のユーザーや社内での要望を元に

  • ユーザーが本当に困っているのは何なのか
  • どういった機能を提供するのが良いのか
  • その機能は他のユーザーにも広く使われるものか

といった企画段階から、その機能のプロトタイプを作成するところまでを体験していただきます。

実際にサービスを開発しているメンバーがメンターとなり、課題の設定の仕方や実装の進め方、コードやテストの書き方までを指導しながら開発を進めていきます。東京と大阪では kintone 、松山では メールワイズサイボウズOffice に関連した題材を扱います。

必要な経験/スキル

  • プログラミングの経験
  • HTML、CSS、JavaScriptの知識

あると望ましい経験/スキル

  • Webサービス開発の経験
  • Git/GitHubの使用経験

モバイルアプリ開発コース

モバイルアプリ開発コース

概要

サイボウズのモバイル製品に簡単な機能を実装していただきます。製品のソースコードに触れたり、テスト・コードレビューを通じて実際の開発現場を体験することができます。

必要な経験/スキル

  • iOS(Swift) または Android(Java)の開発経験

あると望ましい経験/スキル

  • Git/GitHubの使用経験

UX/UIデザイナーコース

UX/UIデザイナーコース

概要

サイボウズのデザイングループメンバーとともに、製品・サービスのデザイン業務に取り組んでいただきます。自由な発想を活かして新しいデザインを提案してください。

必要な経験/スキル

  • PCやスマホ向けのデザイン経験
  • ポートフォリオ

あると望ましい経験/スキル

  • ユーザーリサーチの興味、経験
  • プロトタイピングスキル
  • チャレンジ精神

品質保証/セキュリティコース

品質保証/セキュリティコース

概要

製品の品質保証業務を通してソフトウエアの品質がどのようなプロセスで確保されているのか、そもそも品質とは何かを学んでいただきます。 品質を確保するだけではなく、製品がリリースされた後、製品の品質に関する情報をどのように顧客に伝達していくのか、顧客の要望をどのように製品にフィードバックしていくのかを実体験を通して学んでいただきます。

必要な経験/スキル

あると望ましい経験/スキル

  • Webサービスのテスト経験
  • Webサービスのセキュリティテスト経験
  • Webサービスの脆弱性の攻撃方法を知っている(SQLインジェクション、XSS)

Site Reliability Engineeringコース

Site Reliability Engineeringコース

概要

SRE(Site Reliability Engineering)チームにて、インフラにかかわるソフトウェアを開発・提案していただきます。

例:

  • https://github.com/cybozu-go/cmd へのコミット
  • 現在開発中のログ転送ミドルウェアの追加開発
  • 開発環境の管理ツール
  • 障害対応内容の自動記録ツール

実際の開発内容は応募された方とメンターにて相談の上で決めることができ、メンターのサポートの元取り組むことができます。その際、SREチームの持つ環境をご活用いただけます。(開発環境・本番環境のメトリクスデータ・OSSへの知見など)AWSなどのサービスを組み合わせたシステム構築ではない形になり、実質の開発期間は3日程度になるため、開発対象は小規模のものになります。

必要な経験/スキル

  • Go言語, Python, C, C++のいずれかの言語にて、Gitを利用したツールの開発が行えること

過去に開発したソフトウェアを添えてご応募ください。(GitHubのURLなどでも可)

2016年の開催記事

 

「生産性向上」してますか?──「Cybozu Meetup #3」開催レポート

こんにちは、コネクト支援チームの風穴(かざあな)です。先日開催した「Cybozu Meetup #3 生産性向上」についてレポートします。

f:id:cybozuinsideout:20170511165859j:plain

サイボウズのミートアップ

「Cybozu Meetup」は、サイボウズのエンジニアとカジュアルに交流する場として企画、開催しているイベントシリーズです。いま流行の企業ミートアップのサイボウズ版ですね。会場はサイボウズのオフィスなので、社内の雰囲気を実際に肌で感じて頂ける機会でもあります。

開催頻度は東京オフィスで月1回、大阪オフィスで数カ月に1回程度の予定です。毎回テーマを決めていて、これまでに「フロントエンド」、「SRE」(Site Reliability Engineering)というネタで開催しました。

サイボウズの生産性向上

通算3回目となるCybozu Meetupのテーマは「生産性向上」。

2015年8月に生産性向上チームを立ち上げた宮田(@miyajan)が「すべてを自動化せよ! 〜生産性向上チームの挑戦〜」と題してトークセッションを行いました。

f:id:cybozuinsideout:20170511170013j:plain

質問&交流タイム

f:id:cybozuinsideout:20170511171011j:plain

トークセッションの後の交流タイムでは、別チームのエンジニアや一般社員も参加し、生産性向上に関する技術の話や、エンジニアの働き方の話などでも盛り上がりました。

f:id:cybozuinsideout:20170511171212j:plain

f:id:cybozuinsideout:20170511171250j:plain

サイボウズの生産性向上チームでは、一緒に生産性向上に取り組んでくれるエンジニアを絶賛、募集中です。詳しくは、以下のサイトをご覧ください。

生産性向上エンジニア──CIや自動化などの開発基盤を整備する大事なお仕事 - サイボウズ株式会社のWeb エンジニア中途の求人 - Wantedly

次回は「スクラム/アジャイル」

次回のCybozu Meetupは「スクラム/アジャイル」をテーマに開催します。開催の様子は、こちらのブログでレポートしますので、お楽しみに。

また6月には、大阪オフィスでの開催も予定しています。ご興味ある方は、connpassグループ「Cybozu Inside Out」をフォローしてくださいませ。

ではまた。