TERASOLUNAを使ったWebアプリケーション開発の備忘録

## 目的
開発を知らずに今の業務を続けるのは無謀だと思ったので、一念発起してWebアプリケーション(以下、WebAP)の勉強を始めました。TERASOLUNA Server FWを利用してjavaとspringによるWebAP開発について学び、その内容を備忘録として書こうと思っています。
何かお気付きの点があればご指摘いただけると嬉しいです。

## [TERASOLUNA](http://www.terasoluna.jp/product/framework/server_framework_5.html)とは？
NTTデータがOSSを組み合わせて開発した、Java/.NET/Ajaxプラットフォームにおけるオンライン系／バッチ系ソリューションに対応したフレームワーク群のこと．

## 環境
|種別|名前/バージョン|
|:---|:---|
|OS|macOS 10.13.3 High Sierra|
|JVM|Java 1.8|
|IDE|IntelliJ IDEA CE 2018.1.3|
|FW|TERASOLUNA Server Framework for Java 5.4.1.RELEASE|
|Build Tool|Maven 3.2.5, Gradle 4.8|
|AP Server|Apache httpd(仮)|
|VCS|GitLab|

(-3-) < AsciidocのAttributesみたいなのないかなー..

##学習したい内容
とりあえず学習したい技術を連ねる。

* [Java](http://www.oracle.com/technetwork/jp/java/index.html)を使ったWebAP開発
* [git](https://git-scm.com/)を使った開発方法
* MVC等のデザインパターン
* Webフレームワークの使い方、利点
* [TERASOLUNA](http://www.terasoluna.jp/product/framework/server_framework_5.html)の特徴
* WebAPIとのデータ連携
* 外部XML読込み
* WebAPのセキュリティ要件とその実装
* REST
* テスト
* 設計
* その他気になった技術全て

★以下、更新中

## 環境構築

* GitLabの準備

vBoxでUbuntu 18.04LTS Server立てて[GitLab Installation](https://about.gitlab.com/installation/)の説明に沿ってGitLabを適当にデプロイしました．
GUIからREADME.mdとかを作成すると500エラーになるけど、CUIからpushやpublishはできた． スワップ設定や、CPUやメモリの割当てを変更したけど直らない...気持ち悪いけど当面の支障は無いから無視しました． (-_-;)

* 最新のjavaを検索・導入

``` bash
brew cask search java
brew cask install java
```

* javaバージョンを確認

``` bash
java -version
```

結果

``` text
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
```

## WebAPの開発

[3.1. Webアプリケーション向け開発プロジェクトの作成](http://terasolunaorg.github.io/guideline/5.4.1.RELEASE/ja/ImplementationAtEachLayer/CreateWebApplicationProject.html)に沿ってJavaプロジェクトを作成してみる．

1. コマンド一発でブランクプロジェクトを作成

    ``` bash
    mkdir ~/work
    cd ~/work
    
    ########################################
    # Create blank project
    ########################################
    mvn archetype:generate -B -DarchetypeGroupId=org.terasoluna.gfw.blank -DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype -DarchetypeVersion=5.4.1.RELEASE -DgroupId=com.example.todo -DartifactId=todo -Dversion=1.0.0-SNAPSHOT
    
    ########################################
    # Install git-flow
    ########################################
    brew update
    brew install git-flow
    cd ~/work/todo
    
    ########################################
    # Configuration for local repository
    ########################################
    git flow init -d
    
    ########################################
    # Set to worktree of git
    ########################################
    git add .
    
    ########################################
    # Set to index of git
    ########################################
    git commit -m "Create project"
    
    ########################################
    # Upload to GitLab
    ########################################
    git  remote add origin git@gitlab-server:todo.git #未検証
    git push origin #未検証
    ```

2. 続く

## 参考
[terasoluna.org](http://terasolunaorg.github.io/)
[TERASOLUNA Server Framework for Java (5.x) Development Guideline](http://terasolunaorg.github.io/guideline/5.4.1.RELEASE/ja/index.html)
[Java SE 8](https://docs.oracle.com/javase/jp/8/docs/index.html)
[Qiita Markdown 書き方 まとめ](https://qiita.com/shizuma/items/8616bbe3ebe8ab0b6ca1)
[私がMVCフレームワークをもはや使わない理由](https://www.infoq.com/jp/articles/no-more-mvc-frameworks)
[Webアプリケーション開発者から見た、MVCとMVP、そしてMVVMの違い](https://qiita.com/shinkuFencer/items/f2651073fb71416b6cd7)