LoginSignup
1
3

More than 5 years have passed since last update.

本当の初心者がmonaca(cordova)+vue+typeormでハイブリッドアプリを作るまでの試行錯誤(随時更新)

Last updated at Posted at 2018-05-02

初めに

試行錯誤のログです。
間違いも書きますがなおします。
だってメモだから。
アドバイスは随時募集です!


背景

昨年末に
「アプリを作ってほしいんだよね
monaca使うと楽なんでしょ?
もうやること決まっているから」
って言われて着手。
割と殺意わきました。


構築者のスキルセット

ここ数年Ruby+Railsしか書いていないロートルです。

  • 理解度
    • vue?...聞いたことある
    • webpack?...聞いたことある
    • babel?...塔?
    • ES5?ES6?ES2015?TypeScript...なぜ1言語にこんなに多数の書き方あるのか意味不明
    • Cordova...Javascriptで開発出来るってさ
    • monacaとcordovaの違い...monacaはcordovaを使いやすくしてくれるサービス!

構築の想定ステップ

  1. 画面モックを作る
  2. OB周りの構築(ローカルのブラウザ開発では何のDBを使えばいいのでしょうか?
    typeorm使ってローカルWebSQL・実機SQLiteで動きました°˖☆◝(⁰▿⁰)◜☆˖°
  3. アプリケーションスコープの情報の扱い方考える(Vuex?なの?
    vuex使うっきゃないよね
  4. nativeのブリッジどうしようっかなー
    cordova plugin内製で乗り切り
  5. CI/CDとかdeployとか・・・
    vue標準???のmocha+headlesschromeで回しました

環境構築

公式手順にのっとって、プロジェクト作ってみる

setup
# 社内環境ってproxy面倒ですよね😞
# git global settings
git config --global http.proxy XXXXXXX
git config --global https.proxy XXXXXXX
git config --global http.sslVerify false
git config --global url."https://".insteadOf ssh://

# npm global settings
npm -g config set proxy XXXXXXX
npm -g config set https-proxy XXXXXXX
npm -g config set strict-ssl false
npm install -g monaca
npm install -g vue-cli
set NODE_TLS_REJECT_UNAUTHORIZED=0

monaca config proxy XXXXXXX
monaca login

npm install
monaca transpile

monaca preview

開発環境の設定

VSCodeで行くぞ!

  • extension List

    • doiuse
      CSSチェッカー
    • ESLint
      構文check
    • HTML Snippets
      HTML のスニペット
    • language-stylus
      vscodeのstylusサポート
    • Vetur
      vscodeのvueサポート
      ※もしシンタックスハイライト効かない場合はVeter Eを入れてみたください
    • VueHelper
      vueのコード補完
  • setting ファイル=>基本設定=>設定

settings.json
{
  /*
   Html, JavaScript, Vue
  */
  "files.associations": {
    "*.vue": "vue"
  },
  // 1 つのタブに相当するスペースの数。`editor.detectIndentation` がオンの場合、この設定はファイル コンテンツに基づいて上書きされます。
  "editor.tabSize": 2,
  // vueにcssのemmet追加
  "emmet.syntaxProfiles": {
    "vue": "css"
  },
  // vueだけで追加したい設定
  "[vue]": {
    "editor.formatOnSave": true
  },
  "eslint.enable": true,
  // 適応するファイルタイプを決定
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    {
      "language": "vue",
      "autoFix": true
    }
  ],
  // プロジェクト配下のeslintrc.jsを読み込み
  "eslint.options": {
    "configFile": "C:/${ファイルパス}/.eslintrc.js"
  },
  // 保存時に自動フォーマット
  "eslint.autoFixOnSave": true,
  // 保存時に末尾の空白削除
  "files.trimTrailingWhitespace": true,
  //-------- HTTP configuration --------
  // The proxy setting to use. If not set will be taken from the http_proxy and https_proxy environment variables
  "http.proxy": "XXXXXX,
  // Whether the proxy server certificate should be verified against the list of supplied CAs.
  "http.proxyStrictSSL": false,
  "extensions.ignoreRecommendations": true,
  "window.zoomLevel": 0,
}

ソフトウェアスタック

  • テーマ
    • 今風
    • OSS使い倒す
    • 共通処理は薄く・薄く・薄く・ruby的にmixinで必要な時に必要なものだけを入れる感じで
    • ORMapper使いたい(Rails長いから・・・ほら・・・
    • 可能な限り実機から離れてブラウザ開発したい image.png

モック作るよー

  1. フォルダ構成
  2. ファイル名
  3. ファイル単位
  4. vueファイルにすべきか、jsファイルにすべきか

更新中°˖☆◝(⁰▿⁰)◜☆˖°


OB周り構築するよー

  1. ORMapper調査
プロダクト TypeORM Sequelize
websql ×
sqljs ×
cordova対応 ×
  1. TypeORM

  2. not TypeScript環境
    名前が示す通り、TypeORMはTypeScriptを前提としたORMです。
    しかし、サンプルを見ればわかるのですがES6でも動くし、何でもできちゃう感を感じるORMですね。

  3. ローカル・端末をワンソースで

  4. 実装方式

    1. async/await
  5. 色々発生したエラー

  6. 使い方

    1. select
    2. insert
    3. update
    4. delete
    5. join
    6. eager_load
  7. テストデータ

  8. トラブル・・・


vuex使うよー

  1. 利用方針
  2. 管理方針
  3. 管理単位
  4. 実装方式
  5. 使い方
  6. トラブル・・・
  7. 更新中°˖☆◝(⁰▿⁰)◜☆˖°

Bluetooth機器と繋ぐよー

  1. 実装方針
  2. ローカル・・・だと・・・?
  3. トラブル・・・

更新中°˖☆◝(⁰▿⁰)◜☆˖°


CI回すよー

  1. karma設定
  2. mocha設定
  3. chromeheadless(もうphantomは嫌だ!
  4. gilab runner
  5. UTで本物DB使う
  6. トラブル・・・

更新中°˖☆◝(⁰▿⁰)◜☆˖°


できたよー

まだできてません
更新中°˖☆◝(⁰▿⁰)◜☆˖°

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3