Skip to main content

エンジニアに聞く:モダンSASTの深掘り

著者
Headshot of Snyk Team

Snyk Team

feature saar kuriel

2022年5月18日

0 分で読めます

テルアビブを拠点に活躍するシニアソフトウェアエンジニア、Saar Kurielに、Snyk Codeチームで取り組んでいる注目のプロジェクトについて話を聞きました。__また、これまでのキャリアやプロジェクト管理の手法、乗り越えてきた技術的な課題、今後の目標についても伺いました。

大きなSnykの犬のロゴの下、段状の座席に座る男性。周囲にはSnykのロゴ入りクッションが置かれている

Jess Katz(JK):こんにちは、Saar!エンジニアとしての経験や、最近取り組み始めた新しいプロジェクトについてぜひ聞かせてください。まず、自己紹介とSnykに入社するまでの経緯を教えていただけますか?

Saar Kuriel(SK):もちろんです!Snykに入社する前は、Wixで3年間働いていました。フロントエンドエンジニアとして入社し、2年後には6人の開発者からなるチームのエンジニアリングマネージャーになりました。1年間その管理職を務めた後、担当するプロダクト領域とキャリアの方向性を変えることにしました。組織に貢献しながら、エンジニアリングの技術面に注力したいと考えたのです。できれば、革新的で変革をもたらすB2Bプロダクトに携わりたいと思っていました。サイバーセキュリティに情熱を持っており、Snykの製品が高く評価されていることも知っていたので、応募することにしました。現在は、画期的な開発者中心のSASTツールであるSnyk Codeに携わっています。

JK:Snykでエンジニアリングマネージャーから個人貢献者(IC)に転向してみて、いかがですか?

SK:キャリアを通じて、このことについて何度も考えてきました。人を導き、成長を支援する方法は知っていますし、意思決定に影響を与えたいとずっと思っていました。一方で、自分の仕事が好きですし、技術力や日々のコーディングを手放したくありませんでした。これまでのキャリアで、マネージャーからはリーダーシップのスキルがあるので管理職を目指すべきだとよく言われ、その道を選びました。しかし、その間、自分の仕事に正しく優先順位をつけられていないと感じることがよくありました。コーディングを続けるとチームへの貢献が足りないように感じ、まったくコードを書かないと自分に満足できませんでした。そうした経験から、別の道を探す必要があると気づき、ICを選びました。

現在の役割での目標は、グループのシステムに関する技術力を高め、その責任を担うこと、組織内でエンジニアリングのニーズを伝えること、プロダクトを改善・成長させること、そして失敗を回避する方法を理解したうえでリスクを取ることです。また、ほかのチームメンバーを支援し、自分の意見を安心して表明し、グループに貢献していると実感できるようにしたいと思っています。目標を達成するため、エンジニアリングマネージャーと相談し、チームに新しく加わったメンバーのメンタリング、チームのシステムSLIの改善支援、同じ目標を持つ人たちと学び合うためのミーティングなど、目標と主要な成果(OKR)を設定しました。マネージャーは、適切な人を紹介し、自分に何を求めるのかを明確にするのを手伝い、大きな目標に向けたマイルストーンを設定してくれました。毎週の1対1ミーティングで進捗を確認しています。

JK:今、取り組んでいるプロジェクトの中で、特に難しいものは何ですか?

SK:現在、Snyk Codeの中核コンポーネントの一つをリファクタリングしています。Snyk Codeは高度な静的アプリケーションセキュリティテスト(SAST)ツールです。既存のコンポーネントを担当しているため、最初にコードを書いた人の視点で考え、将来起こり得る問題を防ぐ必要があります。他の人のコードを読むと、いつも学びがあります。

このコンポーネントは、あらゆる種類のSCM(ソースコード管理)との通信を処理し、AIルールエンジンに渡す前にリポジトリを分析用に処理するため、非常に重要です。Snyk Codeの大きな特長の一つは解析速度です。私がその速度を損なうわけにはいきません。このプロジェクトに取り組む責任の重さや直面している課題、寄せられている信頼の大きさを想像していただけると思います。

チームのアーキテクトやほかのエンジニアと話し合い、新しいAPIをスケッチし、ロードマップを策定しました。その過程で、各アプローチの長所と短所、想定されるリスクとその軽減策について議論しました。また、背景や既存機能を損なわないよう、現在の実装に至った理由も分析しました。

利用できる技術もいくつか検討し、試してみることにしました。シンプルで、並列処理を本質的にサポートしていることから、プログラミング言語にはGoを選びました。それまでGoを使ったことがなかったので、楽しい挑戦になっています。

JK:これまでに直面した課題には、どんなものがありますか?

SK:技術的な話になります。課題の一つは、SCMからクローンしたソースコードをどうキャッシュすれば、SCMへのアクセスを減らし、解析全体の時間を短縮できるかということです。インターネットに接続できない場合もあるオンプレミス環境で動作し、共有クラウドインフラにとって最優先事項の一つであるコードセキュリティを支えるため、必要に応じてスケールできる必要もあります。

調査の結果、特定のコミットSHA(セキュアハッシュアルゴリズム)を指定したシャロークローンを使い、MongoDBに保存することにしました。GridFSを使うことで、大容量のソースコードファイルを簡単に扱いながら、保存するコンテンツの柔軟性も確保できます。この決定に至る前にRedisも検討しましたが、値のサイズ制限やキャッシュの削除方法が要件に合いませんでした。EFSも検討しましたが、オンプレミス環境でのデプロイとスケーリングが難しいと判断しました。

私たちのチームもSnyk全体も、イノベーション、俊敏性、品質のバランスを重視し、スケーラブルで信頼性の高いソフトウェアを生み出しています。たとえば最近、このコードベースの機能の一つを独立したサービスに切り出しました。すでにほかのAPIとは完全に独立して機能しています。それなら、依存関係を切り離して、このプロジェクトのコードベースをもっと俊敏にできるのではないかと考えたのです。

JK:このプロジェクトのどんなところに最もワクワクしますか?

SK:たくさんあります!まず、試行錯誤し、議論し、最善の方法を見つけることをマネージャーが全面的に支援してくれます。締め切りに追われることもないので、集中してじっくり考えられます。また、キャリアとして進みたい方向に進めていて、これまで携わったことのない領域にも取り組んでいます。プロダクトを大きく変革する取り組みに貢献できています。そして、素晴らしいチームの指導とサポートを受けながら、こうした経験ができるのも魅力です!

Snykに入社して間もない時期にこのようなプロジェクトに携われたことで、マネージャーが私を信頼し、貢献したいという強い意欲を認めてくれていると実感できました。特にエンジニアにとって、最初からマネージャーと認識を合わせることはとても重要です。このプロジェクトを通じて、自分の意見を伝え、試行錯誤し、新しいプログラミング言語も学ぶことができました。とても素晴らしい経験です。

新しい言語を学ぶ機会は、いつもあるわけではありません。大変だと感じるエンジニアもいるかもしれませんが、私のように学ぶことが大好きな人もいます。世界は常に変化し、新しい技術や課題が日々生まれています。状況に応じた最適なツールを選べるよう、スキルを最新の状態に保ち、幅広く身につけることが大切です。それに、サンプルアプリを書くのではなく、価値のあるものを作りながら学べるのは、本当にワクワクします。

JK:Snykのエンジニアリングカルチャー全体をどのように表現しますか?

SK:Snykの魅力、特にエンジニアリングカルチャーの素晴らしい点は、透明性の高さです。社内で起きているほぼすべてのことを把握できるため、さまざまなプロジェクトに参加し、各部門の状況を理解しやすくなっています。Snykは小規模なスタートアップから大企業へと移行している段階で、エンジニアリングカルチャーも今まさに築かれています。自分もその取り組みに参加して変化を生み出せるので、いっそう魅力的です。自分の足跡を残しながら、ほかの人から多くを学べます。

Snykでキャリアを築きませんか? 募集中の職種 をチェックして、Snykで働くことについて詳しくご覧ください。