Siderでプロジェクトの知識をチームに広げる

Siderでサポートしているツールのうちの三つ、QuerlyとPhinder、GoodcheckはSider自身が開発しているものです。*1 *2 これらのツールは 特定のテキストのパターンを発見したときに、なんらかのメッセージを表示する という動作をします。とても単純な機能ですが、これをどう使えば良いのでしょうか? チームの知識、経験、歴史 ちょっと一般的な話をしましょう。 コードレビューには「問題があるコードを見つけて修正を促す」という品質に対する効果もありますが、それよりも実際に高く期待されているのは「チームの情報共有を進める」という効果だと言われています。「チームに長くいる人が、過去にチームで発見されたベストプラクティスについて伝える」「以前発生した障害のことを覚えている人が、新しく書かれたコードに似たパターンを見つける」「既に定義されているSASSのmixinについて教えてあげる」こういった、チーム内での知識共有を通して、チームは成長していきます。 一番良いのは開発者同士でレビューして知識を伝えていくことですが、これを多少なりとも自動でやるにはどうしたらいいでしょうか? Linterでやることもできなくはありません。Linterが提供している組み込みのルールはあなたのチームについての知識を持っていないので、プラグインに相当する仕組みでルールを追加する必要があります。まあ面倒ですよね……一般的なLinterのルールは、それなりに複雑なので、普通のプラグインの仕組みは結構複雑なルールを書けるようになっています。つまり開発のコストが大きすぎる。 「これはチーム全体で知っておいて欲しいことだ!」となにかを思いついた直後に、3分くらいで実装できないといけませんが、プラグインでは困難です。本当はルールを手動で書くこともしたくないのですが、人間のコミュニケーションから自動的に抽出するというのはあまりに難しいのでひとまず諦めましょう。そもそもGitHubとかSlackとかに完全にコミュニケーションが乗っているわけでもないので、まあ無理です。 その辺りをSiderチームで詳細に検討した結果、「パターンにマッチしたメッセージを表示する」くらいのメカニズムが適当なのではないかな、ということになりました。説明に戻ります。 カスタムルール Siderでは、これを「カスタムルール」と呼んで、自分でルールを追加・定義できるLinterとして活用することを提案しています。プロジェクト内で定義されたAPIについてなんらかの注意事項を表示したり、言葉の利用方法についてレビューで注意したり、オペレーションの手順を表示したりできます。 rules: - id: remove_column pattern: "remove_column(...)" message: カラムを削除するときは https://eagletmt.hateblo.jp/entry/2017/09/24/004709 を読みましょう これはQuerlyの例ですが、remove_column(...)というテキストでパターンを定義し、remove_columnメソッドの呼び出しを検出します。この例では、 remove_column するときの注意事項について説明したブログの記事を紹介していますが、例えばプロジェクトによっては単に「カラムを削除するな」と言うかもしれません。*3 引数の数以外(レシーバも条件にはできますが)で、メソッド呼び出しを特定することはできないというのがポイントです。このくらいなら、パターンの構文を覚えればすぐに書けるようになるし、書きたいものは大体書けます。(「大体」は言い過ぎかもしれませんが、まあ意外と書けます。)ここでは書いていませんが、パターンをユニットテストする仕組みも用意していますので、 チェックしたいことを考える パターンを考える…

Continue Reading Siderでプロジェクトの知識をチームに広げる

リポジトリの追加フローが新しくなりました

こんにちは。プロダクトチームの渡邉です。この度、Siderにおけるリポジトリの追加フローが新しくなりましたので、ご紹介します。 従来のフロー 従来のフローでは、以下のような手順で、すべてのオーガニゼーションから追加するリポジトリを探し、選択する必要がありました。 サインイン後、ダッシュボードにアクセス リポジトリ追加ボタンをクリック すべてのオーガニゼーションのすべてのリポジトリから追加するリポジトリを選択 新しいフロー 新しいフローでは「オーガニゼーションの追加」と「リポジトリの追加」を別のステップとして分けています。まだSiderに登録されていないオーガニゼーションのリポジトリを追加する場合には、以下の手順で、まずオーガニゼーションを登録します。 サインイン後、ダッシュボードにアクセス オーガニゼーション追加ボタンをクリック 追加するリポジトリのオーガニゼーションを選択 オーガニゼーションのリポジトリ一覧から追加するリポジトリを選択 既に追加されているオーガニゼーションのリポジトリを追加する場合には、オーガニゼーション設定画面から、以下の手順でリポジトリを追加します。 サインイン後、ダッシュボードにアクセス 追加したいリポジトリがあるオーガニゼーションをクリック リポジトリ追加ボタンをクリック オーガニゼーションのリポジトリ一覧から追加するリポジトリを選択 新しいリポジトリ追加フローについて、フィードバックなどございましたら、お気軽にSiderの右下のチャットからお問い合わせください。

Continue Reading リポジトリの追加フローが新しくなりました

Sider Code Review Meetup #4 レポート

9月27日、Sider主催による『Code Review Meetup #4 ~Code Reviewで集まろう~』がOpen Network Spaceにて開催されました。コードレビューをテーマにした本Meetupも今回で4回目。この夜は予約段階で満員・キャンセル待ちも発生するなどの注目をいただき、最終的に30名以上の方々のご参加となりました。この日ご登壇いただいた4名のスピーカーの皆さまからは、コードレビューをテーマにそれぞれ独自の切り口でお話を聞くことができました。その様子をレポートします!

Continue Reading Sider Code Review Meetup #4 レポート

新しい解析結果ページをリリースしました

こんにちは。プロダクトチームの渡邉です。Siderでは、プルリクエスト上で発生した警告を確認し、その重要度に応じて、ユーザーが対応、未対応の選別ができる解析結果画面を提供しています。 この度、この解析結果ページのデザインをリニューアルしましたので、ご紹介します。 新しい解析結果ページでは、いくつかのレイアウトの変更を行っておりますが、機能に変更はありません。Siderではより快適なユーザー体験を提供するために、今後とも継続的にデザインの変更を行っていきます。 新しい画面についてフィードバックなどございましたら、お気軽にSiderの右下のチャットからお問い合わせください。 あなたのチームの開発効率向上に! Siderの自動コードレビューを14日間の無料トライアルでお試しください!

Continue Reading 新しい解析結果ページをリリースしました

CircleCI×Sider 合同 Meetupを開催しました!

去る9月13日、GINZA SIX10階にある株式会社プレイドのオフィスにて、CircleCI/Sider合同Meetupを開催しました。 CircleCI、そしてSiderを普段ご活用いただいている企業四社の担当エンジニアのかたより、各社におけるSiderやCircleCIの活用法について、様々なお話を聞かせていただきました。 当日の会場提供にご協力いただいた株式会社プレイドの真新しいオフィスは、室内に芝生などがあり、とてもおしゃれで広々とした空間でした。 (サッカーボールもある!) まず最初にご登壇いただいたのは、会場ホストでもあった株式会社プレイドの駒崎幸之氏。 ITベンチャー企業にてフロント、DB、インフラ、開発環境改善業務を経て、2017年6月より株式会社プレイドでKARTEの開発に携わる駒崎氏は、『PLAIDにおけるCI/CD環境 (スライドURL: https://speakerdeck.com/komukomo/development-and-deployment-at-plaid )』 というタイトルで発表してくださいました。メインとなる開発言語がJavaScriptのプレイドさんでは、開発フローでGitHubやCircleCIを活用していること、またリリースフローではNetflixのOSSであるSpinnakerを利用していることなどをご説明いただきました。 プレイドのリリースフローを表すスライド 二人目の登壇者はGVA TECH株式会社のCTOである本田 勝寛氏。主にスタートアップにてソーシャルゲーム・アドテク・シェアリングエコノミー領域に携わった後、2017年9月、契約書のAIによる判定サービスや、契約書の雛形ダウンロードや作成サービスを提供するGVA TECH株式会社のCTOに就任された本田氏は、『Siderで運用コスト下げて創業フェーズを乗り切る(https://www.slideshare.net/KatsuhiroHonda/sider-114364294)』というプレゼンタイトルそのままに、自動コードレビューツールであるSiderを利用してコーディング規約をチームメンバー間で統一していることや、プロダクトを個別ではなく全体的な最適化を図っていることなどについてお話いただきました。 (このプレゼンを凝縮したかのようなスライド) つづいては、日本だけでなく海外にも進出しているフリマアプリを提供する、株式会社メルカリより鈴木祥真氏がご登壇。2016年よりメルカリで1人目のSoftware Engineer in Test を務められ、現在はマイクロサービス化方面で奮闘なさっているという鈴木氏は、『ソフトウェア開発のフィードバックループ( https://speakerdeck.com/shomas/feedback-loops-in-development )』をテーマに話してくださいました。デザインレビュー、コンパイル、コードレビューなど開発のサイクルのさまざまなステージで発生するフィードバックとその時間やコストなどについてお話しいただいたのですが、中でも印象的だったのが『HRT原則』です!鈴木氏はコードレビューの際に「Humility (謙虚)」「 Respect (尊敬)」「Trust(信頼)」という3つの要素からなる『HRT原則』を大事にされていて、問題が発生したときは「チーム対問題」として捉え、人格攻撃をしないように心がけている、ということでした。これは開発者だけでなく、あらゆるチームに活用できる考えではないでしょうか。 デザインレビューについて説明する鈴木氏 そして、この夜のトリを飾ってくださったのは、株式会社クラウドワークスの五十嵐 英樹氏でした。「より快適に開発がしたい」をモットーに、インフラからCI/CD、ChatOps、開発プロセス改善まで幅広く活動されてきた五十嵐氏は、2015年より株式会社クラウドワークスにてメインサービスである日本有数のクラウドソーシングプラットフォーム、CrowdWorksの開発に取り組んでらっしゃいます。本Meetupでは、『CrowdWorksにおけるCircleCIとSiderの活用法 (…

Continue Reading CircleCI×Sider 合同 Meetupを開催しました!

RubyKaigi ’18 特別企画 Jonan Scheffler 氏インタビュー

2018年5月に仙台で開催されたRubyKaigiの際、私たちSiderチームはなんと、開発者でHerokuのDeveloper AdvocateのJonan Scheffller氏にインタビューする機会をいただくことができました! 大学で日本文化を専攻していたJonanさんが日本語で回答してくださった、今年のRubyKaigiでの新しい試み、Herokuでの仕事の話、日本の温泉などの幅広い話題をたっぷりお楽しみください。

Continue Reading RubyKaigi ’18 特別企画 Jonan Scheffler 氏インタビュー

RubyKaigi 2018 直前!チーフオーガナイザ・松田明さん特別インタビュー

今回はRubyKaigi2018開催直前ということで特別にRubyKaigi チーフオーガナイザの松田明さんにインタビューしてきました。数ある松田さんのインタビュー記事の中でも、あまり目にすることのない「コードレビュー」や「レビュー自動化」を中心に、お話をお聞きしてきました。

Continue Reading RubyKaigi 2018 直前!チーフオーガナイザ・松田明さん特別インタビュー

RuboCop vs Rails Best Pratices それぞれの特徴。初心者はどう使う?

目次 どのようなツールがあるか RuboCop 特徴 rails_best_practices 特徴 試してみる。 対象 RuboCop 導入 Gemfileの書き換え database.ymlの作成 Gemの導入 作動させてみる failに対応してみる 設定ファイルでコーディングスタンダードを定める 対応しているチェック種類 触れてみた感触 rails_best_practices 導入 Gemfileの書き換え SublimeText2やTextmate2との連動 databases.ymlの作成とGemの導入 作動させてみる warningに対応してみる default scope is evil isolate…

Continue Reading RuboCop vs Rails Best Pratices それぞれの特徴。初心者はどう使う?

RuboCopコミッタ、Pockeが語るBatsov像とアドバイス -SideCI技術顧問就任記念インタビュー

SideCIは、2018年4月より、RuboCopコミッタのPockeこと、桑原 仁雄氏を技術顧問に迎えました。これを記念し、Pocke氏に、RuboCopから、Bastov氏のこと、そして未来のコミッタたちへのアドバイスなどについてインタビューを行いました。

Continue Reading RuboCopコミッタ、Pockeが語るBatsov像とアドバイス -SideCI技術顧問就任記念インタビュー

Reactの開発チーム内でのJavaScriptの静的解析器ESLintの使われ方、設定、独自プラグイン

JavaScriptのための静的解析器ESLintが、facebook/reactにおいてどのように使われ、設定されているか、独自プラグインなどを解説する記事。fbjsなどFacebook社のESLintルールを主に採用。

Continue Reading Reactの開発チーム内でのJavaScriptの静的解析器ESLintの使われ方、設定、独自プラグイン