OutSystemsエンジニアの猛勉強ブログ

初心者OutSystemsエンジニアのブログです(ぺこり)。

OutSystems PlatformでSQL文を使用する(基礎トレ1.8)前編

ふっふっふ。
ごきげんよう。小林だよ。ついにSQL文の実装に入るよ。
SQL文って何のことなのか実は知らないよ(笑)。

OutSystems Platformは全部英語です。
英検?英検なら4級を取得済みさ。
中2のときだからいまから20年前に合格しました(笑)。

3級?英検3級は面接があってコミュ障だから受けませんでした。英語の勉強しているよりもスタインベックの小説読んでいるほうが好きです。

ドストエフスキー氏が一番好きなのですが、社会的にはまるで役に立ちません。
でも役に立たなくてもその高次な知性は気に入っています。
では、何が社会の役に立つのかというと、知識ではなく技能です。
所得に直接影響を及ぼすのは何を知っているのかではなく、何ができるのか?です。
例えば、Javaでコードが書けるとかperlでコードが書けるとか、Webサービスを一人で構築・運営できるといった~~を知っているではなく、~~ができるというものに企業は高い対価を支払います。特に中途の場合はその人を即戦力とみなして採る傾向が強いため、何かができる人の需要が高まります
事務職よりもエンジニアのほうが収入が多いのも何かができる人、作れる人だからです。

 

話脱線しましたが、”OutSystems PlatformでSQL文を書ける人”になるべく、この記事を執筆いたします。

 

1.8

f:id:neomatsudaira:20160218112912p:plain

 基礎トレーニング1.8の内容は

  "高度なクエリの使用

    SQLや複雑なクエリの作成方法を学びます。"

です。
何を作るのかというとSQL文を使ってお得意様リストを作成するということです。

それではトレーニング動画を見ていきます。

f:id:neomatsudaira:20160218113450p:plain

”このレッスンでは、自身でSQLクエリを書く方法を学びます。”

 

まあ、いつも通り、何を言っているのか分かりません。 

f:id:neomatsudaira:20160218113631p:plain

前回はダッシュボード(一覧ページ)に、商品の売上ランキングページを開発した。
今回は、その下にトップ顧客リストを追加していきます、ということです。

 

はい、マッハで開発します。 

f:id:neomatsudaira:20160218113955p:plain

見出しを作ったよ。次に

 

アルゴリズムにSQLクエリメソッドを実装する。

f:id:neomatsudaira:20160218114158p:plain

ぐぬぬっっ!!
何言っといるのかまるで分からん。
とりあえず、「クエリ」でググって調べてきます。

・・・

1分後、小林はググって勉強してきました。
クエリとは、データのかたまりから自分の欲しいデータを取得するための命令文のことです。だからSQL文とは、データベース(大きなデータのかたまり)から欲しいデータを取得するための命令文のことであり、データのかたまりからどのようなデータを取得するのか?、どのようにデータを断面するのかの命令文のことです。

 

んで、

f:id:neomatsudaira:20160218114521p:plain

“このツールを使うには、SQL言語の知識が必要です。”
いえ、自分、日本語しか書けません(笑)。

 

f:id:neomatsudaira:20160218115013p:plain

”また、SQL文がお使いのデータベースに適合していなければなりません。”

こうやって正常に動作しなかった場合、それはわれわれの責任ではありませんという予防線を張ることでUX(顧客の嫌な体験)を増幅させることの意義がよく分かりません。

 

ただ今回使用するSQL文は、完成品をダウンロードして開発基盤に貼るだけです。
ダウンロードの場所は↓ここです。

f:id:neomatsudaira:20160218115806p:plain

実装するSQLのコードはこれです。

 

SELECT
    {Client}.[Name], count(distinct {Order}.[Id]), sum({OrderItem}.[TotalPrice])
FROM
    {OrderItem}
    inner join {Order} on {Order}.[Id] = {OrderItem}.[OrderId]
    inner join {Client} on {Client}.[Id] = {Order}.[ClientId]
WHERE
    {Order}.[StatusId] <> @CancelledStatusId
GROUP BY
    {Client}.[Name]
ORDER BY
    sum({OrderItem}.[TotalPrice]) DESC

 

・・・こういうの見ると小林は2つのことを感じます。
1つは、パソコンはアメリカ人が作ったということ。
一番左上のSELECTとか日本語訳したら、選択するです。

つまり、アメリカ人はこのコードを素で読めるということになります。
もしもSQL文が日本語だとしたら、上から

 

 (SELECT)選択します

 (WHERE)どこから

 (GROUP BY)グループ化させます

 (ORDER BY)注文はこちらです

 

という風になる。
日本人は左を読み、アメリカ人は母語だから右を読んでいるはずです。
ということは、アメリカ人だった場合、ITの知識のない主婦とか小学生でも”選択します”、”どこから~どこまで”といった風に、素読できるということです。

別に勉強しなくてもアメリカ人だったら素で読めてしまうのです。

日本人が必死になって英語を勉強する意味があまりよく理解できないのはこのためです。
彼らに合わせることで得られる恩恵と利益はアメリカにあるのであって、才能とは希少性のことなのだからぶっちぎりで日本語を勉強しまくったほうが収入は上がるんですが、必死になって英語を勉強しマジョリティ(多数派)になる。

レアになればなるほど才能として認められるのに大多数になりたがる。
それはなぜなのだろう?と小林はたまに考えます。

感じることのもう1つは、OutSystemsエンジニアってうちの会社の場合も結構文系が多いのです。
文系でも優秀なOutSystemsエンジニアはかなりの数にのぼります。
別に理系でなくてもOutSystemsやSQL文は習得可能なスキルなのです。
だけどですね、こういう文章を見せられると使いこなすには少し勉強する必要があるなあと感じるわけです。

1つ目とまったく逆のことも考えているということです。
それは何かを作れる人になりたいからです。

分からない、分からない言いながらもある程度は勉強しなければいけないなと少し感じる訳です。
では、SQL文をセットします。

 

セット後バグ取りしなければならないです。

f:id:neomatsudaira:20160218121335p:plain

(なんかよく分からないことをやっている小林の開発画面)

トレーニング動画において新しい機能が出てきたときに説明が一切されないため、何をしているのか理解できないのですが、とりあえず模倣しています。

ITサービスの悪い癖は、教育と動画は親和性が高いため、動画を1本作って、数万人の人間にトレーニングしてもらうことはできるのですが、難易度が上がると途端に説明が雑になります。

だから社会に満足度の高い日本語のトレーニング動画はあまり存在しません。
あまり存在しないのに、需要があるということは、ビジネスチャンスでもあるということです。

ほらね。高度な日本語話者のほうが希少性が高く、所得が上がってしまうのです。
作っていて分からないので、とりあえず無視して先へと進みます。

 

(トレーニングは続きます。)