TSKaigi 2024 ref: https://tskaigi.org/talks/tockn
この連載では、注目企業のCTOが考える「この先、エンジニアに求められるもの」を紹介。エンジニアが未来を生き抜くヒントをお届けします! ニフティ、はてな、グリーなど、日本のIT黎明期をけん引してきたベンチャー企業でサービス開発をリードし、エンジニアとして広くその名を知られた伊藤直也さん。 2016年には宿泊・レストラン予約サイトを運営する一休のCTOに就任し、大きな注目を集めた。 あれから6年。『一休.com』『一休.comレストラン』のUI/UXは飛躍的に向上。新型コロナウイルス感染症の影響で旅行・外食業界が苦戦する中でも業績は好調だ。 しかし、伊藤さんがCTOに就任した当時、同社はさまざまな技術的負債を抱えており、開発課題が山積みの状況だった。 伊藤さんはなぜ、一休にジョインすることを決めたのか。開発組織の変革のために取り組んだこととあわせて、伊藤さん自身が一人の技術者として成長を続ける
連載目次 準委任契約と請負契約 今回は、システム開発の要件定義工程の契約形態についてお話しする。 本連載の読者ならご存じの方も多いと思うが、情報システムの開発は、準委任契約に基づいて行われる場合か請負契約に基づいて行われる場合が多い。そして1つの開発においても、要件定義工程は「ユーザーの作業を支援する」という意味合いで、成果物の完成責任を負わない準委任契約で、設計以降の工程(ここでは便宜的に「開発工程」と呼ぶ)は「ベンダーが主体となる」ために成果物の完成責任を伴う請負契約で行う場合がよくある。準委任契約は、「専門的知識やスキルを持つ人間が契約で合意した時間働けば、その対価は払ってもらえる」というのが原則である。 では、専門家が一定時間働きさえすれば責任を果たしたことになるのだろうか。 今回取り上げる事件は、ITベンダーが要件定義工程から開発工程までを一貫して行ったが、要件定義に抜け漏れがあ
いろんな人の相談役をやっているのだけど、ささいなことに、わざわざ「良いと思います!」って言うようにしている。 この調子でいいと思います!ってわざわざ言う 言われた方からは、迷うことなく進めたら良いのだな、ということが伝わる 意見を言えるチャンスがあったら「この調子でよさそうだけど、ゆくゆくはこんな問題に直面しそうですね」とか、ちょっと意見をはさんでおく 頭出ししておいたら考えてもらえるかもしれないし、想定と違ったら、えっそんなことはないんですけど…と早めに変なことに気づけるかもしれない シニアっぽいロールの人物としては、聞かれてもないのに、良いと思います!って言っておくのが大事。 やってみてもらって、うまくいかなかったら、想定と違ってうまくいかなかったんですけど、って声をかけてもらえる。 最初の段階で黙っていたら、どういうスタンスだったのか不明で、相談しにいくときに、まず、どう思いますか?
開発合宿運営チームの id:yutailang0119 と id:maku693 です。はてなでは四半期に一度、技術グループ主導で開発合宿を開催しています(過去の合宿の様子は「開発合宿」カテゴリーにまとまっています)。 2023年4月に実施した開発合宿では、参加者が複数のチームに分かれ、それぞれ異なるプログラミング言語で同じお題のWebサービスを開発しました。言語ごとの特性を比較し、今後の技術選定に生かす取り組みです。 この記事ではその開催レポートをお届けします。 開発言語の特性を理解したい さまざまな技術要素を2日で実装できるお題に 参加チームやコミュニケーションでの工夫 順調に開発が進んだ合宿当日 技術勉強会で「成果物を見る会」を実施 開発合宿を終えて プログラミング言語ごとの使用ライブラリ TypeScript Go Ruby Scala 開発言語の特性を理解したい はてなではたくさ
使用するライブラリ このアプリで、Next.js以外に使用するライブラリは以下の4つです。インストール方法等は必要な箇所で説明します。 Prisma TypeScriptのORマッパーです。アプリでのノートの保存等に使用します。 ▶ Prisma | Next-generation ORM for Node.js & TypeScript Tailwind CSS CSSフレームワークです。アプリのUIデザインに使用します。 ▶ Tailwind CSS - Rapidly build modern websites without ever leaving your HTML. Zod バリデーションライブラリです。APIレスポンスの型定義とバリデーションに使用します。 ▶ Zod | Documentation SWR データフェッチ用のライブラリです。ノート一覧のクライアントサイドで
AWSのログ管理についてはいくつか考えるポイントがあると思います。 どのログを保存するか。 CloudWatch Logs(以下CW Logsと記載)とS3のどちらに保存するか、もしくは両方に保存するか などなど。 システムの特性によるところも多いかと思いますが、自分の中でのログ管理のベースラインが定まりつつあるので、頭の整理がてらまとめます。 自分の中での大まかな方針としては以下です。 S3に保存できるものは基本S3に保存する。 以下の場合は、CW Logsに保存する。必要に応じてS3に転送する。 アラームを出したい場合 さっとCW Logs Insightでログを確認したい場合 CW Logs に出さざるを得ない場合 全体像としては以下になります。 なおあくまで個人的な経験に基づくものなので、実際にはシステムの特性を踏まえて方針の決定が必要かと思います。 またこれは必要、これは不要など
「オブジェクト指向するとプログラムが読めなくなるから禁止」のような話は昔からあって、新しい技術についてこれない人を揶揄するようなニュアンスで使われていましたが、実際にはこれはオブジェクト指向迷路にうんざりした現場での率直な意見だと思います。 オブジェクト指向は、まじめにやるほどプログラムを読みにくくするという性質をもっています。 ※ 使い方次第というコメントついてますが、だからこそちゃんと性質をしっておく必要があると思います。 オブジェクト指向の代表的な指針を3つあげると次のようなものがあります。 オブジェクト同士の連携としてプログラムを組む 単一責務の原則 インタフェースと実装の分離 まず、オブジェクト同士の連携でプログラムを組むと、コードが飛びまくって追いにくくなります。そして単一責務の原則により、小さいクラスが大量に生成されて、追いにくさがさらにあがっていきます。 ダイクストラ先生が
モデル、新規に作り上げる時よりも、手を加える時に、最小の手の入れ方だとアドホック過ぎて将来の負債になる、完全過ぎると工数が爆発して今できなくなる 一方で元のモデルも決して悪くない さて、そんな時どうする?という問いかけに答えられるか?って話ですよ— magnoliak🍧 (@magnolia_k_) 2023年2月10日 この話、要はバランスで終わらせても良くないので、事後評価をどうするかってところを定型化するのかなぁって思ってる— magnoliak🍧 (@magnolia_k_) 2023年2月10日 おそらく教科書的には、抽象度がキープされるように修正しましょう、元の設計者の意図を踏まえて修正しましょう、依存関係のレイヤーが崩れないように修正しましょうって話になると思うんだけど、一方で修正しないといけない”難しくて複雑な”要件が目の前に有り、それを実現することを考えるだけでも設計
ある機能を実装する際、完成形のコードになるまでには、プログラムとして不正確な状態や、プロダクト品質ではない状態を経る 静的型検査や lint rule に違反したコードが途中に挟まる 型エラーや lint エラーは望ましくないので、できるだけ早くこうした情報を開発者に伝え、気付けるようにすると良い CI でこうしたエラーを検知して、Pull Request をマージする前に気づけるようにするとか エディタ上にエラーの情報を表示して、コーディング中に気づけるようにするとか エラーを積極的に通知してくれるのはありがたいけど、やりすぎには注意するべき なんとなくでも動いてくれたほうが嬉しい 例えば lint エラーがあった際に、watch モードで起動しているビルドやテストの実行を止めて、lint エラー見つけたよーと教えてくれる開発環境がたまにあるけど... 別にビルドやテストの実行は止める必
あまり昔 (?) の話はしないようにしていたんですが、そろそろするべきタイミングかもしれないと思ったので書いてみます。 なお、基本的には video game の意味でゲームと書いています (が、文脈によってはもっと広いときもある)。 ゲームとは何か? 私がプログラムを書き始めた理由はまぁよくある「ゲームが作りたい」というものでした。その頃好きだったゲームはなんだったかな。PS2とかだと思いますけど。 ゲームはまぁおうちになんかいろいろあったのでいろいろやってた覚えがありますが、昔から「変なもの」を好む傾向自体はあったっぽいです。エレクトロプランクトン 無限にやってた。 ここで「変」っていうのは「ゲーム性がそこまではっきりしないもの」という意味合いです。例えば戦闘とか育成とか、ではない (やってなかったわけでもない)。 その頃はまぁいわゆるコンシューマ機を触っていたわけでそこまで「変なもの
ウェブサイトの表示スピードはサイトの健全性における重要な観点の一つです。Googleが提唱するCore Web Vitalsコア・ウェブ・バイタルズと呼ばれる指標の中にもサイト表示スピードに関する項目があり、表示されるまでの時間が単なるユーザー体験だけでなく、SEOでも無視できない存在です。表示スピード低下の要因はネットワークやサーバーサイド、そしてフロントエンドまで広範囲におよびます。本記事ではその中でも画像の読み込みについて改善できるテクニックを改善前と改善後を比べながら紹介します。 改善前サンプルを別ウインドウで開く 改善後サンプルを別ウインドウで開く 画像読み込みBefore / Afeter 上図はLighthouseによるチェックの結果です。Lighthouseはウェブサイト検査ツールで、ウェブページのパフォーマンス、アクセシビリティ、SEOなどの状態を計測できます。Googl
技術的負債は開発者体験を悪化させる / Technical Debt and Developer Experience - Speaker Deck 「品質と速度はトレードオフの関係ではなく、比例する」みたいな話を見聞きするたびにモヤッとするのが、 本当に短期的な話、三十分以内に変更してデプロイしたい、みたいな「短期的」な話であれば「テスト書いてる時間はない」は間違いではない、一分将棋みたいなギリギリのプロジェクトに従事している人のことを考えろ(?) 「ちゃんと設計せずに作った(そうせざるを得ない外圧があった)→ちゃんと設計する余裕があれば負債を溜め込まずに済んだ」みたいに聞こえるが、十分な時間があったら負債が出ない高品質の設計ができたとでも思っているのか? ↑に書いた「三十分か一時間か」みたいなギリギリの状況ならいざ知らず、日・週単位でスケジュールが組まれてるソフトウェア開発プロジェクト
観測しようとすると、その観測が影響を与えてしまう感じで、おもしろい 自分の頭の中 この機能をチームで開発するのに、だいたい2ヶ月くらいかなぁと自分が頭の中で思っているとする。もし僕らの知ってる範囲ですべてが収まれば1ヶ月くらいで終わるかもなぁと思いつつ、まぁ、知らない範囲のことがあるだろうし2ヶ月くらいに思っておくのがいっか という感じ。6割ぐらいの自信 チームの中 チームメイトに「この機能いつ出せるかな?」って聞かれることはあんまりないと思うけど、もし聞かれたら「んー、2ヶ月くらいじゃない?もしかしたら、もうちょっと早くできるかもだけどね」ってそのまま頭の中を伝えると思う 聞かれることがあんまりないというのは、そもそも、チームでラフに見積もるから。Tシャツサイズとかストーリーポイントとかを使って「Mサイズだから2ヶ月くらいだね」って話をするだけで済む。「2ヶ月くらいだね」って言ったものは
NEC サイバーセキュリティ戦略統括部 セキュリティ技術センターの山本和也です。セキュリティサービス開発のスクラムマスター [1]及びアジャイル開発におけるセキュリティ実装の推進活動を担当しております。今回のセキュリティブログでは、システム開発において採用が増えているローコード/ノーコード開発におけるセキュリティを考えるきっかけとして、OWASP Top 10 Low-Code/No-Code Security Risksを、OWASP Top 10との比較を交えつつ紹介します。 近年、民間企業ならびに行政組織において、デジタルトランスフォーメーション(以下DX)の取り組みが盛んになっています。経済産業省は『DXレポート』[2]や『デジタルトランスフォーメーションを推進するためのガイドライン(DX推進ガイドライン)』[3]の中で、経営戦略だけでなく、システムとしても環境変化に対して柔軟かつ
最近 GitHub Actions を弄くり倒すことにハマっていて、 GitHub の Checks API を利用して annotation を出すおもてなしをすることだけが生きがいだと思って生活していました。 そんな中、JavaScript (TypeScript) のコードのテストでよく使われている Jest で、どの assertion が落ちているかを annotation で分かりやすく表示したいと思っていました。自作で頑張ろうかな~と思って調べていると、 Jest 28.0.0 (2022年4月末ごろリリース)から Github Actions で annotation を出す reporter 機能が組み込まれていたという事実を知りました。 jestjs.io この便利機能が思ったより世の中で使われていない感じがしたので紹介します。 サンプル こちらをどうぞ: github
■参考 ・JSTQB ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応 ・業務でも活用できるソフトウェアテストの7原則 ・Agile Testingのエッセンス ・TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング ・テスト駆動開発 ・BDDとATDD ・The BDD Books - Discovery (Japanese Edition) ・リーダブルテストコード ・テストコードにはテストの意図を込めよう ・組織にテストを書く文化を根付かせる戦略と戦術(2020秋版) ・質とスピード(2022春版、質疑応答用資料付き) ・【翻訳記事】テストに対する考え方「Testing Manifesto」 ・マネジメント向けアジャイル開発概要 ・The Software Testing Ice Cream Cone ・Goo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く