エンジニアHubproduced by エン

若手Webエンジニアのための情報メディア

カオスエンジニアリングによる負荷試験を導入するクックパッドが学んだこと 耐障害性の仮説と検証

料理のレシピ投稿・検索サービスのクックパッドでは2年前からカオスエンジニアリングに取り組み、さまざまな事例やノウハウを蓄積しています。クックパッドの技術部・SR(Site Reliability)グループの小杉山拓弥さんとDX(Developer Productivity)グループ…

ISUCONの問題作成の舞台裏を2020年の出題チーム・白金動物園に聞いてみた

ISUCONの問題は、一体どうやって作られている?あまり明かされることのない、ISUCONの舞台裏を2020年の出題チーム「白金動物園」に聞いてみました。出題者たちは、果たしてなにを考え、どのように参加者と戦うための問題を作っているのか。彼らの答えに、ISU…

Kubernetesのモダンな活用法 - 設計メソッドと、Virtual Kubeletで実現するサーバーレス化を学ぼう

Kubernetesはここ数年で一気にユーザーを増やしたコンテナオーケストレーターですが、一般化にともない、その活用法も洗練されてきました。本稿では「The Twelve-Factor Appを援用したKubernetes設計」と「Virtual Kubeletを活用したKubernetesのサーバーレ…

モノリシックな大規模アプリを運用する技術-サービスを“分割しない”メリットをSansanの実例に学ぶ

モノリシックにアーキテクチャを構築するメリットとは?近年、マイクロサービスアーキテクチャが注目を集めていますが、Sansanは大規模なアプリケーションに成長したいまも、モノリシックな構造を維持しています。ドメインコンテキストの共有のしやすさ、チ…

Web開発・オンボーディング・採用の実例に学ぶ、リモートワークのコミュニケーションと文書術

リモートワークへの注目が高まっていますが、いざ運用すると対面とは異なるコミュニケーションに四苦八苦しているのではないでしょうか。本記事ではリモートワークを長年実践しているYassLab株式会社の安川要平(@yasulab)さんに、具体例を交えながら解説し…

Jakarta EEを知る! オープンソース化されたエンタープライズJavaの現状と今後、バージョン9公開

Jakarta EE 9が2020年7月から9月にかけて段階的にリリースされます。エンタープライズJavaプラットフォームであるJava EEをオープンソース化する経緯と現状、そして最新バージョンから今後について、『Javaアルゴリズム+データ構造完全制覇』の杉山貴章さん…

開発の品質を上げた7つの方法 - ソース管理、コード管理、テスト導入、開発環境の4つの視点から

開発管理の手法やツールには、「品質」を向上させるという目的が存在します。開発者は、手法やツールの先にある「品質」とは何かを理解する必要があります。ソース管理、コード品質管理、テスト導入、開発環境の4つの視点から、「品質管理」の現場で直面した…

帯域を知ろう - ユーザと開発者の視点から考える、テレワーク時代の帯域圧迫を防ぐアプローチ

多くの人がテレワークに移行する中、帯域という言葉に注目が集まっています。インターネット上での社会的活動量が加速度的に上がっていく中、帯域をできるだけ圧迫しないためにはどのような工夫が必要になるのでしょうか。ユーザ、開発者、それぞれの視点か…

Backlogを作ってるエンジニアが教えるBacklog活用術 - 開発チーム内外をつなぐ、課題管理の考え方

プロジェクト管理ツール、コラボレーションツールとしてBacklogを採用しているチームは多いでしょう。多岐にわたる機能を利用できるツールですが、上手に使うためのアイデアと方法を、Backlogを生み出したヌーラボ社の中村知成さんが解説します。開発チーム…

ドメイン駆動設計をわかりやすく - ドメインのモデル設計を手を動かしながら学ぼう

ドメイン駆動設計(DDD)が近年関心を集めていますが、同時にこの設計思想は難しい、わかりにくい、という見方もあります。さまざまなプロジェクトでドメイン駆動設計を実践してきたかとじゅんさんが、サンプル課題をもとに、ユースケース分析、モデル設計と…

AWS上のコンテナはネットワークをどう利用するのか? ポート番号の扱いとDNSの仕組みを中心に

コンテナを利用してWebアプリケーションを開発するとき、Webアクセスはどのような技術を用いて成り立っており、どういったことに注意する必要があるのでしょう。AWSに務める菊池之裕さんに説明してもらいました。

東京都の新型コロナ対策サイトはなぜNuxtJSだったのか? ─ シビックテックのベストプラクティス

東京都が3月初旬に公開した新型コロナウィルス感染症対策サイトは、モダンなWeb技術を使いオープンソースの手法で開発されました。シビックテックの活動から生まれたベストプラクティスについて、開発者のお2人に聞きました。

これから先もPHPで戦うために、なにを使い、なにを学ぶべきか - 廣川類に聞くPHP学習に大事なこと

Webアプリケーション開発言語として広く使われるPHP。黎明期から浸透していくまでの過程、そして、これから先もPHPを活用していくために必要なこと、をエキスパートの廣川類さんに聞きました。

スクラムの原則を、いかにして実践するか - 現場にありがちな悩みを吉羽龍太郎に相談してみた

スクラムは多くの開発現場で取り入れられており、その原則を学ぶのは簡単です。しかし原則を現実に実行しようとすると、さまざまな課題が……。アジャイルコーチの吉羽龍太郎さんにスクラムの基礎から、ありがちな課題への対処法をたっぷり聞きました。

文字コード再入門 ─ Unicodeでのサロゲートペア、結合文字、正規化、書記素クラスタを理解しよう!

文字コードの基本的な概念から、従来の文字コードを紹介し、現在のUnicodeの構成を概説し、プログラミングにおいて注意すべき箇所をいくつか取り上げます。

Kaggleは実務の役に立つ? データサイエンティストがKaggleから学んだ「教師あり学習」の勘どころ

機械学習のトレーニングとして、Kaggleに挑む方は多いでしょう。ただ、Kaggleで鍛えて、データサイエンティストとしての実際の業務に生かせるの?こんな疑問にこたえるべく、日本経済新聞社のデータサイエンティスト、石原祥太郎さんが、「仕事とKaggle」の…

スクラムマスターがやること、やらないこと - アジャイルトレーニングの専門家に聞いてみた

スクラムマスターとして日々仕事に邁進していても、教科書どおりにいかないこともしばしば。イベントに人が来ない……、タスク終わらなさそう……などなど、スクラムマスターが直面しがちな、「あるある」な悩みを、アジャイルコーチの吉羽龍太郎さんに相談して…

Kubernetes-nativeなアーキテクチャ導入の手引き 先進的なクラウド環境を最強テストベッドで体験

Kubernetes-nativeなエコシステムを実現する最強テストベッド環境です。さまざまなミドルウェアを運用したマイクロサービスをフルgRPCなサービス間通信で実現するだけでなく、CI/CDと開発環境も用意しています。

技術的負債を徹底的に解消した話 - オミカレのシステムフル刷新のためにやったことを全部教える

技術的負債、デザイン面での課題など、サービスを構成するシステムを全面にわたってリニューアルしたプロセスを、オミカレの高橋一騎さんが克明に伝えます。

Androidのダイアログを作ろう - サンプルコードで学ぶAlertDialogの使い方の基本からカスタマイズ

Androidでの通知の仕組み「Dialog」の代表格であるAlertDialogには、ユーザーに選択を促す場合以外に、自由度の高い画面を作れる機能があります。この記事では、サンプルコードとともにAlertDialog.Builderクラスを使って用途別にダイアログを構成する情報を…

gRPCでインターフェースを再整理してからサービスを分割─freeeの段階的なマイクロサービス戦略

SaaS型クラウドサービスを提供するfreee株式会社CTOの横路隆さんに、マイクロサービス化をどのように推進したのか聞きました。

機械学習を記事配信に採用したママリ - 0から構築したレコメンドエンジンのアーキテクチャ設計

コネヒト株式会社が運営する女性向け情報サービス「ママリ」では、2019年12月に記事配信で機械学習によるレコメンドエンジンを構築、2020年初頭にテストが完了しました。 機械学習を採用した背景、設計したアーキテクチャとテストの結果について伺いました。

Eclipse、はじめの一歩 - インストールから便利な日本語化プラグインの導入まで

開発業務の効率化に有用なツールとして使われる「Eclipse」は、豊富な拡張機能も魅力です。ごく初歩から学べるよう、インストールの方法や初歩的な使い方の導入、便利な日本語化プラグイン「Pleiades」による機能拡張などを体系的に紹介します。

コードを読み込みScalaの関数型パラダイムを学ぶ - xuwei-kがScalaを学ぶために読んだOSS

数多くのScala関連OSSにコミットを続ける吉田憲治(xuwei-k)さん。その精力的な活動を支える、関数型の知見の源をうかがいました。

コードレビューのやり方、基礎の基礎 - コード改善に重要なレビューの基本的な考え方を学ぼう

コードレビューとは?レビューで問題を見つけて指摘するには?レビューをされる側の心構えとは?ソフトウェアレビューを研究する名古屋大学の准教授 森崎修司さんが、コードレビューの考え方を解説します。

Elm入門と実践 - 買い物カートを作ってアーキテクチャ「TEA」を学ぶ

純粋関数型AltJSであるElmへの注目がじわじわと高まっています。開発者に優しい仕様を持つElmの初歩と、業務に使える実践的な活用法を泉 征冶さんが解説します。

アルゴリズムの基本をJava、C#、Pythonで学ぼう - データを集計し、言語ごとの違いを知る

基本的なアルゴリズムを使った観測データの集計を考えてみます。使用するのは、Java(Java 13)、C#(C# 8.0)、Python(Python3)。ちょっとしたコードでも言語によって違いがあります。

LINEの技術的負債を解消している話 ─ HTTP/2へのプロトコル変更やデータ同期の最適化での改善

サービス開始から10年近くがたったLINEでは、次の10年のため技術的な負債を解消・改善する取り組みをプロジェクトで行っています。

仮想DOMは本当に“速い”のか? DOM操作の新しい考え方を、フレームワークを実装して理解しよう

最近のJavaScriptフレームワークで利用される「仮想DOM」について、リアルDOMの違い、メリット・デメリット、仮想DOMを使ったフレームワーク開発などを、ダーシノ(bc_rikko)さんが解説します。

TCP/IPをわかりやすく - 通信プロトコルの基礎知識を図解で学ぼう

現在のインターネットを支える技術であるTCP/IPについて、基礎となるプロトコル群と、TCPの基本機能を丸田一輝さん、 中山悠さんに解説していただきました。

React Native導入ガイド - 環境構築からクロスプラットフォーム開発のメリットまでを理解する

React Nativeは、クロスプラットフォーム開発を行うためのツールの1つです。JavaScript言語の中で、UIフレームワークのReactを用いてUIの記述と状態管理を行うことで、アプリの動作を組み立てます。本記事では、React Nativeの導入やモバイルアプリ開発の現…

Kotlin 1.3をサクッと学ぶ - CoroutineとKotlin/Nativeを触って理解しよう

Kotlin1.3に加わったCoroutineとKotlin/Nativeという2つの機能を中心に、実践的なプログラミングのヒント、そしてKotlinの最新動向について紹介します。

依存モジュールが少ないソースコードを読む - スペシャリスト岡野真也に聞くPythonの読み方と使い方

現在、多くの支持を集めるPython。10年以上にわたりPythonを使い続ける岡野真也さんに、同言語の学び方、使い方を聞きました。

53サービス・アプリのクラウドやフレームワーク・言語など聞いてみた! アーキテクチャ大調査2020

エンジニアHub恒例のアーキテクチャ大調査。2020年版では、フロントエンドとサーバサイドの開発環境や、クラウドサービスの利用を分けてアンケートを実施。53のアプリ・サービスから回答がありました。

エンジニアのためのDevRel入門 ─ 外部の開発者と信頼関係を結んでコミュニティでファンを増やす

エンジニアリングとマーケティングをミックスしたDevRel(Developer Relations)という活動が注目を集めています。日本アイ・ビー・エムでデベロッパーアドボケイトを務める萩野たいじさんに、エンジニアが果たすべき新しい役割として、DevRelの現状を聞きま…

KotlinをKotlinらしく、そして可読性を高く保つ運用知見 - エキスパート長澤太郎に聞く実装のイロハ

近年注目を集めるKotlinはどのように書き、どのように運用するのがいいのか。2012年からKotlinに親しむUbie社の長澤太郎さんに、その経験から得られたKotlinノウハウを聞きました。

進化の先に理想のエンジニア組織がある─成長のジレンマを解消して進化するフューチャーの組織論

エンジニア組織が成長する際に直面するさまざまなジレンマを解消するうち、ホラクラシー型に進化したというフューチャー株式会社のエンジニア組織論を、宮原洋祐さんに聞きました。

IntelliJ IDEAをもっと便利で使いやすく! つまずきがちな設定や、便利な機能を細かに解説します。

Javaの統合開発環境であるIntelliJ IDEAの人気が高まっています。興味はある方や使い始めたばかりの方に向けて、つまずきがちなポイントや、地味だけど便利な機能などを、IntelliJ IDEA関連の著作も多い今井勝信さんが紹介します。

Ruby 2.7のここがすごい! パターンマッチ、コンパクションGCなどをリリースマネージャーに聞いた

2019年12月25日にリリースされたばかりのRuby 2.7では、どのような機能がどういった経緯で採用されているのでしょう。リリースマネージャーのnaruseさんと、フルタイムコミッターのmameさんに詳しくうかがいました。

実践クリーンアーキテクチャ - 複雑化した大規模ECサイトをモダナイズしたモノタロウの事例

サービスの開発を続けていくにつれ、システムは複雑化、肥大化していき、様々な課題が生じる。工業用間接資材オンラインストアの「モノタロウ」もこうした課題に直面していました。システムのモダナイゼーションに取り組む同社のエンジニアの方が取り入れた…

AWS導入〜スケールまでの変遷を事例に学ぶ - コンテナ化のために「みてね」が選んだ構築戦略

AWSは多くのサービスやプロダクトにとって欠かせない存在です。多岐にわたるAWSの機能をいかに活用するか。サービス立ち上げから、その後のスケールまで、実際の現場でどのようにAWSを活用しているかを、株式会社ミクシィで「みてね」のインフラをリードする…

JAMstackってなに?実践に学ぶ高速表示を実現するアーキテクチャの構成

JAMstackは、「JavaScript」「APIs」「Markup」の3つの技術を組み合わせた、新しいWebアプリケーションアーキテクチャです。いち早くJAMstackを利用してWebサイトを作成した、寺川直宏さんと風間雅也さんにJAMstackについて聞きました。

SRE実践の手引 ─ 信頼性をどう制御するか? から始める、現実的な指標と目標の設計と計測

SREの情報はしっかり収集しつつも、いまひとつ実践に踏み込めないエンジニアの方や組織も多いでしょう。SREに関連する概念を「信頼性の制御」というコンセプトを軸に整理し、小さく始める一歩を坪内佑樹(ゆううき)さんが解説します。

低レイヤの知識の重要性は今後も変わらない - 小崎資広に聞くLinuxカーネル開発の裏側

Linuxは、世界でもっとも広く使われているソフトウェアのひとつであり、多くのエンジニアの仕事に密接に関わっています。では、Linuxそれ自体は、どのように開発されているのでしょうか。Linuxの中枢である、Linuxカーネルの開発者のひとりである小崎資広さ…

Microsoft Azure入門 - Web Appsを使って簡単にWebアプリやAPIを公開してみよう

マイクロソフトが提供するクラウドサービス「Microsoft Azure」の中からWeb Apps、Functions、SQL Databaseを組み合わせ、簡単なWebアプリケーションやAPIのサンプルを作成・公開してみましょう。

早め早めの脆弱性対策! 開発チームでできるアプリとサーバのセキュリティ診断と要件定義の作り方

面倒なセキュリティ対策ですが、昨今はフレームワークが脆弱性に対応するなど、プログラミングは効率的になっています。その上でサービス全体の安全のため、開発チームがすぐ実施できるセキュリティ診断と要件定義について解説します。

ペアプログラミングで「強いエンジニアチーム」を作る! ヤフーが実践する全てペアプロ開発の手法

ペアプログラミング(ペアプロ)のメリットや導入方法について、ヤフー株式会社の山下真一郎さんが、フリマアプリ「ヤフオク!」や「PayPayフリマ」での実例をもとに紹介します。

SQLをはじめよう - 初心者でもわかる、構文とデータ取得の基本

リレーショナルデータベース管理システム(RDBMS)において、データの操作や定義を行うためのデータベース言語であるSQL。“データ”の重要性が謳われるようになった昨今において、この言語はより重要性を増しています。本稿では日本MySQLユーザ会の副代表であ…

Javaなら「この書き方がベスト」と信じて書ける - きしだなおきに聞く、Javaのこれまでとこれから

Javaは1995年に誕生し、数多くのコミュニティや企業の影響を色濃く受けてきました。では、黎明期から現代に至るまで、Javaはどのように進化し、生態系を変化させてきたのでしょうか。Javaのスペシャリストとして知られる、きしだなおきさんに聞きました。

PWAの作り方をサクッと学ぶ - 「ホーム画面に追加」「キャッシュ操作」「プッシュ通知」の実装

PWAをテーマにしたコミュニティ「PWA Night」を運営する菅家大地さんが、既存のWebアプリをPWA化する簡単な実装方法を解説します。