『Vue.js入門』の執筆者が語る、はじめてのVue.js。本腰入れる前に知りたい5つのポイント〜私のVue.jsへの想いをのせて〜

GAOGAO Ptd.Ltd.でCo-Founder CEO&ソフトウェアエンジニアを務める手島拓也(@tejitak)と申します。Vue.jsをメジャーバージョンになる前から利用しており、「Vue.js入門 基礎から実践アプリケーション開発まで」の執筆も行いました。今回はflexy読者の皆様に本腰入れてVue.jsを学ぶ前に知っておいていただきたいポイントについて解説します。

私のエンジニア史とVue.jsに出会うまで

先日、慶應義塾大学矢上賞(起業支援)授与式で招待講演をする機会がありました。その際にも強烈に感じたのですが、Vue.jsと私のエンジニア史を切り離して語ることはできません。 そこでまず私のエモいエンジニア史から話を始めてみました。是非こちらからご覧ください(笑)

Vue.jsはバージョン0.8から愛用

もともと新卒でIBMの研究所に入り、サーバサイドとフロントを両方対応していました。その時はJavaとJavaScriptを主に書くエンジニアでした。その後フロントエンドに興味を持って、フロントエンドエンジニアとして転職をしたのがその次の会社、LINEです。そこでフロントエンジニアとしてJavaScriptをメインで書くようになりました。jQueryが流行っていた時期から、ちょうどBackbone.jsやAngular.jsなどが出てきた頃までの期間、LINEでフロントエンジニアとして働いていていました。そして、Vue.jsで言うとバージョンが0.8くらいの時期。今はもうすぐバージョンが3にあがるくらいなのですが、0.8というメジャーリリースする前の段階のVue.jsを使ってプロダクトの開発も行っていました。

Vue.jsが0.8の当時、新しいアプリケーションの機能を新規で担当する機会があり、そこで導入することができました。当時はAngular.jsが主流、Backbone.jsが普及してきていて、jQueryももちろん健在の時期でした。いろいろと検討した結果、その時のサービスがシンプルな仕様だったので、試しに使ってみようと、提案して実装してみたという背景があります。

起業、そして海外へ。そこでもVue.js

その後いろいろあって起業することになりました。 ちょうどAirbnbなどが伸びてきた時期で、民泊のホスト向けのツールや、東南アジアの高級ヴィラに特化したブッキングサービスを展開する会社をCTOとして起業しました。 それから2年くらいして、その事業もあるので東南アジアに移住しました。4年くらい前のことです。

しばらくその事業を続けていたのですが、事業譲渡の後、会社を畳むことになりました。そのタイミングで新しく自分がCEOとして会社を立ち上げました。スタートアップの0→1フェーズの開発に特化した、スタートアップスタジオと呼ばれるもの。近年、経営者・非エンジニアの方が起業するケースが増えていますが、経営目線で一緒に開発を進められるエンジニアを見つけるのは非常に困難。確率的にもほとんど見つからないのが実状です。この課題を解決するために我々の開発チームがお手伝いするという会社です。弊社には経営経験があるエンジニアも多くいます。GAOGAOは経営目線でスタートアップの初期フェーズ、シードで資金調達する以前から、シード後からシリーズAのフェーズに特化して、プロダクトマーケットフィット(PMF)の支援をメインの事業として行っています。1年半ほど前に立ち上げました。

今は東京だけではなくバンコク、ホーチミン、セブ、シンガポールの5拠点でエンジニアのシェアハウスを持ちながらスタートアップ開発を行っています。今だと少しスタートアップではない大きめの会社も含め、合計10社くらいのお客さまがいらっしゃいます。そのため、私はバンコクと東京、ホーチミンにそれぞれ月に1週間から2ヶ月に1週間くらい滞在する形で飛び回っています。

メンバーは副業も合わせると20名程度在籍。東京にも5名程います。コンセプトは海外を目指したい日本人エンジニアをもっとグローバルな世界に引き上げること。そのため、日本人として海外の案件をどんどんとっていき、海外志向の若者たちにアサインしています。お客さまは今は半分以上日本、半分弱が海外という状況。バンコクやアメリカなどのお客さまも何社かありますね。

具体的な仕事として、まずお客さまの事業担当者から技術選定のヒアリングから始めます。エンジニアリング知識がない方が作ろうとするサービスは壮大な規模になるケースが多い。そこをエンジニアの目線で見て大きく削ぎ落としていく。ここに価値があると思っていると考えています。コアとなる評価したいコンセプトを伺うコンサルタントから入り、いったん「とりあえずつけたい機能」を全部落とし、ミニマムなプロダクトを3ヶ月以内にリリースするように心がけています。

そのため、技術選定の部分で弊社に裁量があることが多いのですが、ミニマムなプロダクトをスピーディに作るという場合にはVue.jsが活躍します。弊社では、特に制約がなければまずVue.jsを使うという選択をしていますね。もちろん、案件によっては別の選択をすることもあります。例えば、非常にシンプルな、まさに副業のためのマッチングサイトのようなもの。トップページ、一覧ページ、詳細ページがあり、機能としては申し込み機能のみで、あとは管理画面があるようなもの。このような場合には動的なUIをまずは必要としないため、Vue.jsを使わないケースになります。

会社の成長に伴って私自身の役割も変わってきました。1年前までは自ら手を動かして開発をしていたのですが、この1年で徐々にその割合が減り週1〜2日くらいの開発時間になっています。心強いメンバーも増え、コーディングの役割を任せられるようになってきました。ディレクション、コードレビューの中でソースコードやシステムのチェックをするような役割になってきていますね。

業務以外でも個人で作っているプロダクトでVue.jsを利用しています。最近では、8月くらいにこもって作ったSphere(スフィア)というサービスがあります。オフィスの写真をチェックインして投稿できるもの、オフィス特化型Instagramのようなサービスです。「こういう企業に訪問した」というのを投稿するためのサービス。このようなものを個人で作るときもVue.jsを使っています。

Vue.js 日本ユーザグループ 誕生の瞬間

LINEにいたころから、Dev Morningという渋谷で開催している朝活の幹事をしていました。260回を超えるほどまで開催され続けていますが、1回目から100回目くらいまではずっと幹事をしていました。今は海外にいる関係で、そこで出会った人たちに幹事を任せています。ピースオブケイクの外苑前のオフィスで開催していて、今でも帰国時にタイミングが合えば参加しています。このようなコミュニティーを作ることがもともと好きで、バンコクにいる日本人エンジニアを集めたシェアハウスのGAOGAOハウスも運営しています。

Vue.jsに関しては、コミュニティーの誕生前から携わっていました。そもそも、Vue.jsの公式ドキュメントの初めての日本語訳を担当した一人が私でして。今もコントリビューターとして活躍され、Vue.js 日本ユーザグループを取りまとめた代表者のkazuponさんと一緒に翻訳を始めました。その集まりがVue.js日本ユーザグループになっていきます。

現在は海外にいる時間も長くなり、運営に携わることはなくなりましたが、登壇側として関わっていますよ。

Vue.jsを始める前に押さえておきたい5つのポイント

その1ーVue.jsはシンプルで学習コストが低い

さて、ここからが本格的にVue.jsのお話です。

Vue.jsのメリットは学習コストが低いことです。非常にシンプルな設計で、妙なメソッドもない。ReactとVue.jsが対比されることがよくありますが、その際に指摘される特徴にもシンプルさが出てきますね。

「シンプルなアプリケーションを作りたいならVue.jsだけど、大規模で複雑なアプリケーションを作るならVue.jsは使えない」と言われることがありますが、私はそう思いません。経験上、設計さえうまくできればVue.jsを多機能な大規模アプリケーションで利用しても問題を感じることはありませんね。

Vue.jsは基本的にはMVVMパターンです。Model、View、ViewModelがあり、ViewにModelを渡して双方向バインディングしている作りです。データを書き換えるとUIが変わり、UIを書き換えるとデータが変わる。そこをバインディングさせることが効率的で画期的だったという経緯があります。ただ、それをやりすぎてしまった場合、例えばシングルページアプリケーションなどで1枚のページ内でいろいろなコンポーネントが複雑に動くようなUIを作った場合、モデルを引き渡してバインディング、バインディング、バインディング・・・とやっていくと、思わぬところで副作用が起きてしまうことがあります。これは、Vue.jsというよりはMVVMのつらいところではありますね。

この課題を解決しようとしたのが、ReactのReduxやFluxです。歴史を振り返ると、jQueryの時代が終わり、その後MVVMの時代が到来しました。その後、FacebookがReactを発表しましたが、それと同時にFluxアーキテクチャという考えが登場しました。これはMVVMのアーキテクチャを否定するもので、双方向バインディングにおいては、コンポーネントとデータを分離させてしまい、データをいじるなら必ずActionを通る設計がいいと提唱したんです。これによりソースコードの記述量は増えますが、データの流れは一方向になる。複雑性が生まれにくいというメリットがありますね。このような考え方は今でも主流になっています。Vue.jsにおいてはVuexが取り入れています。

VuexはまさにFlux、Reduxに影響されて設計されたもので、Vue.jsで前述の問題を解決するものです。ポイントとなるのは、Vuexをどのような基準で採用すべきなのかの判断基準を身につけること。「1つの画面上に親子関係以外のコンポーネント間のやり取りがすごく多くなりそうであったらVuexを使う」というのが基準になるかと思います。なかなか、この「すごく」を定義することはできないのですが、1ヶ所や2ヶ所ではなく、もっと多いレベルのイメージ。

最初の設計段階で、コンポーネント間のやり取りがどれくらい発生しそうなのか、シングルページアプリケーションでルーティングなどをする際、ページをまたいでどれだけページ間で共有するストアがあるか、そういうものを事前にイメージをした上で、どちらを採用するかを検討することがポイントになります。

「最初からとりあえずVuexを使ってしまえばよいのでは?」という意見もあると思いますが、これに関しては賛否両論です。私は「とりあえずVuexを入れる」というのはあまりお勧めしません。

特にフォームなどを多用した機能を作る際には、書かなければいけない内容が増えることが問題になってきます。開発者が全員Vuexの使い方を理解していればいいのですが、そうでなければVue.jsだけの場合に比べて事前知識のレベルが上がってしまうからです。

その2ーVue.jsは元々は個人開発

Vue.jsがReactやAngular.jsと違う大きな特徴に、企業が作っていないという点があげられます。React.jsはFacebookが全面的に押し出し、社内で開発して提供しています。これに対して、Vue.jsは実は元々個人開発。今もメインはVue.jsのクリエイターと言われているEvan Youという方が開発しています。彼が基本的にコアなソースコードを見ており、公式プラグイン周りも見ています。そのため、Reactだとコアな部分はFacebookがメインで見ていますが、Reduxなど周辺のライブラリは乱立しがちです。Vue.jsではEvan Youが公式ライブラリまで全部見ているので統一感があります。個人がメインの開発ではありますが、Reactを参考にしてドラフトがGitHubにどんどん上がっていきます。最終的な決済はEvan Youにありますが、コントリビューターもいるため、個人依存で変な独自進化をしていくということはありません。

Vue.jsはバージョンが2.0になる際に、DOMへの依存をなくす点で大きな変化でした。ちょうどReact.jsがサーバサイドレンダリングを発表しました。それは、仮想DOMでReact.jsを作り、サーバサイドレンダリングでもできるというもの。Evan YouはそれをVue.jsに取り入れるために、1.0でブラウザ依存だったものを全部消すということをやりました。それが2.0での大きな変化でしたね。

その3ーコンポーネント設計の考え方を理解できるかが勝負

初めてVue.jsを学ぶ際にはコンポーネント設計という考え方を理解できるかがポイントになります。

これまでのjQueryの場合、基本的にはプラグインで追加してグローバルにクエリを引っ掛けてファンクション追加して・・・というような使い方でした。そこにはコンポーネントという発想はありませんでした。

ところが、Vue.jsやReactはグローバルで触りにいくという行為は基本的にNGの世界。コンポーネントごとに実装が全部閉じる。これをコンポーネント化することで再利用性も高まり、ソースコードのメンテナンスもコンポーネント内で完結します。そのため、jQueryに比べVue.jsでは保守と再利用の容易さは高くなります。

また、jQueryだとidで要素を引っ掛けたりしますが、基本的にコンポーネントの世界はidを使うのはNG。DOM上に1個しかなかったとしても、コンポーネントというのは複製されて再利用されるものという思想のため、idを利用することは適しません。

Vue.jsのJavaScriptの書き方を覚えるよりも、再利用可能なコンポーネントという概念を理解してWebアプリケーションを設計・構築できるという能力が重要になってきます。

その4ーVue.jsとjQueryの使い分け

もちろん、Vue.jsが万能でjQueryは使い所がないということはありません。

極端な例を言うと、Vue.jsでコンポーネントを作ったのにグローバルにDOMをいじってしまったら意味がなくなってしまいます。いわゆるウェブサイト制作という領域では、WebサイトランディングページをWordPressで作ることになり、jQueryは現役で活躍しています。むしろ、この領域ではVue.jsに乗り換える必要がない世界かもしれません。

しかし、少しインタラクティブなアプリケーションとなると、jQueryは破綻してきます。jQueryはグローバルに関してセンシティブな書き方なので、コードの行数が増えていくとどうしようもなくなってくる。ここを解消するのがコンポーネントの考え方です。逆を言えば、WebサイトをJavaScriptで少し飾りたい程度であればjQueryで構わないのです。本格的な動きをするWebアプリケーションを作るためにVue.jsに乗り換える場合、そこにはやはり一つ敷居をまたぐ必要が出てきます。

その5ー初学者向け勉強法

初心者の方であれば、私が共著した「Vue.js入門 基礎から実践アプリケーション開発まで」という書籍をまずは読んでいただきたい。1万部を超えていますし、評判もいいので、是非ともお薦めしたいです。Vue.js 日本ユーザグループの代表をされているkazuponさん、Vuexの開発にコアメンバーとして参加している片山真也さんなども共著で執筆されています。初心者も読んで分かるように書かれています。

その次の段階のものとしては、公式ドキュメントを読むことをお薦めします。入門者の方にとってライブラリの公式ドキュメントを読むのは敷居が高そうなイメージがあるかもしれません。でも、読んでみると意外に結構理解できてしまうはずです。特に最初の方は易しく書かれています。それらを読んでもらと勉強になるはずです。

Vue.jsがReactと違って特徴的なのは、Reactは基本的にコンパイルをしないと動かないという点。Reactの場合、JSXと呼ばれるJavaScript構文の拡張もので書き、ReactのJSXを解析してJavaScriptに変換するという処理を、webpackを使って行うのが一般的です。これに対して、Vue.jsはそこの処理を単にVue.jsのファイルをスクリプトの中に読み込んで、スクリプトの中で少し書くだけでコンポーネントが動くようにできます。 そのため、JSFiddleのようなもので簡単なものは動かせます。まずは試してみながら、お手軽に始められるという点でReactよりも最初のハードルは低いかもしれません。

ローカル環境で開発を始める際のお薦めIDEはやはりVSCodeです。プラグインとしては、VeturESLintPrettierなどを入れておくと自動的に整形してくれます。開発メンバー全員で同じ設定にしておけばソースコードがきれいな状況で共同作業ができますよ。もしくは、Sublime Textを利用してもVue.jsのプラグインがあるので問題なく使えますね。

Vue.jsを触ってみる

ハンズオン:動かしてみよう

それでは早速、Vue.jsを使ったプログラミングを体験してみましょう。

今回はシングルページアプリケーションを実現するため、Vue Routerを使ってみます。メニューを切り替えて内容を表示するのはビギナー向けの内容ですが、Vue RouterというVue.jsの公式プラグインを利用すると、ページの切り替えが簡単に実現できます。

シングルページアプリケーションとは、Ajaxを使用して必要な時に必要なデータを取得してページ遷移をクライアントサイドで行います。通常のWebアプリケーションにおける、ページ遷移時にブラウザがサーバへアクセスしコンテンツをロードする形式よりも滑らかなユーザ体験を提供できるようになります。Vue Routerを使うとクライアントサイドでのページ遷移、データ取得、Viewのレンダリング、モジュール化されたコードの管理などの実装を簡単に行うことができます。

index.htmlファイルを1つ用意すればVue.jsを試すことができます。 まずは以下のようにscriptタグでVue.jsとVue Routerの読み込みを行うHTMLを用意します。(Vue.jsのバージョンは執筆時点最新のv2.6.10を使用しています)

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Vue Routerサンプル</title>
</head>
<body>
  <div id="app">
    <!-- この部分に必要なHTML要素を記述していく -->
  </div>

  <!-- Vue.jsとVue Routerを読み込む -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/2.8.1/vue-router.js"></script>

  <script>
    // この部分に必要なJavaScript実装を記述していく
  </script>
</body>
</html>

次に、特定のURLパスに対して、どのコンポーネントを呼び出すか、ページ遷移のマッピングをJavaScriptで以下のように定義します。

今回のサンプルの構成は、トップページとフルーツ一覧ページを切り替えられるシンプルなものです。

/fruitsにアクセスした際にcomponentで指定しているフルーツ一覧のコンポーネントが初期化されます。templateにて、そのコンポーネント自身のdataであるフルーツの情報をv-forを用いて配列をマッピングしているのでフルーツの一覧が表示されます。

コンポーネント

// ルートオプションを渡してVue Routerを初期化します
var router = new VueRouter({
  // 各ルートにコンポーネントをマッピングします
  routes: [
    {
      path: '/',
      component: {
        template: `
          <div>
            <h1>トップページです。</h1>
          </div>
        `
      }
    },
    {
      path: '/fruits',
      component: {
        template: `
          <div>
            <h1>フルーツ一覧ページです。</h1>
            <div v-for="fruit in fruits" :key="fruit.id">
              <h2>{{ fruit.name }}</h2>
            </div>
          </div>
        `,
        data () {
          return {
            fruits: [
              {
                id: 1,
                name: 'りんご'
              },
              {
                id: 2,
                name: 'みかん'
              },
              {
                id: 3,
                name: 'バナナ'
              }
            ]
          }
        }
      }
    }
  ]
})

// Vueの初期化を行います
var app = new Vue({
  router: router
}).$mount('#app')

最後に、HTMLとして上記で定義したパスに対してコンポーネントを描画するためのの記述と、ページ遷移を行うためのリンクを記述します。

<div id="app">
  <!-- リンク先を `to` プロパティに指定します -->
  <!-- デフォルトで <router-link> は `<a>` タグとしてレンダリングされます -->
  <router-link to="/">トップページ</router-link>
  <router-link to="/fruits">フルーツ一覧ページ</router-link>
  <!-- 現在のURLとマッチしたルートに定義されたコンポーネントがここにレンダリングされます -->
  <router-view></router-view>
</div>

上記をHTMLファイルとして保存して、ブラウザで開いてみてください。動的に動くサンプルアプリが、わずかなコード量で動くのが確認できます。 サンプルコードはhttps://jsfiddle.net/tejitak/nzbpu0k7/で動作確認できます。

コンポーネント設計のポイント

コンポーネント設計をするときには、まず画面のイメージを作ってその要素が単体で再利用性があるかどうかという観点で考えてみることがポイントになります。

あるフォームを、3セクションあり、サブミットするようなページのコンポーネントを作るときに、どこまでコンポーネント化すべきかを考えます。例えば、ユーザの基本情報を取得し、住所情報を取得するというときに、それぞれコンポーネント化する必要があるのかどうかを考えてみましょう。コンポーネント化した際、それが再利用される可能性があるのかという観点で見る。住所の入力はコンポーネント化できるかもしれません。確かに使い方次第ではそれぞれコンポーネント化したほうがいいケースかもしれませんが、すぐにそれを3セクションだから3個のコンポーネントを作ればいいんだ、ということにはなりません。というのもコンポーネント化し過ぎた場合、その分ソースコードでもコンポーネントが増えてしまうからです。基本的に再利用される期待があるものだけをコンポーネント化するという考え方がよいでしょう。

また、コンポーネントを突き詰めていくと、デザイナー領域に関わってきます。例えば、ラベルとコンポーネントをセットで1つのコンポーネントにするかどうかという議論。このような場合、サービス・プロダクトのUI/UXにおいてそのようなラベルとコンポーネントのセットをブランディングとして作っていくべきだという判断があれば、コンポーネント化して再利要素を高めたほうがよいかと思います。

そのため、Atomic Designを使っているサービスと相性がいいでしょうね。Storybookなどサポートになるツールも存在します。これを使えば、エンジニアとデザイナーがコンポーネントの一覧を共有することができます。

つまずきやすいポイント:コンポーネント間のやりとり

Vue.jsを始める際にコンポーネント間のやり取りでつまずく人が多い気がします。そこが最初のハードルとなるでしょう。

だいたいの内容は初心者向けの解説を読めば素直に理解できると思います。ところが、コンポーネントというものを理解して作ることができても、コンポーネント間でどのようにデータのやり取りするをするのかという部分でつまずくケースが多いように思います。

データのやり取りの仕方には、大きく分けて3種類(親コンポーネントが子コンポーネントに渡す、子コンポーネントのデータを親コンポーネントに渡す、並列の横のコンポーネントの兄弟関係のコンポーネントがデータを渡す)のやり方があります。それぞれの知識をつけておき、必要なときはどれを選択するのがベストなのか判断できるようになりましょう。

props:親コンポーネントが子コンポーネントに渡す

親から子にデータを渡す場合はpropsというものを使います。

Vue1

例えば、単純に信号機のコンポーネントを作ったとします。緑、黄、赤色とあったときに親が点灯させる色の情報をサーバから受け取り、それをpropsで渡します。子コンポーネントは親から渡されたデータに応じて振る舞いが変わり、該当する色を点滅させます。

Vue2

$emit:子コンポーネントが親コンポーネントに渡す

子から親にデータを渡す場合、$emitを使います。

Vue3

このパターンは前述の住所や氏名などのフォームの例が該当します。複数の子コンポーネントに入力されたデータを最終的に親コンポーネントに集約し、すべてのデータをサーバに送ります。その際に、子コンポーネントではonChangeイベントなどのアクションや「次へ」ボタンなどのアクションで親コンポーネントにデータを$emitを利用して渡します。

Vue4

store:兄弟関係のコンポーネントに渡す

兄弟関係のコンポーネントにデータを渡す場合にはstoreを介すのが一般的やり方です。

Vue5

例えば、PCのチャットアプリのように、スレッドの一覧画面とチャットの詳細画面があるものを考えてみましょう。詳細画面で文字列を送ったり、送信日時が変更されると、それに応じて一覧画面の並びや最新メッセージの表示が更新されますよね。この場合はstoreという機能を利用してデータのやり取りを行います。

Vue6

最後にーVue.jsを学べば働き口も多い

Vue.jsの案件は、今とても多いという感覚があります。「Vue.js書ける人いませんか?」という依頼がかなり来ており、Vue.jsを学習しておくと将来に役立つかと思います。特にここ半年で増えてきてるように思います。

Vue.js日本ユーザグループで日本語ドキュメントを整備したり、日本語での情報発信を積極的にやってきたので、その成果が出てきたのだと思います。Vue Fes Japanも参加者が1300名ほど予定されていました。海外ではReactがメジャーで2番手なイメージなのですが、日本ではVue.jsの方が人気がある傾向にあります。

IMG 9647

手島拓也(@tejitak
元IBM研究所・LINEエンジニア。現在は海外連続起業家として活躍中。バンコク/東京/ホーチミン/セブ/シンガポール拠点のスタートアップ・スタジオGAOGAOの代表。0→1のコンサル&開発を得意とし、多くのクライアントを抱えている。Udemy講師。『Vue.js入門』共著。独立系VCのCTO。

この記事を書いた人
flexy編集部
flexy編集部
ハイスキルIT人材への案件紹介サービス
サーキュレーションが運営するフリーランスのエンジニアを中心としたIT人材の案件紹介サービスflexy。エンジニアに役立つコンテンツも提供しています。【flexyのサービス詳細】★求人を募集している法人様向けお仕事をしたいご登録希望の個人様向け

週1日~/リモートの案件に興味はありませんか?

週1日~/リモートの関わり方で、「開発案件」や「企業のIT化や設計のアドバザリーなどの技術顧問案件」を受けてみませんか?副業をしたい、独立して個人で仕事を受けたエンジニア・デザイナー・PM・技術顧問の皆様のお仕事探し支援サービスがあります。

flexyでご案内できる業務委託案件

業務委託契約・開発案件(JavaScriptメイン)

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 2-3日/週
報酬 4万円/日
必要スキル JavaScript・React
勤務地 東京都内/リモート含む
リモート

外部CTO、技術顧問

テーマ 技術アドバイザリーとして知見と経験を生かす
勤務日数 1日/週
報酬 10万円/日
必要スキル エンジニア組織立ち上げや統括のご経験、コードレビュー経験、技術的なアドバイスが出来る方
勤務地 東京
リモート 相談可

業務委託契約・インフラエンジニア

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 2-3日/週
報酬 5万円/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート 相談可

業務委託・フロントエンドエンジニア

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 週1日〜
報酬 5万/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート リモートと常駐のMIXなど

人材紹介のCTO案件(非公開求人)

テーマ CTO、技術顧問案件はflexyに登録後、案件をコンサルタントからご紹介します
勤務日数 業務委託から人材紹介への移行
報酬 年収800万以上
必要スキル CTOとして活躍可能な方、エンジニア組織のマネージメント経験
勤務地 東京
リモート 最初は業務委託契約で週3日などご要望に合わせます

業務委託契約・サーバサイドエンジニア

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 週2-3日
報酬 案件により異なります
必要スキル 案件により異なります
勤務地 東京都内
リモート 相談可能
個人登録

お仕事をお探しの方(無料登録)
法人の方(IT課題の相談)