Agile Studio プロデューサーの木下です。2020年11月にスクラムガイドが改訂されました。前回の改訂が2017年だったので3年ぶりの改訂です。スクラムガイド(日本語版)PDFスクラムガイド...
7月末にGoogleを退職して、Coral Capitalにジョインした私に対して、似たような感じの質問がいくつもメッセで飛んできています。 「スタートアップへの転職を考えているのですが、ここの会社をどう思いますか?」 「スタートアップに転職するときに考えるべきことは何ですか?」 質問者の属性で共通しているのは、スタートアップ企業や、そのエコシステム一般について、あまり詳しく知らないということです。このまま大手企業にいていいのだろうか、もっと良いキャリア機会があるのかもしれないと漠然とした機会損失の不安を感じているようです。特に新卒5〜7年目で1社しか知らないという人で、まだリスクを取りやすいライフステージにある人に多いようです。 自ら起業するとか、共同創業者としてスタートアップする起業家ではなく、大手や中堅企業を辞めてスタートアップに社員としてジョインする人に向けて、いくつか考えるべきポ
LINEがオープンソースで「LINE FIDO2 Server」公開。パスワード不要でログインできる「FIDO2/WebAuthn」を実現 LINEは、スマートフォンやPCの指紋認証や顔認証などを用いることでパスワード不要でログイン処理を可能にする標準技術「FIDO2」や「WebAuthn」に対応したサーバ「LINE FIDO2 Server」をオープンソースで公開しました。 これにより、さまざまなWebアプリケーションやモバイルアプリケーションなどでFIDO2/WebAuthnを利用したログインが容易に実装できるようになることが期待されます。 LINE Security R&DチームがFIDO2認証標準を実装したFIDO2 ServerをOSSとして公開しました。 FIDO2-Serverは、FIDO2の登録と認証の主要部分を提供します。さまざまなWebブラウザとOSプラットフォーム、お
はじめに この記事では、学んでいくためのマイルストーンとして「知ったかぶりができること」を設定するのもアリなのでは? という提案をします。 初学者でなくても『どうやって学んでいこうかな~』は全エンジニアの関心事だと思うので誰かの行動のきっかけになれたらうれしいです。 目次 (エンジニア)人生は勉強や! 「知ったかぶり」を再定義する 「知ったかぶり」を可視化する 無知の知はすぐに自覚できる どうすれば人に説明できるようになるのか いったんここまでのまとめ 脳内イメージの解像度をどう上げていくか アウトプット先を意識したインプットをしよう " 知ったかbrilliant Journey of Engineers " さあ、なにを知ったかぶりしていこう? おわりに (エンジニア)人生は勉強や! 技術は高速かつ複雑に成長しているので、新たな分野を学ばなきゃいけない機会はどんどん増えていく。また、そ
まとめ async/await 構文は、Promise で書ける処理のうち特定のケースしか表現できない 特定のケースとは、ある非同期処理の前処理と後処理がそれぞれ 1 個ずつの場合のみである async/await 構文は初心者に非同期処理を導入する際に適しているが、非同期処理を逐次処理として書けるという幻想を与えるので、どこかで知識をアップデートする機会を設けるべきである この記事はなに? 少しバズったのでまとめておこうかと。 「async/await があれば Promise なんて難しいものは要らない!」とか言ってるウブな子に、複数の API に並列にリクエストを投げて一つ以上成功した時だけ先に進む、みたいな問題を与えて愛でてみたい。— Yuta Okamoto (@okapies) 2020年12月11日 async/await は Promise のネストを手続き的なコードに見え
OAuthにおける認可コード横取り攻撃とその対策 Jul 5, 2021 前回の記事で示したように、カスタムURLスキームを偽装した不正アプリは正規アプリへのディープリンクを乗っ取れる。この挙動の悪用シナリオとして、正規アプリと認可サーバー間のOAuthフローにおける認可コード横取り攻撃が知られている。この攻撃への対策を把握するためにiOS環境でシナリオを再現し、PKCEの有効性を確認した。 要約 OAuth 2.0の拡張機能であるPKCEを導入することで認可コード横取り攻撃を無効化できる。OAuth 2.0の仕様では、認可サーバーはネイティブアプリをクライアント認証できない。そのため、認可サーバーは認可コードを横取りした不正アプリと正規アプリを識別できない。しかし、PKCEの仕組みにより認可サーバーは正規アプリを識別できるようになり、認可コード横取り攻撃の検知が可能となる。 ネイティブア
mozaic bootcampというhttps://t.co/OfP8vuZTkfリスナーのための4日間通し勉強会に参加中。2日目の今日はkeep-aliveからのちょっとHTTP2、これからCookieの話— にんじんくん (@ninjinkun) 2019年4月29日 mozaic bootcampとは? mozaic.fmリスナー向けの勉強会。mozaic.fmはJxck氏が主催するPodcastで、Web標準やブラウザ、プロトコルなどWeb技術をターゲットにしており、自分も愛聴している。 今回行われたbootcampはゴールデンウィークの4日間を使い、「Webを正しく理解し、正しく使う」ことを目的として行われた。 参加者はざっくり言うとそこそこ経験のあるWebエンジニアが6名、主催のJxck氏、mozaic.fmでお馴染みの矢倉氏の計8名。参加にあたってはビデオ通話による選考もあっ
コンテナイメージのレジストリでは、脆弱性検査の実装が当たり前になっている。企業でKubernetesなどコンテナを使用するにあたって脆弱性対策がどれほど重要なものか理解するために、脆弱性検査や、関連する国際的な標準について整理した。 脆弱性(ぜいじゃくせい)とは 脆弱性とは、プログラムの動作の不備を悪用される情報セキュリティ上の弱点である。つまり、ソフトウェア上の問題が原因となって生じた欠陥であり、セキュリティホールとも呼ばれる。当然、ソフトウェア開発者は、脆弱性を産まないように細心の注意を払ってコード開発を進めるが、開発者が利用するオペレーティングシステムのライブラリやパッケージに含まれることもある。そのような事情から、開発者の責任範囲外に原因がある場合も多くある。 潜在的な脆弱性を突いた新たなクラッキングの手口が、時間の経過ともに発見される。そのことから、開発当初はコードに脆弱性は無い
暗号資産を取り扱う米国のCoinBaseは、2019年6月に発生したFirefoxの脆弱性(当時ゼロデイ)を悪用した攻撃への対応を2019年8月9日にセキュリティ担当者がBlogで明らかにしました。ここでは一連の対応の顛末についてまとめます。 対応公開までの経緯 情報の公開を行ったのは米暗号資産取扱い事業者 Coinbaseのセキュリティ担当者 Philip Maritin氏。 2019年6月20日にTwitterで第一報レベルの情報共有が行われていた。 1/ A little more context on the Firefox 0-day reports. On Monday, Coinbase detected & blocked an attempt by an attacker to leverage the reported 0-day, along with a separ
ReactのConcurrent Modeが最初に発表されたのはもう1年近くも前のことです(記事執筆時点1)。Concurrent Modeはたいへん奥深い機能で正式版がたいへん待ち遠しいですが、Concurrent Modeの代名詞として多くのReactユーザーに知られているのはPromiseをthrowするというAPIデザインです。Concurrent Modeでは、コンポーネントがレンダリング時にPromiseをthrowすることで、レンダリングをサスペンドした(Promiseが解決されるまでレンダリングできない)ことを表します。 Concurrent Modeに関しては筆者の既存記事Concurrent Mode時代のReact設計論 (1) Concurrent Modeにおける非同期処理などをご参照いただきたいのですが、ここではPromiseをthrowするということ自体に焦点
バグハンターmageに聞くバグハンティングの方法とセキュアなサービス作りに必要なこと バグハンターとは、Webサービスやソフトウェアなどに含まれる脆弱性を、システム改善のために探し出す人々です。バグハントの方法は非常に多岐にわたりますが、具体的な手法、使用ツール、ハントのマナーを凄腕のバグハンターに聞きました。mageの名で知られる馬場将次さんが語り下ろす実践的なノウハウは、サービスをセキュアなものにしたいエンジニアのみなさんにとっても重要な知見になるでしょう。 バグハンティングを犯罪にしないために必ず知っておきたいこと 馬場流バグハント手法「調査」「解析」「実証」。そして「普通はやらない」を無数に試す 防御のために、言語やフレームワークの実装を学ぼう。コード読解から、違和感を見つけ出す方法を実践してみる XSSの現在。技術の進化と並走する攻撃手法の進化 セキュリティを理解するためにまずは
Mirrativバックエンドのエンジニア @stakme です! みなさんMacでDockerしてますか?今回は私から、Mac+Docker開発についての文章をお届けします。Docker Desktop for Macの有料化など、最近話題の多いところですよね。 ただし法的問題を含みますので、記事の正確性に配慮していますが、内容は保証しません。法的問題は弁護士に相談しましょう。 tl;dr まずは現状認識 必要なのはdockerd 困りがちなポイント Lima Linux バインドマウント ポートフォワード 結局どうするか あと6週間 We are hiring! tl;dr 大前提として「GUIを使わければMac版Docker Desktopは無料」ではない Docker Desktop for Macは便利だが、マウント起因でパフォーマンスに影響を受けるケースも存在する 「買わないなら
自宅からリモートワークを行う際、ZoomやSkypeといったオンラインビデオ会議ツールを使用するケースがよくあります。オンラインビデオ会議ツールではウェブカメラを使って自分の顔を映しますが、アルゴリズムで別人になりきってオンラインビデオ会議に参加できるオープンソースのディープフェイクツール「Avatarify」が公開されています。 GitHub - alievk/avatarify: Avatars for Zoom and Skype https://github.com/alievk/avatarify This Open-Source Program Deepfakes You During Zoom Meetings, in Real Time - VICE https://www.vice.com/en_us/article/g5xagy/this-open-source-pro
【第40回AIセミナー】 「説明できるAI 〜AIはブラックボックスなのか?〜」 https://www.airc.aist.go.jp/seminar_detail/seminar_040.html 【講演タイトル】 機械学習モデルの判断根拠の説明 【講演概要】 本講演では、機械学習モデルの判断根拠を提示するための説明法について紹介する。高精度な認識・識別が可能な機械学習モデルは一般に非常に複雑な構造をしており、どのような基準で判断が下されているかを人間が窺い知ることは困難である。このようなモデルのブラックボックス性を解消するために、近年様々なモデルの説明法が研究・提案されてきている。本講演ではこれら近年の代表的な説明法について紹介する。
ログ分析勉強会では、「ログ分析」に関わるすべての技術、事例、知見を共有し、日々の業務に役立てられる情報交換ができる場所を目的として活動。初のオンライン開催となった今回、NTTドコモサービスイノベーション部の千田拓矢氏が、AWS純正サーバーレスなログ分析基盤を構築する方法を解説しました。関連資料はこちら。 AWSのサーバーレスサービスでセキュリティのログ分析 千田拓矢氏:それでは始めたいと思います。AWSのサーバーレスサービスでセキュリティのログ分析をしようという話です。 簡単に自己紹介します。千田と申します。NTTドコモのサービスイノベーション部というR&Dの部署に所属していて、5年目社員です。 基本的に普段の業務では、クラウド、AWS、GCP、Azureのセキュリティに関わる仕事をしています。機械学習もちょっとわかるくらいに勉強していて、その関連でFPGAとかGPUみたいなハードウェアの
はじめに 私自身は今年の 7 月にドメイン駆動設計(DDD)を実践する企業に転職したばかりで DDD 実践歴は浅いのだが、最近は開発業務の他にも中途採用者の DDD 教育や 現場で DDD!2nd のドライバー役をする機会を頂くなど、DDD の布教活動にも少し関わっている。 その中で「DDD ムズイ」という言葉をよく聞いたので、DDD の実践に悩んでいる人向けにサンプル問題の解説を通して、実は DDD 自体は難しくないんだよってことを教える目的で本記事を書いた。 TL;DR(最初に結論) DDD 自体はドメインを中心にモデリングと実装をイテレーティブに繰り返す設計プロセスであり、モデリングと OOP の理解があれば誰でもできる。 難しいのは DDD 自体ではなくて、モデリングまたは OOP である。特に「良いモデル」を得ることは非常に難しい。 なので「DDD ムズイ」と感じる人はモデリング
This post is also available in: 日本語 (Japanese) Executive Summary This tutorial is designed for security professionals who investigate suspicious network activity and review packet captures (pcaps). Familiarity with Wireshark is necessary to understand this tutorial, which focuses on Wireshark version 3.x. Emotet is an information-stealer first reported in 2014 as banking malware. It has since evol
こんにちは!小田島です。前回の「コールバック編」を納稿したとき、アイキャッチ画像はJavaScriptのロゴにタイトルの文字を入れただけというとんでもないやっつけ仕事だったのですが、さくナレ編集部の方に「シリーズで理解が深まる」というすごい煽り文句がついたとてもカッコいい画像に差し替えていただきました。アイキャッチ詐欺にならないようにがんばります。 非同期処理シリーズの2回目はPromiseについての説明です。前回はコールバックについて説明しましたが、Promiseを使うことでどのように便利になったのでしょうか。それでは見ていきましょう!今回はコードが多いのでかなり分量が多く感じられるかもしれませんが、実際はあまり大したことはありません。 今回の目的 今回説明するのはPromiseです。これはFutureパターン(Promiseパターン)というデザインパターンの一種で、ECMAScript
最近、TDDのテストコードは捨てても良いかみたいな議論を見ました。 これに対する自分個人の経験上の意見ですが、TDDは雑多にテストコードを使い捨てても効果を出せると思います。 もちろん、TDDで保守性が高く価値あるテストを書いて、捨てずにCIや中長期的なリファクタリングで再利用していくと、TDDの効果を増幅できます。ただ、それをするにはスキルや事前の工夫、労力が必要ですし、できる場面に限りがあります。 そういったことをやらず、もっとゆるい姿勢で取り組んでも、費用対効果をプラスにできる手法がTDDだと考えています。 今回は、そのTDDでゆるくしてもよいポイントを、実経験からまとめたいと思います。 TDDのテストは使い捨てでいい TDDのテストはプログラマのこまごまな課題に応じて累積的に作られるため、保守コストがかかるテスト・保守する価値の低いテストが生まれがちです。そのためテストの使い捨ての
第1回:ToF距離センサの仕組み 第2回:加速度センサの仕組み 第3回:温度センサの仕組み 第4回:光学式マウスのチップを拝む 第5回:チップを拝む〜互換チップの世界〜 第6回:ソースコードを覗く〜GPIO編〜 しっかりとした正しい知識を基礎から学び、長く電子工作を楽しむことができるようになることを目的とした今回の連載。分かりやすく解説してくれるのは、金沢大学電子情報通信学類教授の秋田純一先生です。第6回から始まった新シリーズ「ソースコードを覗く」の2回目となる今回は、Arduinoのライブラリのソースコードを読んでいきます。それでは早速始めましょう! 目次 Arduinoのアナログ出力 アナログ出力とPWM analogWrite()のソースコードを覗いてみる 1. Arduinoのアナログ出力 Arduinoでは、アナログ出力ができるピンがあります。ここにLEDをつないで光らせるのに、
from glob import glob files = glob('data/*.csv') len(files) # 10000 この 1万件の CSV ファイルを Pandas DataFrame として読み込みたい。 ちなみに検証用のデータは以下のようにして生成した。 (3列 x 10,000行 の CSV ファイル 10,000 個) import numpy as np import pandas as pd row_n = 10000 col_n = 3 columns = [f'col{i}' for i in range(col_n)] for i in range(10000): df = pd.DataFrame(np.random.randn(row_n, col_n), columns=columns) df.to_csv(f'data/{i:04}.csv',
同人ゲームサークル「えーでるわいす」が開発し、マーベラスから発売されたアクションRPG『天穂のサクナヒメ』。稲を育てながらキャラクターを育成し、横スクロールアクションを体験していくという斬新なコンセプトで、パッケージ版が品薄になるなどSNSを中心にゲーマーたちの話題をさらっている。村山竜大氏による可愛らしいキャラクターデザインも好評だ。 そんな『天穂のサクナヒメ』について「えーでるわいす」代表のなる氏がTwitter上にて、同作は同人ゲームサークル「にゃっほい屋」が開発した「ラグナロクエンジン」が使用していることを明らかにした。 (画像はSteam『天穂のサクナヒメ』より) 本作の開発のきっかけについては、2018年の「BitSummit」のステージイベントで明らかにされており、「えーでるわいす」が手掛けた『アスタブリード』をBitSummitに出展していたところ、マーベラスUSAからオフ
リファクタリングの鶏卵問題 ソースコードがクソなので綺麗にしたい。 リファクタリングしたい。 しかし、リファクタリングが出来ない。 リファクタリングが出来ないのは、テストが無いからだ。 よし。じゃあテストを書こう。あれ、テストが書けない? そのようなテストが無く、書き換えられないことによる矛盾や憤りは皆さん何百回と感じてきたと思います。 しかし、この「テストが出来ない」ということを言語化するのは、非常に難しいと思います。それは、「テストが出来ない」には実は2つの視点があります。 本質的にテストが困難なモジュールで、誰がやってもテストが書けない。 本質的にモジュールはテスト可能だが、自分の実力が足りず、自分ではテストが書けない。 1.のようなテスト困難なモジュールは誰がやってもテストは書けないです。しかし、問題は、「テストを書きたい」と思ったとき、「自分がそれほどテストに詳しくない」という場
ターゲット 巨大なSPAを作ってしまった人へ 巨大なSPAを作らないように気をつけたい人へ 今回はJSだけにフォーカスするが、もっというと、 超速本 を読んでください。 注意:本資料は、webpack チャンクの挙動を概念的に説明することを重視しているので、 webpack の詳細な設定や、出力ファイル名などは実際の処理と一致しない。適宜自分の手元にある設定とすり合わせるように。 昨今のJSビルド問題と、その解決のためのゴール設定 巨大なJS(+最近は in JS された各種SVGやCSS)はダウンロードだけではなく、UIスレッドのCPUをブロックする。 これはとくにCPUが貧弱な端末で体験が悪化する。そしてビルド時間で開発者体験を阻害する。 できれば webpack 推奨の 144kb 以内にしたい…が現実的に難しいので、 せめて 350kb ぐらいに抑えたい。 SPAなら (ローディン
ブラウザで長いループや、重い処理をともなうループを回したいとき、同期的にJavaScriptを実行するとメインスレッドがブロックしてしまうので、ちょっとずつ細切れに分割して実行したい、ということがある。 昨日久しぶりに書いたら新たなパターンと出会ったので、これまでにどう書いてて今回どうなったかメモ。 setTimeoutする 以前(10年前とか)はこんなのをよく書いていた。 itemsがでかいArrayで、console.logがすごく重い処理だとして読んでください。 function iterateHeavyTask(items) { const startAt = new Date(); while (items.length > 0 && new Date().getTime() - startAt < 10) { console.log(items.shift()); } if (
たとえば、かつてiptablesで設定していたIPv4に関連するパケットフィルタリング設定は、nftablesにおいては「ip」というアドレスファミリに紐付けたテーブルを作成することで設定できる。同様に、ip6tablesやarptables、ebtablesで設定していたものはそれぞれ「ip6」や「arp」、「bridge」というアドレスファミリに紐付けたテーブルで設定する。 「inet」「および「netdev」アドレスファミリはnftablesで新たに導入されたもので、まず「inet」はIPv4およびIPv6の両方を対象にした設定を行えるアドレスファミリだ。従来IPv4とIPv6の両方にまたがったフィルタリングルールを設定したい場合はiptablesとip6tablesの両方で同じようなルールを追加する必要があったが、nftablesではinetアドレスファミリで指定することで単一の設
ソフトウェアテストの実行を機械学習で効率化する。Jenkins作者の川口氏が立ち上げた「Launchable」で実現しようとしていることとは(前編) Jenkinsの作者として知られる川口耕介氏は、昨年米国で新会社「Launchable」を立ち上げ、日本にもその100%子会社であるLaunchable Japanを近日中に立ち上げ予定です。 Jenkinsの登場がテストやビルドの自動化を促進し、ソフトウェアの開発生産性を向上させたことは明らかでしょう。川口氏によると、Launchableは機械学習などの技術を用いてそれをさらに前進させるものだとしています。 インタビューを行った5月末の時点で、同社は米国に6人、日本に4人と10人ほどの体制で製品開発を進めています。 果たしてLaunchableはどのようなビジョンで何を実現しようとしているのか、同社共同創業者兼共同CEOの川口氏と、Laun
こんにちは!もう新卒エンジニアとは言えなくなった西尾です!(社会人2年目) 最近、世界的に流行っているWebスキミングについて調べていたのですが、意外と日本語の情報が少なかったので、今回はWebスキミングについて調べた内容をブログにまとめてみました。 Webスキミングとは Webスキミング(Web skimming)とは、その名の通り Web版のスキミング です。具体的には、ECサイトなどの決済画面に不正なスクリプトを埋め込み、ユーザがフォームに入力したクレジットカード情報を窃取する攻撃です。 一般的には「フォームジャッキング」とも呼ばれている攻撃ですが、個人的には「Webスキミング」の方が直感的に分かりやすいかなぁと思ってます。 Webスキミング自体は数年前から発生していたようですが、昨年イギリスの大手航空会社が大きな被害を受けたことがきっかけで有名になり、最近は世界中でスキミング被害が
Googleアナリティクスは無料にも関わらず大量のデータが取れるツールですが、データをもとにどうするかは教えてくれません。 数字の増減に一喜一憂するだけの方も少なくないはず。 今回はそのGoogleアナリティクスの分析によって売上を倍増させた方に話を聞きました。 どの数字を見たのか分析をもとにどのように改善したのかこちらを中心にインタビューをしたので、ぜひご参考ください。 ーーー 私はあるジュエリー・ウォッチメーカーのマーケティング責任者をしています。 商品は世界各国でも展開しており、業界のなかでも比較的歴史の長い会社です。 数多くのKPIをGoogleアナリティクスで定点観測しており、今回は成果があったものをお伝えします。 才流では「分析から最適な施策がわからない」「Googleアナリティクスの活用方法がわからない」企業さまを支援しています。マーケティング活動でお困りの方はお気軽にご相談
前回UPしたように、OVAでは色々と思いが果たせなかったケースがあります。途中降板ならまだいい方で、企画を通すためにさんざ作業した挙げ句、いざ実現すると別の人が脚本書いている、或いは企画そのものが無くなっている。そんなものはざら。 普通ならそういう作品については守秘義務契約があり発信できないはずですが、なにせまともな契約というものが存在しなかったかつてのアニメ界。企画だけ書かせて買い取りのギャラすら払っていただけてないのだから、契約書があるはずもなく。 なので久しぶりにそうしたことどもを思い出して、墓参の代わりにしようか、と。そんな記事です。いつものことですが、本当に書けないことについては触れないと思います。また完全なオリジナル企画(私の原案)の場合はいちいちその内容を説明しないといけなくなるし、そのネタをどっかで使いまわしていることもあるので、紹介はしないかと。そうそう、割と長く関わった
こんにちは、IT基盤部の中村です。 主に社内システムのインフラを担当しています。 現在の業務内容とは少しずれてしまいますが、最近までメール系のインフラには深く携わっていたこともあり、今回はメールシステムについてお話します。 今どきSMTPなどレガシーな話かもしれませんね。しかしながら良くも悪くも枯れたSMTPはインターネット基盤の根底に位置する息の長い技術でもあります。 きっとみんなまだ使ってるはずなのに、あまりノウハウが出回っていないのが辛いと感じているそこの担当者の方、よろしければ少しの間お付き合いください。 サービスでのメールの利用用途 我々がサービスとしてメールを取り扱うとき、その主だった利用用途は下記の2つです。 メールマガジンなどの情報発信 入会・ユーザ登録時などのユーザ存在確認 メールマガジンはユーザーに情報を新たに届けたり、あらたに弊社の別のサービスに触れて頂く機会を提供す
家庭向けネットワーク製品──いわゆるWi-Fiルーターでもアクセスポイント型ではなく、メッシュネットワークを構築してシームレスなネット環境を作る製品も増えてきました。 しかしメッシュネットワーク対応の製品は、アクセスポイント形式の製品よりもまだ高価です。以前「ラズパイを無線LANルーター化する ~アクセスポイント編~」「ラズパイを無線LANルーター化する ~ブリッジモード編~」でルーターやアクセスポイントとして利用する方法について紹介しましたが、ラズパイでもメッシュネットワークを構築することは可能です。 そこで今回はその発展系という意味で、GitHubに掲載されている内容を元に、ラズパイを使ったメッシュネットワークの構築についてご紹介していきます。 ラズパイの準備 それではメッシュネットワークを作り上げるための準備から行っていきましょう。今回使うラズパイですが、無線LAN側はアクセスポイン
ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが?LaravelDDD設計アーキテクチャCleanArchitecture ある日夢の中で設計に詳しい悪役令嬢が現れてこんなことを言い放ったので、考察してみましたという設定のポエムです。 問題提起 ドメイン駆動設計、オニオンアーキテクチャ、クリーンアーキテクチャといった考え方はもちろん重要なものの、僕は難しく考えずに「削除しやすいように機能を作る」のが第一歩として重要ではないかと考えています。 本記事では「削除しやすい設計」について持論を展開してみます。 ※議論のスコープはWebサービスに限定し、例示としてPHPのフレームワークであるLaravelを用います 削除しやすいことがなぜ重要か 一度開発した機能は、それで終わりではなく、改修、改善を繰り返し、そして場合によっては仕様が廃止さ
id:quick_past おいらは下流の仕事を、わかりやすい規模に切ってもらわないと混乱して手が動かない。あと仕上げは他の人にやってほしくてしょうがない。仕上げるためには集中力が必要で、集中力を高める事が物凄い疲れる。 https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20200113022528 すごく分かる。集中力を高めるためのアドバイスをいくつか。 仕事の分解は私もできない。私の場合は、最適な手段の選択とか、めんどくささとか、不安とかがあふれて混乱するのが原因なので、誰かに依頼するつもりでやるのが一番よいということを見つけた。客観的に手順をノートとかに整理する。これで、感情に振り回されることなく分解ができる。イマジナリーフレンド(イマジナリー同僚?)を想定し、仕事の進め方を説明するのも有効。関係のないものを可能な限り視界と音声から除く
勤労感謝の日 今日11月23日は勤労感謝の日ということで、お仕事漫画の話。 「お仕事漫画」とは言え、定義の境目は結構ふわふわしていて、自分はブログでカテゴリ付けするときは「分野(職業・趣味)」と分類しています。 aqm.hatenablog.jp 「好きなことで生きていく」じゃないですけど、「ものすごく熱中している趣味」と「職業」の境界って最近曖昧なんだもの。のだめもいつのまにかプロのピアニストになるし。 似たような感じで「戦争・テロ・犯罪」というカテゴリも作ってます。 aqm.hatenablog.jp 戦争と犯罪は一般的には別のものですけど、「テロ」って戦争? 犯罪? 大規模化したテロって戦争の一部? そうした議論をしたくないので、「戦争・テロ・犯罪」にまとめてしまいました。 ということで、「犯罪」も扱う「お仕事漫画」の、「ハコヅメ」の話です。 「ハコヅメ~交番女子の逆襲~」1巻より(
TypeScriptの型システムは、ユニオン型を始めとする様々な機能を持っているのが特徴的です。 その中でも、mapped typesとconditional typesは高度な機能として知られています。 ところが、その機能の膨大さゆえ、全てを使いこなす必要はない、TypeScriptの複雑な機能を無闇に使うべきではないという言説はたびたび現れます。 そのときに槍玉に上がりやすいのがmapped typesとconditional typesなのです。 筆者は、これらの機能は使えるだけ使い倒すべきであるという考えを持っています。 主張の根幹には、高度な型を使えばより正確にインターフェースを記述することができること、そして正確なインターフェースは使いやすさや正確な型推論結果に貢献することがあります。 正確なインターフェースや型推論結果は、コードの理解速度や開発効率を促進します。 これらは型シ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く