Diagram as Code6 different ways to turn code into beautiful architecture diagrams
東京・汐留エリア(「gettyimages」より) 日本有数のビジネス街として発展を遂げた、東京・汐留。3駅9路線が利用できる抜群のアクセスを誇り、名だたる大企業の本社機能が集結。「カレッタ汐留」はさまざまな飲食店や四季劇場などの文化施設で構成され、話題の観光スポットとしても人気を博した。しかし、最近では汐留のゴーストタウン化が危惧されている。今年9月には、汐留に本社機能を置く富士通が移転を発表。電通は本社ビルを売却した。人通りは目に見えるほど減少し、カレッタ汐留のテナントの約半数が空きとなり、SNS上では「枯れた汐留」と揶揄する声も見られる。なぜ汐留は衰退したといわれるようになったのか。そこで今回は、汐留エリアが人気エリアになった経緯や衰退の理由、そして今後の展望について、不動産事業プロデューサーでオラガ総研代表の牧野知弘氏に話を聞いた。 貨物ターミナルの跡地が、ビジネスの拠点に もとも
『ソフトウェアアーキテクチャ・ハードパーツ』を訳者の方からご恵贈いただきました。ありがとうございます。献本については基本的にすべて書評を書こうと思っているため、今回も記事にします。発売は10/27のようです。 ソフトウェアアーキテクチャ・ハードパーツ ―分散アーキテクチャのためのトレードオフ分析 作者:Neal Ford,Mark Richards,Pramod Sadalage,Zhamak DehghaniオライリージャパンAmazon おことわり まず指示語についてです。記事中で「本書」「この本」と書く場合は『ソフトウェアアーキテクチャ・ハードパーツ』を指します。また、「著者」は本書を執筆した人を指すものとします。「筆者」といった場合、それは私のことです。 いわゆるスキミングをした状態で一旦書評をするため、本書の細かい議論の見落としや用語の誤認識が含まれる可能性があります。この書評は
近年のデータベースの新潮流にNewSQLと呼ばれる一群のデータベース製品群の登場がある。そのコンセプトを一言でいうと、RDBとNoSQLのいいとこどりである。SQLインタフェースと強いデータ一貫性(ACID)というRDBの利点と水平方向のスケーラビリティというNoSQLの長所を兼ね備えた夢のようなデータベースである。下図に見られるように、RDBとNoSQLが鋭いトレードオフを発生させていたのに対して、NewSQLではそれが解消されているのが分かる。 RDB vs NoSQL vs NewSQL本当にそのような夢の実現に成功しているか、というのはまだ議論が続いているが(クエリのスループットを出すためにレイテンシを犠牲にしているので本当にトレードオフを解消はしていない、などの問題が指摘されている)、商用でも利用可能な製品としてGoogle Spanner、TiDB、YugabyteDB、Coc
対象読者 Gitをより深く理解したい方 Gitの自作に興味がある方 Gitの内部構造を学ぶ意義 Gitの使い方を知っている人でも、それぞれのサブコマンドが実際どういった挙動をしているか、ましてや内部構造がどうなっているかを学んだことがある人は少ないかもしれません。というのも、Gitが内部を知らなくとも十分使える優秀なツールになっているからだと思います。 しかし、Gitの内部実装を知ることで、コマンドの挙動を正確に理解できるだけでなく、Gitを使っていて何らかの問題が起きたときにも、自分で対処できるようになります。そうしたGitの地力を鍛えるために、内部構造の把握は重要な要素になってきます。 また、今回の内容を学べば、Gitの大枠を実装することもできてしまうので、興味がある方はぜひ挑戦してみてください。 Gitについての誤解 それでは、まずGitについて多くの人が誤解しているであろう点を挙げ
課題 数年前と比較すると、GKEやECSを始めとするコンテナ実行環境でのアプリケーション運用を行うサービスはかなり増えてきた印象があります。 コンテナを運用する上では、アプリケーションのイベントを追跡する上でログをどう扱うかが課題になります。今までのように古いログを定期的にローテートして別のストレージに転送するといった手法はクラウドネイティブなアーキテクチャには最適とは言えません。 アプリケーション開発の方法論として、Twelve Factor App ではログをイベントストリームとして扱うためのガイドラインが示されていますが、近年のWebアプリケーションではシステムを疎結合に連携するマイクロサービスという考え方が主流になりつつあります。 アプリケーションログはサービスごとにフォーマットを整形した上で、ログ収集サービスに配送。必要に応じてリアルタイム分析や異常データの通知、そしてデータの可
オンラインゲームを作ろう!と思ったことがある方は、 こちらの講演記事を1度は見たことがあるのではないでしょうか。 www.4gamer.net こちらの講演は、具体例を交えながら非常に分かりやすくオンラインゲームの主な同期方式が説明してあり、 2024年現在でもオンラインゲームの基礎を学ぶ資料として真っ先に名前を上げる最高の資料です。 しかしながら講演は2010年のものであり、オンラインゲームはこの10年余りで進化しています。 この辺りの進化の話を簡単にまとめつつ、オンラインゲームの同期方式の選び方を紹介します。 (上記講演記事の知識/用語を前提としているため、先に上記記事をお読みください。) オンラインゲームの民主化について 技術の話をする前に。 近年、「マルチプレイヤーゲーム」と聞いてオフラインの画面分割ゲームを想像する人はいないと言って良いほど オンラインゲームは民主化されてきました
はじめに この記事では、メインフレームでは異常時の処理でどのようなことをやっているのか、また、Linuxの異常処理との違いなどについて話してみようと思います。 この記事を書くに至った直接的なきっかけは、とある人からリクエストがあったからです。が、日ごろからメインフレームの異常処理の考え方については、PCサーバーやクラウドによるシステムがメジャーになった現代であっても、参考になることは多いと感じていてはいました。 筆者は今でこそLinux Kernel周りの仕事をしていますが、20年ぐらい前のころはメインフレームのOS開発部隊に配属されていて、メインフレームのとあるコプロセッサのドライバを書いたりしていました。この際、その異常処理における考え方を体験する機会が多々あり、当時のその経験が20年後の現在でも大いに役にたっていると感じていたからです。 そもそもメインフレームは、これまで長年にわたっ
はじめに どんなソフトウェアエンジニアも拡張しやすくメンテナンスしやすいソフトウェアを作りたいと思っているはずです。また、どんなプロダクトマネージャも同様に拡張しやすいシンプルな要求を作りたいと考えているはずです。 しかし、将来の不確実性や発展性に対して見通しを立てるのは難しいものです。そのため、開発チームの思いとは裏腹にソフトウェアの複雑性はどんどんと増大していきます。気がついたら技術的負債と呼ばれるような手もつけられない泥団子になってしまうということもしばしばです。誰もが生産性を下げるために機能を追加したいわけではなく、ビジネス価値を提供するために機能を追加したいだけなのにです。 このような状況を避けるためにはどうしたらよいのでしょうか。今回はその一つの手段として、要求には隠れた「意図」があり、それを発見していくことの重要性についてまずはお話しします。さらにわかりやすい要求が持つ仕様の
こんにちは、はてなでWebアプリケーションエンジニアをやっている id:polamjag です。 最近のはてなでは、若手エンジニアを中心として、いろいろな技術を見つめ直すワーキンググループをやっています。先日、id:onk も「デプロイ今昔」という記事を書きましたが、このエントリーはそのシリーズの続きで、ワーキンググループの「ログ」の回で議論したこと・話題になったことをまとめました。 Web開発におけるログを見つめ直す ログを4つの目的で分類する 目的ごとに求められる取り扱いの要求水準 いまどきのログフォーマットについて まとめ:どう実装するかを模索していく Web開発におけるログを見つめ直す Webサービス(Webアプリケーション)の運用には、多種多様なログがついてまわります。多くのミドルウェアは何もしなくてもそれなりの量のログを出力しますし、クラウド上のマネージドサービスも然りです。行
年末ですね。年末に技術っぽいことを書いても誰も見ていないので、どうでもいいことを書こうと思います。 皆さん技術書は好きですか?好きですよね。読みもしないのに技術書典なんかに大挙して押しかけて、結局積読が増えていく。積んでいるとなんか落ち着くのかもしれません。 私は現在ハードウェア関連の技術者として働いているわけですが、短い人生の中で読んだ技術書の中で、本当に私の人生を変えてしまった技術書を思い出しながら紹介してみたいと思います。 あらかじめ断っておきますが、「名著」や「良い本」を紹介するのではなく、あくまでも私の人生を変えた本です。逆にいうと、あまり名著は出てきません。名著の紹介はすでにいろんなところでやられているので、そちらを見ていただければ。 1. 図解で分かるPCアーキテクチャのすべて(初版) 〈最新〉図解でわかる PCアーキテクチャのすべて 作者:小泉 修出版社/メーカー: 日本実
処理が複雑でジョブの依存関係を定義したい場合は、AWS Batch 単体で制御するか、より複雑な場合は Step Functions を用いて Lambda、ECS(Fargate)、AWS Batch(Fargate) を組み合わせる。 AWSにおけるバッチ処理の選択肢 ざっくりとした選択肢は下記。 Lambda ECS(Fargate) AWS Batch(Fargate) これらのサービスに実際は SQS や Step Functions を組み合わせることもあるので選択肢はさらに広がる。 ちなみに、SQS + Fargate(常時起動でポーリング) という構成や、SQS + Lambda + Fargate(都度実行) という構成は、AWS Batch が Fargate に対応した現在は特にメリットがないので取り扱わない。 2021/5/2 追記 「常時リクエストがくるユースケー
はじめに この記事はHow to Learn Software Design and Architecture | The Full-stack Software Design & Architecture Mapを翻訳したものです。 翻訳がおかしい箇所などあればご指摘頂けるとありがたいです。 元記事の著者: Khalil Stemmler(@stemmlerjs) 設計、アーキテクチャ、フロントエンド、ブロックチェーンに興味ある方是非Twitter(@show_clements)フォローしていただけると嬉しいです! 設計に関する記事 ソフトウェアデザインとアーキテクチャは、DevOpsやUXデザインのように、コンピューティングの領域の中でも独自の研究分野となっています。ここでは、クリーンコードからマイクロカーネルまで、ソフトウェアデザインとアーキテクチャの幅広さを説明するマップを紹介しま
久しぶりにペラペラな思いつきを書き捨てて、寝ます。 2、3年前ぐらいにSIerやコンサルでTreasure Dataとか使ってマネージドDWH作ろうぜっていう風潮が流行って、今は運用フェーズに入ってどこも結構苦しんでるってのが僕のすごく狭い観測範囲での印象。 AWSのReadshiftしかり。 なぜ苦しんでるかっていうと、言うほどスケールしないからであり、言うほどマネージドじゃないから。 Treasure Dataは基本的に割当メモリが固定でオートスケールしないので、ピーク時に合わせて必要なメモリを確保しておかないといけない。そうなるとメモリ使用量とか負荷とかをモニタリングしないといけないわけだけど、Saasだから内部のアーキテクチャが隠蔽されていていちいちサポートに問い合わせないといけなかったりする。 Redshiftの場合はそもそも自前でクラスタ管理しなくちゃいけないのでそれが大変って
ソフトウェア開発者でなくとも、セキュリティ・バイ・デザインという言葉は聞いたことがあると思います。しかし、セキュリティ・バイ・デザインが十分に実施できていると言える組織は多くないのではないでしょうか。 いざセキュリティ・バイ・デザインを実施しようとしても「何をすればよいのだろう?」「どうやれば良いのだろう?」となかなか手が動かない。そんな状況の一助となるよう、我々がセキュリティ・バイ・デザインを学び、実践した内容を文書化し公開する運びとしました。 セキュリティ初心者でも読みやすいように、以下の特徴を念頭において本書を執筆しました。 軽快な文章 図表を多用したグラフィカルな見た目 キャラクターのセリフに共感しながら理解ができる 1章 セキュリティ・バイ・デザイン -セキュリティ・バイ・デザインの概要や必要性の説明 2章 脅威分析 -組織やシステムに対する脅威分析の実施方法 3章 セキュリティ
こちらの記事は、Jonathan Saring 氏により2019年12月に公開された『 11 Must-Know FrontEnd Trends for 2020 』の和訳です。 本記事は原著者から許可を得た上で記事を公開しています。 ランチ中のフロントエンドトークでスマートに見られる方法! チームのランチトークでスマートに見られることは、最新のフロントエンドのトレンドを常に把握しておくための大きな理由であることは言うまでもない。 それは、あなたがより良い開発者になり、より良い技術とより良い製品を作るのに役にたつかもしれない。 たぶんね。 だから、いくつかの興味深い方向を示すことで、この名誉あるクエストを君が簡単に達成できるように少し時間をもらいたい。 すべてのコンセプトについて1から10まで説明するのではなく、そのコンセプトとそれがどのように有用であるか紹介しよう。最後にはさらなるリソー
免責事項 社内向けに展開するように雑にまとめました Next.jsの知見が深くない人がリードしてPoCを立ち上げなきゃいけなくなったが、社内的にはNext.jsを推奨しているみたいな場面を想定しています なので自信ないところも多いですが割と断言するように心がけて書いています PoCの立ち上げ想定なので、jest/Storybookなど内部品質面についてあまり深く書くことを避けています ほぼ自分の知識だけで書いており私見も多いですし、そもそも自分自身がトップクラスの知識や視座を有しているわけでもないので、まずは以下の話を理解はした上で、踏襲するかどうかは別途他記事やGitHub、公式ドキュメントなどを漁って判断することを推奨 App RouterかPages Routerか 2023年末現在まだApp Routerは技術記事が足りてきている印象ではないため、社内でノウハウを積極的に貯めていく
はじめに Pythonの環境構築は僕にとって、戦争でした。 如何せんツールが多すぎます。 インターネットで調べるとざっと挙げるだけで 元から入っているpython3 元から入っているpython3 + venv pyenv pyenv + pyenv-virtualenv pyenv + venv anaconda docker + python docker + anaconda ... 以上のような組み合わせが山程出てきます。 よく最近のゲームのキャラメイキングの 「組み合わせは無限大!」を思い出します。 この記事では、それぞれの環境構築の概念をイラスト画像でまとめようと思います。 環境構築のコマンド自体は取り扱わないためご注意下さい。 追記 2019/11/07 本記事はPython初心者による「概念のみ」に関する説明のため、ベストな環境構築や、すべて正確かつ詳細な内容は含んでないで
職業柄、「よりよいもの」や「よりよい環境」を求める方が多いエンジニア。そんなエンジニアの「家づくり」にはきっと、さまざまなこだわりが詰め込まれているはず。 「エンジニア、家を建てる」第4回は、兵庫県に戸建てを建てた、はまーんさんに寄稿いただきました。 子育てをする中で、当時住んでいた賃貸物件に手狭さを感じていたはまーんさん。コロナ禍をきっかけに、県内の“田舎”に土地を買い、もともと憧れていたという「家づくり」をスタートさせました。 心がけたのは、自然たっぷりな周囲の環境を生かすこと。エンジニアという仕事は四六時中何かを考えていることが多くなりがちですが、この家のおかげで「何も考えずに過ごす時間」をたくさんつくれているそうです。 こんにちは、はじめまして。はまーんです。 一時的、東京に住んでいたこともありますが、基本的にほぼ関西圏を拠点にソフトウェアエンジニアをしてきました。今はお客様のビジ
ちょっと昔まではデータ基盤の管理人・アーキテクト, 現在は思いっきりクラウドアーキを扱うコンサルタントになったマンです. 私自身の経験・スキル・このブログに書いているコンテンツの関係で, 「データ基盤って何を使って作ればいいの?」的なHow(もしくはWhere)の相談. 「Googleのビッグクエリーってやつがいいと聞いたけど何ができるの?」的な個別のサービスに対するご相談. 「ぶっちゃけおいくらかかりますか💸」というHow much?な話. 有り難くもこのようなお話をよくお受けしています. が, (仕事以外の営みにおける)個人としては毎度同じ話をするのはまあまあ疲れるので, データ基盤にありがちな「何を使って作ればよいか?」という問いに対する処方箋 というテーマで, クラウド上でデータ基盤を構築する際のサービスの選び方 (データ基盤に限らず)クラウド料金の基本的な考え方 をGoogle
アプリケーションをユーザに公開する場合, それがGUIであってもCUIであってもインタフェースが必要になります. Webアプリケーションを公開する場合にはWeb APIを利用するのが一般的であり, AWSもAPIをフルマネージドで活用するためのAPI Gatewayを提供しています. 非常に簡単に活用できるのですが細かい機能などを今一度洗い直す機会があればと思っており, 社内勉強会の機会があったのでAPI Gatewayについて話しました. 今回の記事では社内向け勉強会で登壇した内容をブログ向けに再編しています. 資料はSpeakerDeckで公開していますが, 内容についてより細かくこのブログで説明しますので, 是非ご閲覧ください. What is API まず最初にAPIが何かを確認します. 大雑把に伝えるとアプリケーションが呼び出せば予期した結果を返されるような仕組みです. 名前にあ
ご来店いただきありがとうございます。新刊『プログラマーのためのCPU入門 ― CPUは如何にしてソフトウェアを高速に実行するのか』発売開始のお知らせです。 ほぼすべてのソフトウェア開発者がお世話になるコンピューターの最重要パーツ、CPU。「演算をする」というざっくりした役割は知っているし、もう少し踏み込んでレジスタやアセンブリ命令、あるいはさらに踏み込んで、NAND/OR/NOT回路による演算装置といった原理を勉強したことがあるプログラマーの方も少なくないと思います。 しかし、現代のソフトウェアにおいてCPUがもたらす大きな価値は、その原理のみならず、むしろその尋常ならざる高速さにこそあるといっても過言ではないでしょう。 CPUの性能は、半導体技術の進化やハードウェア構成の妙といった物理的な要因のみによって決まるわけではありません。その裏には、パイプライン化やスーパースカラ化、さらには分岐
TL;DR GraphQLはクライアント側とサーバー側の双方の複雑化を解決するために利用されてる フロントエンドにとってGraphQLはHTTP上で動く信頼できる唯一のリソースとして振る舞う フロントエンドの状態管理のベストプラクティスとしてのApollo Client クライアントファーストなAPI, GraphQLはWeb APIのベストプラクティスになり得る クラシックアプリケーションを改修することなくGraphQLとモダンフロントエンドで今どきのアプリを作れる はじめに GraphQLは非常に良く出来たソフトウェア(の仕様)ですが、複数の側面を持つことからすぐに理解することが難しくまだ日本ではあまり受け入れられていない印象があります。GraphQLを端的に何と言われると "全てのフロントエンドのためのAPI BFF" なのですが、それだけで理解出来る人はなかなか居ないように思います
Skip to the content. 自作RDBMSやろうぜ! このサイトの目的 RDBMS(いわゆるリレーショナルデータベース)というものはプログラミング言語の処理系や、OSなどと同様に、世の中で広く使われているソフトウェアであるにも関わらず、いざ自作してみようと思うと日本語で記述されたサイトや書籍で、必要な情報・情報源がまとまったものがないことに気づきました そこで、叩き台として、本サイト管理人および数名のコミッタで開発している自作RDBMSである SamehadaDB が軌道に乗るまでの経験をベースに、自作RDBMSするための道筋をある程度整理して書き記してみました 各々の情報・情報源はあいかわらず多くが英語で記述されていますが、その点はご容赦下さい なお、本サイトは技術的な解説を提供するのではなく、適切と思われる情報・情報源をポイントするようなサイトとなることを想定しています
【新機能】Google Cloud 純正の構成図ツール Architecture Diagramming Tool が発表されました Google Cloud のアーキテクチャ図を書く純正のツール Architecture Diagramming Tool が発表されました。Google Cloud の構成図ツールの決定版になると思います。 ウィスキー、シガー、パイプをこよなく愛する大栗です。 先程 Google Cloud 純正のアーキテクチャ図作成ツールである Google Cloud Architecture Diagramming Tool が発表されました。 Introducing a Google Cloud architecture diagramming tool Google Cloud Architecture Diagramming Tool 今まではGoogle S
雨穴:Kさん、お久しぶりです。お時間とっていただいてありがとうございます。 Kさん:いえいえ、雨穴さん。ところで送ってもらった間取り図のことですが… 雨穴:はい。一階に謎の空間があるんですが、これについて何かわかりますか? Kさん:うーん…一つ言えるのは、これが意図的に作られたものだということですね。 雨穴:意図的に…ですか? Kさん:この空間は本来必要のない二枚の壁によって作られているんです。 Kさん:台所に接した二枚の壁。これがなければ「謎の空間」は生まれないし、台所も広くなります。 雨穴:なるほど。なぜ作ったんでしょうか? Kさん:もしかして、最初はここを収納スペースかなにかにする予定だったんじゃないですかね? Kさん:たとえばリビング側に扉を作ればクローゼットとして使えるし、台所側に作れば食器棚になる。 だけど途中で気が変わったか、費用が足りなくなったかで扉を取り付ける前に断念した
プレゼンテーションレイヤ、いわゆるフロントエンドがクライアントサイドで実装・実行されるアーキテクチャ (注 1) において、管理画面/管理機能をあとから追加する際にどのような実装パターンがあるのかを整理してみます。 注 1: Presentation Domain Separation の実践の中でも、物理的にプレゼンテーションロジックとドメインロジックを分離しているアーキテクチャです。 用語の整理 プレゼンテーションレイヤ 三層アーキテクチャにおける、システムの利用者へユーザインターフェイスを提供する層です。本記事では"フロントエンド"とほぼ同義で使います。 OSI 参照モデルの第六層ではないです。 バックエンド Web API とは プレゼンテーションを持たない Web API (HTTP プロトコルを用いてネットワーク越しに呼び出すアプリケーション) とします。 プレゼンテーションレ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く