テクノロジースタックとは?そして構築方法は?(What is a technology stack) - Mixpanel
what-is-a-technology-stack

テクノロジースタックとは?そして構築方法は?

テクノロジースタックとは何ですか?

開発者は、状況を把握していない限り、テクノロジースタック(テックスタック)を管理することはできません。だからこそ、Mixpanelのようなプラットフォームは、テックスタックの重要な部分なのです。スタック内の各ツールは、データを作成、分析、または収集します。最も効率的に実行するために、そうしたデータソースを互いにリンクさせる必要があります。

定義

テクノロジースタック(ソリューションスタック、テクノロジーインフラストラクチャ、データ エコシステムともいう)とは、一つのアプリケーションを構築および実行するのに使用される一連のテクノロジーサービスのことです。たとえば、ソーシャルサイトのFacebookは、JavaScript、HTML、CSS、PHP、ReactJSなどのコーディングフレームワークと言語の組み合わせで構成されています。それがFacebookの「テックスタック」です。

開発者がテックスタックを引き合いに出すのは、テックスタックがアプリケーションの構築方法に関する多くの情報を伝えやすくするからです。この用語は、マーケティングサービス(マーテックスタック)やセールスサービス(セールススタック)に適用されることもありますが、最初に使用されたのはソフトウェア開発コミュニティです。 テックスタックは、開発者がアプリケーションとインターフェイスをとる必要があるプログラミング言語、フレームワーク、およびツールを手早く要約してくれます。ほとんどのコーディング言語には、既知のパフォーマンス属性と制限があるため、テックスタックはアプリケーション全体の長所と短所を示します。 たとえば、あるソフトウェアサービスがPHP上で構築されていることをプログラマーが知っている場合、そのコードベースは恐らく大きくてデバッグが困難であることがわかります。PHPは、非効率的なコーディング言語として有名ですが、最も一般的なウェブアプリケーションで使用されています。Ruby on Railsを使用してアプリケーションが構築されていることをプログラマーが知ったとしたら、変更を加えるためにはプログラミング言語「Ruby」を習得する必要があることがわかります。 テックスタックは、開発者を採用する場合に特に便利です。メッセージングプラットフォームLuaのフルスタックソフトウェアエンジニアであるJohn Debs氏は次のように述べています。「求人応募者がテックスタックのフレームワークや言語に精通していない場合、あるいは精通していこうという意思がない場合、適格ではない可能性が高いです」。開発者を採用しようとする企業は、多くの場合、職務記述書にテックスタックを含めます。

テックスタックの構築方法

企業ごとに必要となるテックスタックは異なります。全く同じものは二つとありません。チームは、使用するテクノロジーを決定し、それに基づいてコアコーディング言語を構築して、ツールやサービスを追加していきます。ホスティングプロバイダーのDigital Oceanのデータアナリスト兼エンジニアであるLira Skenderi氏は次のように述べています。「プロダクトの開発を計画している場合、通常は顧客と接するフロントエンドから始めて、それをサポートするのに必要なバックエンドツールを決定します」。 その結果として得られる一連のサービスを「スタック(積み重ね)」と呼ぶのは、その下にあるものを土台にしてそれぞれの追加サービスを構築していくからです。それにより、開発者はアプリケーションをカスタマイズすることができます。 毎日何百万人もの人々がアクセスするアプリケーションを設計する開発者は、優れた高速読み取り操作を実現するプログラミング言語を選択するでしょう。ウェブサイト上をクロールして情報を収集することを意図するアプリケーションの場合、開発者は高速書き込みを行う言語を選択するでしょう。 すべてのテックスタックは、バックエンド(サーバー側)とフロントエンド(クライアント側)の間で分けられます。テックスタックがノートパソコンだとしたら、バックエンドはノートパソコンの動作に必要となる内部ハードウェアになります。フロントエンドインターフェイスは、ユーザーによるノートパソコンとのインタラクションを可能にする、画面、ケーシング、キーボードになります。 求人情報に記載されている必須要件として「バックエンドとフロントエンドの両方を扱えるフルスタックエンジニア」とある場合、それは応募者が精通している必要があるテックスタックの部分を指しています。

overview of a simple tech stack

バックエンドテクノロジーには、ウェブフレームワーク、プログラミング言語、サーバー、オペレーティングシステムなどが含まれます。ウェブ開発テックスタックで一般的に使用されるLAMPは、Linuxオペレーティングシステム、Apache HTTPサーバー、MySQLリレーショナルデータベース管理システム、プログラミング言語PHPの単語の頭文字を4つ並べたものです。 フロントエンドテクノロジーは、ウェブサイトやアプリなどのビジュアルインターフェイスです。これらは、ほとんどのアプリケーションの視覚的要素として知られているものであり、ユーザーがタスクを実行するのに必要なツールを提供します。 通常、フロントエンド言語は、バックエンド言語よりもはるかに単純です。ほとんどのウェブアプリケーションインターフェイスは、プログラミング言語JavascriptとフレームワークAngular JS、Backbone.js、およびReactJSを使用して構築されます。スマートフォンアプリのフロントエンドテクノロジーには、iOSアプリ用のObjective-C/SWIFTとAndroidアプリ用のJavaなどがあります。

家の土台と同じように、スタックを構築する順序は重要です。それぞれの新しいレイヤーは、その下のレイヤーの上に構築され、埋められたレイヤーは簡単に取り除くことができません。ここで、テクノロジースタックの構築に関する基本的なアドバイスを紹介します。

将来に目を向けて計画を立てる

将来に向けてテックスタックを準備することは、両刃の剣になることがあります。開発者がアプリケーションの拡張性を考慮しないと、管理が面倒で難しい他のサービスを追加しなければならない場合があります。一方、急激な成長を予測し、高価なツールやサービスに過剰に投資すると、アプリケーションが市場で成功を収める前に、資金が底をつく可能性があります。 最良の戦略は、オープンソースツールを使用してウェブアプリのような実用最小限の製品を作成して、投資する前にコンセプトに投資をする価値があるかどうかの検証を行い、最初は要件ではない場合でも、スタック内の他のツールにデータを送信する柔軟性を備えたツールを探すことになります。判断に迷う場合、開発者は、信頼性がより高い場合が多い、より成熟したテクノロジーや言語を常に選ぶようにするべきです。

オープンソースコミュニティに頼る

全世界の開発者は、インターネットに接続している誰もが自由に使用できるオープンソースツールの構築に貢献しています。オープンソースコミュニティの対象範囲とそれが提供する有用性は驚異的なものです。 「オープンソースソフトウェアは、過去10~20年間の技術のルネッサンスの背後にあるものです」とDebs氏は述べています。「誰でも巨人の肩に立ち(先人の成果に積み重ねて)、自分たちで作ることができなかった、非常に複雑な基盤技術を持つ製品を構築することができます。それが可能なのは、何十億時間もの人々の時間と、あらゆる領域の専門家による貢献のおかげです」。 Debs氏は、彼自身が日々使用するソフトウェアは、他者が何百万時間もかけて作成したものだと推測します。テックスタックの構築を検討しているエンジニアリングチームは、少なくとも部分的にはオープンソースソフトウェアに頼ることで、余裕をもって構築することができます。

アプリケーションの目的を考慮する

開発者はすでに知っている言語を好む傾向がありますが、最高のテックスタックを構築するには、一歩下がって、アプリケーションの目的に基づいてテクノロジーを決定するようにします。たとえば、アプリケーションはモバイル上にあるのか、デスクトップ上にあるのか?モバイル上の場合は、どのアプリなのか?デスクトップ上の場合は、どのブラウザなのか?毎日何百万人もの訪問者がアクセスするメディアサイトなのか、安全性を確保する必要があるモバイルバンキングアプリなのか? さまざまなプログラミング言語、ツール、およびテックスタックは、こうした各目的に適しているものであるべきです。そこで、開発者も関連するスキルを持つ必要があります。

アナリティクスを使用する

開発者は、状況を把握していない限り、テクノロジースタックを管理できません。だからこそ、多くの開発者はプロダクトアナリティクスを使用するのです。アナリティクスプラットフォームは、スタック全体にわたってデータソースを結び付けてきめ細かなユーザー追跡を提供するように設計されています。これにより、開発者は、ユーザーがアプリケーション内で経験する問題を特定し、デバッグし、エラーを修正できます。

維持管理を考慮する

チームは、テックスタックを構築する前に、テックスタックをサポートするのに必要なテクノロジーにかかる費用を見積る必要があります。判断に迷う場合、チームは総費用を多めに見積り、エンジニアの人材費といった変動費を含めるようにします。開発者は、スキルや経歴・実績を強化する革新的な言語に惹かれることが多いです。成熟したプログラミング言語は信頼性を提供するかもしれませんが、優秀な人材を採用するのを難しくする可能性があります。時には、安価なテクノロジーの方が、優秀な才能を惹きつけるという点でより多くの費用がかかることがあります。

今すぐMixpanelの無料プランを使ってみる

Mixpanelを使用する優秀なプロダクトチームの仲間入りをして、より良いプロダクトを生み出しましょう。

サインアップ