ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

Rubyを始めてみた1:基本構文

MySQLSQLなどデータベース周りやサーバー構築周りを勉強中ですが、動機としてはC#で作ったタスク管理アプリを複数人で使えるようにしたいというのが1つ。

こちらを実現するには、以下のようなあたりを勉強する必要がありそうだなと。

・アカウント登録と管理、ログインやログアウトの仕組み
・アカウントごとのタスク管理アプリに対するパーミッションなどの設定や管理
・サーバー上にデータベースを構築してタスク管理アプリとやり取り
 (タスクの複数アカウントからのリアルタイムでの編集が可能に)
・ネットワークやセキュリティの知識

それだけではなく、仕事でも大量のアセットの情報をデータベースで管理して、ウェブサービス上で情報を表示したり何かしら集計したりといったようなことにも知識を活かせたらという思いもあります。

ただし仕事だとプログラマさんにお願いして実現してもらえたりするので、そういった知識を得ておくことでプログラマさんとのコミュニケーションがスムーズになれば良いなという感じです。

それから、ウェブアプリを作ってみたいという思いがジワジワと増してきています。

というのもTwitterのモーメントを試してみたらとても使い辛い上に100件超えたら古いものから消えていくという仕様を耳にしたりして、これ以上使う気になれなかったりしたので、自分にとって使いやすい形でカテゴリ別にフィルタできる過去ツイート閲覧アプリが作りたいといった感じです。

ツイートにタグを付与できてタグでフィルタして一覧できたらそれで十分という感じで。

内部的にはツイートの投稿IDと、あらかじめ登録したタグの紐付けをデータベースで管理して、諸々の操作をブラウザ上で完結できたら良いなあと。

サイトのイメージとしてはTwilogのような感じが理想です。
Twilog - Twitterのつぶやきをブログ形式で保存


もう少し細かく要件を書き出すと以下のような感じになるかと思います。

●ブラウザ上でTwitterのアカウントIDを指定してタイムラインを一覧できる
 Twilogのように年/月/日を指定してリストアップできる
 Twitter公式アプリのように画像や動画のサムネイルも表示したい

●ブラウザ上でタグの新規登録、削除、リネームが行える

●タグをデータベースのテーブルで管理

●ブラウザ上でTwitterの一覧から、指定ツイートにタグを紐付けられる
 タグの付与(複数可)と解除が行える

●ツイートの投稿IDとタグIDの紐付けをデータベースのテーブルで管理する

●ブラウザ上でタイムラインを一覧する際にタグを指定してフィルタリングができる

でもって最終的にはiPhoneアプリ化して通勤時などの隙間時間にタグ付与作業ができたらいいなあと。実現に何年かかるか分かりませんが。。

具体的に習得が必要な要素として、Ruby/PHP/Pythonなどによるアプリの実装周り、HTML/CSS/JavaScriptなどのブラウザでの表示周り、サーバーとの通信、あと以前軽くTwitter公式APIを試しましたがもっとちゃんと色々調べないといけなさそうだなと思うと、こりゃ大変そうですね。

それから、RubyPHPPythonのどちらが良いのだろうと思った際に、アーティストとしては仕事でもストレートに役に立つPythonでいきたいところですが、ウェブアプリを作る解説の多さとライブラリの充実面で言えばRubyPHPという感じなのでしょうか。

※実は最初にPythonでウェブアプリ開発をやってみたいと思って試そうとしたのですが、Python3 + Vagrant + Django の環境構築の時点でうまく動作せず原因が分からなくなっていきなり頓挫したという経緯もあります‥(もうちょい調べれば進めたかもですが気分転換のため一旦ストップしました)

ウェブエンジニアな方にご相談したところRubyRailsフレームワークがおすすめと教えていただいたこともあり、ひとまずRubyを軽く触ってみたいと思いました。

環境構築


まずRubyのDevkit付きインストーラーをDLして実行します。
Railsを使いたい場合はDevkit付きになるようです。

こちらの記事を参考にさせていただきました。
Rubyのダウンロードとインストール | Ruby入門 | RubyLife

ちなみにこの記事の時点で最新の「Ruby 2.6.3p62」をインストールしました。

そもそもこちらのサイト、チュートリアル記事が非常に充実しています。。
Ruby on Rails 入門」シリーズではウェブアプリを作成する手順が学べるようです。

そして Rails のインストールも同サイトの記事を参考にさせていただきました。
Railsをインストールする | Ruby on Rails入門 | RubyLife

この記事の時点でインストールした Rails のバージョンは「Rails 5.2.3」になります。

その後に進めた学習内容


同サイトの「Ruby入門」の記事を順に見ていきました。
https://www.javadrive.jp/rails/

7年前の記事のようなので今のバージョンでは書かれている通りにいかない箇所も色々とありますが、そのあたりは全て解決方法をメモっています。

他にはドットインストールの「Ruby入門(全26回)」を進めるのも良いと思います。
https://dotinstall.com/lessons/basic_ruby_v3

Rubyのリファレンスマニュアルはこちら。
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.6.0)

以下は軽いメモ。

Rubyのファイルは「~~.rb」
コマンドプロンプトで「ruby ファイル名」で実行
・処理の最後に「;」は無くてOKだし入れても良い
・1行コメントは「#」、複数行は「=begin」と「=end」で括る
・「#! ruby ~~」で始めるとコマンドラインプションの指定が可能
・日本語を表示するなら「#! ruby -Ks」を先頭に記述しておくと良い(Shift-JIS指定)
・定数は大文字で宣言

基本構文はPythonと共通点が多いですね。

ちなみに文字コード関連の記事はうまくいったりしかなかったりしました。
上記リファレンスマニュアルによると2.6.0以降はエンコーディング周りは色々と変わったようで「$KCODEは廃止されました」とあります。。
多言語化 (Ruby 2.6.0)

クラスの定義

class クラス名 ※先頭は大文字で書くと良い
 ~~
end


クラスの定義(いわゆるコンストラクタがある場合)

class クラス名 ※先頭は大文字で書くと良い
 def initialize()
  ~~
 end
 ~~
end


メソッドの定義

def メソッド名(引数1, 引数2, ...) ※先頭は小文字で書くと良い
 ~~
end


モジュールの定義

module モジュール名 ※先頭は大文字で書くと良い
 ~~
end


とりあえず今回はここまで!

続きはこちら。
Rubyを始めてみた2:Ruby on Rails 導入 - ゲームエフェクトデザイナーのブログ (新)