IT記事一覧

ガンジス川で瞑想し、サウナでひらめきVulsができた - 各OSに対応する脆弱性スキャンを実現した手法

サーバー運用者の抱える「脆弱性対応の負担が大きい」という課題を解決するべく、神戸康多さんが開発したOSS「Vuls」。同ソフトウェアはなぜ複数OSの脆弱性を検知できるのか、その基本構造を聞きました。そして、神戸さんが語るVulsの開発の根本にあった、貢献意識とは。

なぜ読みやすいコードが必要なのか - コードの可読性を高める手法をサンプルで学ぶ

システム開発会社「アクシア」の代表として、自社・他社含め、さまざまなエンジニアのコードを読んできた米村歩さん。そんな米村さんの持論は、「コードの可読性は生産性に多大な影響を与える」ということ。可読性の低いコードはどんな弊害をもたらし、どうすれば改善できるのか――。チーム開発を効率化するコードの「可読性」について綴っていただきました。

100万行オーバーのモノリシックRailsアプリをマイクロサービス化したクックパッドの手順

マイクロサービスの導入事例を、中の人が徹底的に語ります。クックパッドでは、100万行オーバーの超巨大なRuby on Railsアプリのマイクロサービス化に挑みました。アプリをいかに分離し、連携できるようにするか、など、同社が採ったマイクロサービス化の戦略を聞きました。

実践データサイエンス─サンプルコードと図表で学ぶ、前処理・モデル評価・パラメータチューニング

実践とともに、データサイエンスに入門しよう!敷居が高いと思われがちなデータサイエンスですが、データの前処理からの手順は意外とシンプルです。本記事では、データの前処理や特徴量の作成、モデルの評価・訓練、ハイパーパラメータの調整など、基本的な知識をサンプルコードと図表を見ながら学びます。

10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由

10年以上運用されているサービスには、さまざまな技術的な負債が発生しています。今後の継続的な改善のため、いったん新規開発を止めて4年かけて全面的なリニューアルを実施した「はてなブックマーク」の開発者に、プロジェクトの課題や解決する手法などを聞きました。

バグハンターmageに聞くバグハンティングの方法とセキュアなサービス作りに必要なこと

バグハンターとは、Webサービスやソフトウェアなどに含まれる脆弱性を、システム改善のために探し出す人々です。バグハントの方法は非常に多岐にわたりますが、具体的な手法、使用ツール、ハントのマナーを凄腕のバグハンターに聞きました。mageの名で知られる馬場将次さんが語り下ろす実践的なノウハウは、サービスをセキュアなものにしたいエンジニアのみなさんにとっても重要な知見になるでしょう。

マイクロサービスにおけるWeb APIスキーマの管理 ─ GraphQL、gRPC、OpenAPIの特徴と使いどころ

マイクロサービスにおける通信方式の選択について、おおた(ota42y)さんが、GraphQL・gRPC・OpenAPIといった主なWeb APIスキーマの管理の利点と使い分けを解説します。

Node.js徹底攻略 ─ ヤフーのノウハウに学ぶ、パフォーマンス劣化やコールバック地獄との戦い方

Node.jsをうまく活用できている企業は、どのような方法でベストプラクティスを習得してきたのでしょうか。ヤフー株式会社でNode.jsの社内普及に務めてきた言語サポートチームに、同社の実施を紹介してもらいました。

Flutter入門 - 簡単なアプリを作ってUI宣言やホットリロードなど便利機能の使い方を理解しよう

モバイル向けアプリケーションのフレームワーク・Flutterを使って簡単なアプリケーションを作成する基本的な開発について、FlutterのGoogle Developers Expertである上田哲広さんに解説していただきました。

大規模ゲーム開発で存在感を高めるErlang/Elixir ─ Nintendo Switch™とロマサガRSの事例から

大規模なゲーム開発で、プログラミング言語Erlang/Elixirの存在感が増しています。Nintendo SwitchのErlang活用事例と、ロマサガRSにおけるElixirの導入事例について、アカツキ島崎清山さんに解説してもらいました。

PostgreSQL 20年史|コミッター石井達夫が振り返る変遷と進化の歴史

世界中で使用されるRDBMSであるPostgreSQLの長い歴史には、どのような変遷があったのでしょうか。長く、PostgreSQLに関わり続ける石井達夫さんに、同ソフトウェアの進化歴史の中にあるキーワードをもとに振り返ってもらいました。

実践的インフラ監視&運用 - 4000万人以上のユーザーに快適なサービスを提供するピクシブの裏側

大規模サービスを安定運用するコツってなに?実運用に基づく知見をピクシブ株式会社のインフラエンジニア、末吉さんと小出さんに聞きました。

実録パフォーマンス改善 - 高速化のためアーキテクチャやアルゴリズム選択から見直すSansanの事例

インフラの特性をふまえ、ミドルウェアの挙動を理解し、プロファイリングによってボトルネックを把握し、要求に合ったアーキテクチャを選択する。そういった工夫を重ねることでアプリケーションのパフォーマンスを改善する事例を、Sansanの千田智己さんに聞きました。

低レイテンシと安定性を生むアーキテクチャ - SSPの現場に学ぶ、高可用性のつくり方

低レイテンシとは、広告配信の世界でユーザービリティ / 収益に直結する要素であることから、重要視されています。では、SSPの現場で実際に用いられるシステムはどのような構成になっているのでしょうか。fluct社の鈴木健太さんに、低レイテンシ、そして安定して稼働するシステムの基本を聞きました。

知ってるようで知らないTeXの世界 自分の人生より歴史あるソフトウェア開発をマネジメントする技術

アルゴリズムに関する大著『The Art of Computer Programming』のため、ドナルド・クヌース先生が組版システム「TeX」を発表して41年。その開発は世界中で活発に続いています。日本語TeX開発コミュニティやTeX Liveチームで活動する20代のエンジニア山下弘展(aminophen)さんに、自分より1.6倍も長生きなソフトウェアをメンテナンスする技術について聞きました。

AWSコスト最適化入門 ─ クラウドで「こんなにかかるはずじゃなかった!」を避けるツールと計測

「あれ? AWSのコスト、高すぎ…?」そう感じたときには、そもそもコストを正しく見積れているのか、適切に計測できているのかから見直しましょう。クラウドならではのメリットを享受しながら、コストを適正な範囲にしていく上で役立つ機能やサービスを紹介します。

「テストコードを書く?書かない?」ソフトウェアテストのいろんな疑問をテストのプロに聞いてみた

ソフトウェアテストはソフトの品質を高めるためには、欠かせない工程です。では、テスト・品質保証のプロたちは、どんなことに気をつけて、ソフトウェアテストを実践しているのでしょうか。仕様やスケジュール、テストの設計まで、テストにまつわる疑問を、ソフトウェアの品質保証・テストに特化した企業、SHIFT社のお二人にぶつけてみました。

Visual Studio Codeのうれしい機能を使いこなして、初心者を最速で脱出する!《VSCode実践入門》

VSCodeは初版が2015年リリースの新しいエディタですが、インテリセンス、ユーザースニペット、Emmet、マルチカーソル、拡張機能というコーディングにうれしい機能が充実しています。VSCodeを検討中あるいは使いはじめたばかりの若手エンジニアが、いち早く初心者を脱出するための使いこなし方を解説します。

実例に学ぶGoのアーキテクチャ - 「開発スピード優先」でGMOペパボが採用したのはMVC

Goを活用した開発の際、どのようなアーキテクチャを採用するか、議論は尽きません。GMOペパボではオーソドックスなMVCを選んだといいますが、その背景にあったものとは。開発現場のお二人に話を聞きました。

Firebase入門 フリマアプリを作りながら、認証・Firestore・Cloud Functionsの使い方を学ぼう!

Firebaseでは、バックエンドやインフラに精通したメンバーがいなくても、モバイルやWebフロントの開発に集中できます。Authentication、Firestore、Cloud Functions、さらにセキュリティルールまで、クックパッドの岸本卓(@_sgr_ksmt)さんが、実践的に解説します。

Rubyコミッター・笹田耕一に世代別インクリメンタルGCを発想したプロセスを聞いてみた

Rubyのフルタイムコミッターである笹田耕一さんに、Rubyの処理性能を向上させるいくつかのブレイクスルーをどのように解決し、どのような困難があったのかを聞きました。

SPAにおける状態管理:関数型のアプローチも取り入れるフロントエンド系アーキテクチャの変遷

関数型のアプローチも取り入れるフロントエンド系アーキテクチャの変遷について解説します。

Istio導入のメリットとハマりどころを、実例に学ぶ~マイクロサービス化の先にある課題を解決する

マイクロサービス化にともなサービス間の接続の複雑化、という課題への対処としてサービスメッシュとこれをもたらす「Istio」が注目されています。Istioをいち早く導入したユーザベースの阿南さんが、導入メリットと、使って分かった「ハマりどころ」を解説してくれました。

JavaからKotlinに変換する7つのテクニック Kotlinらしさを生かした簡潔なコードに置き換えよう

既存のJavaコードをKotlinに変換する場面を想定し、より簡潔でKotlinらしいコードに置き換えるテクニックを、ヤフー株式会社でYahoo!ニュースアプリを開発する池田惇さんが解説します。開発現場にまだ多く残るJavaコードを必要に応じてKotlinへ置き換えることで、開発の負担を減らすことができます。

grdの作者が考える、いまフロントエンドエンジニアに求められる「速度という機能」

Webパフォーマンスの改善に、並々ならぬ情熱を傾けるエンジニアの泉水翔吾(@1000ch)さん。氏の手がけるOSSはこの情熱を体現するかのように、パフォーマンス改善にフォーカスしたものが多数あります。なぜWebパフォーマンスにこだわるのか、そして現在のフロントエンドエンジニアに求められる技術を聞きました。

ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在

20年以上の歴史を持つJava言語ですが、近年は関数型を取り入れるなど大きく変化し、リリースサイクルも格段に短くなってますます進化しています。モダンなJavaプログラミングで必要となるラムダ式とStream APIについて、谷本心(cero_t)さんによる詳細な解説です。

Objective-CからSwiftへ、4つの移行ポイント~メルカリの実践例から最適な手法を学ぶ

多くの企業でObjective-CからSwiftへの移行が行われていますが、どのような戦略、手順が必要になるのでしょうか。実践に基づくノウハウを、メルカリの小林晋士さんが解説します。

TypeScript再入門 ― 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に

JavaScriptプロジェクトでTypeScriptを導入する際には、“柔らかい”静的型付き言語とするのがおすすめです。藤吾郎(gfx)さんがまとめた「がんばらないTypeScript」のガイドラインです。

Ansibleでできることを中の人が教えます - インストールと実行~EC2へのNginx投入までを学ぼう

高度化、複雑化しシステムの運用には、構成管理の自動化が欠かせません。管理用ソフトウェアとして広く使われるAnsibleを提供する、Red Hatの杉村さんが、IaSの概要から、Ansibleの活用手順までを解説します。

Kibela開発における技術選択の指針を全部教える。必要十分に新しい技術を維持するための考え方

サービスの立ち上げや機能追加時には、どのような技術をどの観点から選択すればよいのでしょうか? 自社サービス「Kibela」の実例を交えつつ、ビットジャーニーの井原正博さんがエンジニアと経営者の両視点から「技術選定」を考えます。

まつもとりーがmod_mrubyを開発した理由 - 解決すべき課題は研究ではなく、実運用の中にあり

多くのエンジニアから、そのアウトプットが注目される「まつもとりー」こと松本亮介さん。自身のOSS開発の裏側にある研究と開発の関係性を聞きました。

1,000台規模のインフラ刷新! Kubernetesを採用したサイボウズが語る「NoOps」な未来

Kubernetesの設計思想に共感して、1,000台規模のインフラ刷新プロジェクトに採用したサイボウズが、独自のインフラ、自社開発のOSSツールで挑戦するNoOpsな未来について聞きました。

ISUCONの第一人者・藤原俊一郎さんが語る攻略と学び ― 大切なのは「不満のしきい値」を下げること

Webサービスの高速化を競うISUCONで何度も優勝し問題作成も手がける藤原俊一郎さんに、その攻略方法と魅力、エンジニアが持ち帰れるものを聞きました。

Spring BootとPlay Framework、どっちがどう良いの? 専門家が5つの視点で徹底解説

Spring BootとPlay Framework、どちらを使うべきか……?開発者を悩ませる疑問に答えるべく、専門家2人がさまざまな視点で両フレームワークの特徴を解説します。

Swiftに足りなかったものを作る - スター数13,000超の「Kingfisher」を生み出したonevcatの着想術

画像を取り扱う軽量なSwiftライブラリ「Kingfisher」が獲得したスター数はなんと13,000以上。圧倒的な支持を集めるOSSを作り続けるonevcatさんに、発想の源を聞きました。

「AWSとGCPを“選択可能”にしておく」LIFULLに学ぶ長生きするインフラ構築術

多くの開発に導入されるクラウドサービスですが、LIFULL社では、AWSとGCP、両サービスを同時に使用しているそう。同社のインフラの変遷と、併用の背景を聞きました。

「あけおめLINE」の負荷に耐えるインフラを作った話。LINEのインフラ設計を中の人に聞いた

国内外で展開する膨大なメッセージを処理する、LINEアプリのインフラってどうなっているの? こんな素朴な質問をサーバー、ネットワークなど、中の人に聞いてみました。

Macでターミナルとシェルを使うための基礎知識 - 環境の構築と基本的なファイル操作を知る

Macでターミナルとシェルを活用し、サクサクと作業をするには?シェルに関する多数の執筆を持つ、「シェル芸人」こと上田隆一さんが基本のテクニックを解説します。

WebAuthnでパスワードレスなサイトを作る。安全なオンライン認証を導入するFIDOの基本

FIDO(Fast IDentity Online)とは、公開鍵認証方式を応用し、オンライン経由で認証を行う仕組みです。パスワード認証の安全性は限界が指摘されるなか、Webサイトにおいても生体認証などパスワードレスな仕組みを導入する企業が増えており、このFIDOやWebAuthnに注目が集まっています。Capy株式会社で情報セキュリティに関する研究開発や分析などに携わる、松本悦宜さんの解説です。

コンテナ技術入門 - 仮想化との違いを知り、要素技術を触って学ぼう

コンテナ技術を適切に活用するには、コンテナが「どうやって」動いているかを学びたいところ。はてなのエンジニアhayajo_77さんがコンテナの要素技術の勘所を解説します。

「ライブラリの守備範囲は狭い方がいい」こにふぁーが大切にする、ソフトウェア設計の流儀

ソフトウェアが果たすべき、機能、役割をどのように定めるか。多くのエンジニアを悩ませるこの問いに、Android開発者、こにふぁーさんは「守備範囲を狭く設定する」と答えます。こにふぁーさんがこの答えにたどり着いた道筋とは。

上達したいVim初心者のための設定・プラグインの見つけ方、学び方〈エディタ実践入門〉

Vimの深淵はとても深く、学ぶことは簡単ではありません。本記事では、初心者がVimをどのように学べばよいか? を解説しています。Shougoさんの寄稿です。

Python“らしさ”を支える技術。pandasコアコミッターが大事にするマージの方針

数多いPythonライブラリの中でも、データ解析の用途で大きな存在感を示すのが「pandas」です。そしてこのpandasのコミッターを務めるのが、sinhrksこと堀越真映さん。コミッターが感じるOSSのありよう、そしてPythonらしさを教えてもらいました。

自然言語処理をサービスで活用しよう! Sansanに学ぶ「多種多様なテキスト」からのデータ分析

自然言語処理をサービスに投入し、“できること”とは?名刺管理サービス「Sansan」を提供するSansan社では、名刺に記載された情報のデータ化において、自然言語処理を徹底的に活用しています。同社のデータ統括部門DSOCで日夜研究を続ける奥田裕樹さんと高橋寛治さんの2人に、サービスの裏で動く、自然言語処理のユースケースを語っていただきました。

【46選】あのサービス・アプリのアーキテクチャ・プログラミング言語・フレームワークを大調査!〔2019年始版〕

今やWebやアプリを構築する技術選択は、フロントエンドからインフラまで各領域で多岐に及びます。気になるあのサービスが利用している技術は何か? アンケート調査によるまとめの2019年新春バージョンです。

「GraphQL」徹底入門 ─ RESTとの比較、API・フロント双方の実装から学ぶ

Web APIの新しい規格「GraphQL」の設計と実装について、藤吾郎(gfx)さんによる寄稿です。

設計サンプルで学ぶ、AWS構築の原則 - Webアプリ アーキテクチャのベストプラクティスを理解する

AWS入門者に向け、同サービスのエキスパートである、クラスメソッドの八幡豊さんが、Webアプリケーション開発のためのAWS構築の基本を解説します。広範な領域をフォローするAWSですが、広範ゆえに、なにをどのように選ぶべきか……。こんなお悩みを持つ方はぜひご一読を。

Vue.jsコミッターkazuponに聞く、良質なDX(開発体験)がもたらす良質な開発サイクル

近年大きな注目を集めるフレームワークとなったVue.js。その発展の裏には、開発コミュニティをストレスなく駆動させる、コミッターたちのさまざまな工夫がありました。黎明期からVue.jsを支える、コミッターの川口和也(kazupon)さんに、フレームワークを躍進させるために必要なことを聞きました。

DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ

アプリケーションの寿命よりも長く、データの追加やテーブルの変更で成長し続ける「データベース」と、どのように付き合っていけばよいのでしょうか? 曽根壮大(soudai)さんによる寄稿です。

「Kotlinで書くとJavaには戻れない」Androidアプリ開発にKotlinを導入したヤフーが感じたメリット

GoogleがAndroidアプリの開発言語に選定したことで「Kotlin」の注目度が高まっています。展開しているAndroidアプリの半数以上でKotlinを導入しているというヤフー株式会社に、Kotlinの魅力を伺いました。

若手ハイキャリアのスカウト転職