$\huge{元氣ですかーーーーッ!!!}$
はじめに
闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。
本日は、Phoenixを説明します。
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
What is Phoenix ?
Phoenixの説明をします。
ひとことで言うと、Elixirで、Webアプリケーション開発を楽しめるフレームワークです。
RubyにおけるRuby on Rails、PythonにおけるDjangoのようなものです。
Webアプリケーション開発を楽しめるフレームワーク
ElixirのPhoenixの特徴は、公式にfunと書いてあることです。
Elixirは、そしてもちろんPhoenixは、開発を楽しめるのです。
ところで、Elixirの作者José Valimさんは、Elixirを作る上で影響を受けた言語にRubyを挙げられています。
José Valim - Cognicast Episode 120
The main, the top three influences are Erlang, Ruby, and Clojure.
完全に私見です。
ElixirがRubyから一番色濃く影響を受けているのは、 A PROGRAMMER'S BEST FRIEND だとおもっています。A PROGRAMMER'S BEST FRIEND は、Rubyの公式ページの先頭のところに書いてあります。
Elixirにのめり込むと自然と海外の方との交流が増えます。出会う人がみな親切でジェントルマンです。国内のコミュニティもそうです。みなマヂでいい人ばっかりです。
Phoenixは、ElixirでWebアプリケーションを開発する際によき友となってくれます。
Phoenixはデファクトスタンダード
Elixirは書いていて楽しいし、もちろんWebアプリケーション開発も楽しめちゃうというわけです。
ElixirのWebアプリケーションフレームワークのデファクトスタンダードがPhoenixなのです。
感覚的な話はいいから、もっと技術的なことを知りたい! という方には、「WEB+DB PRESS Vol.127」をオススメします。
一言だけ言っておくと、Webアプリケーション開発に必要なモダンで洗練された要素はすべて入っています。
現在、FMラジオ番組「Technology Cruising Night」で今年出たElixir特集、下記2本に触れてます💁♂️ #wdpresshttps://t.co/Tl98qkIvNS
— piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) November 25, 2022
・WEB+DB PRESS Vol.127:Phoenix特集
・同Vol.131:Elixir入門特集
下記の通り、盛り上がりまくってるElixir Advent Calendarにも触れてますのでお聴きください🙇♂️ pic.twitter.com/n0bdqXDMll
読み方
カタカナで書いておきます。
「フィニック(ス)」です。
最後のスは言っているか言っていないかくらいの小ささです。
この話は、別の記事に書いています。
よろしければご参照くださいませ。
ちなみに、日本生まれの方は聖闘士星矢の影響なのか「フェニックス」と読んでいる方が多いです。
国内では、「フェニックス」と発音したほうが圧倒的に通じます。
Elixirをやっていると海外との距離は近くなります。
海外の方と話すことがありましたら、「フィニック(ス)」と言ったほうが通じるでしょう。
昔の人は善いことを言いました。
「郷に入っては郷に従え」です。
相手のよって応対を変える。おもてなしの心です。
以上で、Phoenixの紹介を終えます。
ハンズオン
それではさっそくハンズオンをおっ始めます。
簡単なBlogを作ってみます。
データベースのCRUDをします。
準備(インストール)
楽しむためには準備が必要です。
Elixir
をご参照ください。
Elixirのバージョンは、1.14以上をインストールしてください。
Phoenix
Phoenixをインストールします。
もうそろそろPhoenix 1.7が正式にリリースされます。
おそらく年明け(2023年01月)と街で噂です。
1.6と比べて破壊的変更がされているのでいまから始められる方は、どうせなら1.7からはじめてみることをオススメします。
2022-12-17現在、バージョン1.7.0-rc.0
を指定すると吉です。
mix local.hex
mix archive.install hex phx_new 1.7.0-rc.0
PostgreSQLの起動
ここでは、Dockerで動かします。
他の方法で起動される場合には、ユーザー名とパスワードを以下コマンドと同じにしておくと吉です。
docker run -d --rm -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres postgres:15
プロジェクトの作成
mix phx.new hello
Fetch and install dependencies? [Yn]
は、Y
でもn
でもどちらでもよいです。
私はいつもn
にしています。
とりあえず動かす
cd hello
mix setup
Shall I install rebar3? (if running non-interactively, use "mix local.rebar --force") [Yn]
を訊かれたら、Y
にしましょう。
mix phx.server
Visit: http://127.0.0.1:4000
ブラウザで迷わずアクセスしてみてください。
カッちょいいのが立ち上がったら成功です。
もしここまででうまくいかないところがありましたら、先へは進めませんので、落ち着いて手順を見直してみましょう。
エラーログをよく読んでみましょう。答えはそこに書いてあります。
ブログ機能を追加
ここでは四の五の言わずにとにかく実行してみましょう。
プロジェクトのルートで以下のコマンドを実行してください。
mix phx.gen.live Blogs Blog blogs title:string body:text
上記を実行すると以下のメッセージが実行結果に表示されます。
Add the live routes to your browser scope in lib/hello_web/router.ex:
live "/blogs", BlogLive.Index, :index
live "/blogs/new", BlogLive.Index, :new
live "/blogs/:id/edit", BlogLive.Index, :edit
live "/blogs/:id", BlogLive.Show, :show
live "/blogs/:id/show/edit", BlogLive.Show, :edit
Remember to update your repository by running migrations:
$ mix ecto.migrate
この通りのことをあとはやればいいです。
少し戻って、mix phx.gen.live Blogs Blog blogs title:string body:text
コマンドの意味を知りたい方は以下の記事をご参照ください。
https://hexdocs.pm/phoenix/Mix.Tasks.Phx.Gen.Live.html
lib/hello_web/router.ex の編集
1.7.0-rc.0
ですと、17行目-21行目に以下があるはずです。
ここを編集します。
編集前
scope "/", HelloWeb do
pipe_through :browser
get "/", PageController, :home
end
編集後
scope "/", HelloWeb do
pipe_through :browser
get "/", PageController, :home
live "/blogs", BlogLive.Index, :index
live "/blogs/new", BlogLive.Index, :new
live "/blogs/:id/edit", BlogLive.Index, :edit
live "/blogs/:id", BlogLive.Show, :show
live "/blogs/:id/show/edit", BlogLive.Show, :edit
end
データベースのmigrate
データベースをmigrateしましょう。
mix ecto.migrate
ブログ機能を動かす
もし「とりあえず動かす」で動かしているものがありましたら、一度Ctl + Cで止めてください。
再度、Phoenixアプリを動かします。
mix phx.server
Visit: http://127.0.0.1:4000/blogs
ブラウザで迷わずアクセスしてみましょう。
「New Blog」ボタンでブログの作成ができます。
まずはここからはじめて、CRUD(Create Read Update Delete)を楽しみましょう。
今日の闘魂
人は生命を賭けて一か八かの大勝負をしないといけないときがあります。
豊臣秀吉(太閤殿下)の場合
まず挙げられるのは、豊臣秀吉たちが務めた殿(しんがり)の功績でしょう。
殿とは、撤退戦のときに最後尾を請け負い、敵の追手を食い止めたり振り切ったりする部隊のことです。戦場においては最も危険な任務とも言え、例えば長島一向一揆のときには美濃三人衆の一人である氏家卜全が一揆衆の攻撃を受けて犠牲になっています。
そんな危険な役割を秀吉自ら願い出るとは――講談などでは秀吉が自ら殿を願い出たという話もあります
ビル・ゲイツの場合
できてもいないものをできたと売り込み、プレゼンまでに完成させたそうです。
のちに皇帝とまで言われるようになる人物の若いころの有名な逸話です。
猪木さん流に言うと
猪木さん流に言うと、「人間は、一生のあいだに何度か闘わなければならないときがある。そのときに、妥協して敗れるのか、必死で闘った結果敗れるのかでは大きな違いがある」ということです。
『アントニオ猪木 最後の闘魂』より引用します。
年間何百試合と闘っていれば、コンディションがよくない日だってある。だからといって、「今日は調子が悪いから仕方ない」と、勝負を投げることはなかった。闘う前から妥協して自分に負けてしまっていたら、相手に勝つことなんてできない。相手に負けること以上に自分に負けることは絶対に嫌だった。どんなときでもベストを尽くす。必死で闘えば、必ずなにか得られるものがある。
一言で言うと、つまりは 闘魂 です。
「闘魂」とは、 「己に打ち克つこと、そして闘いを通じて己の魂を磨いていくことだとおもいます」 と猪木さんはおっしゃられています。
『アントニオ猪木 最後の闘魂』
みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。
少し残酷なことを言います。
正確には聞く人にとっては、耳の痛い話をします。
歴史に名を残す人は、勝っています。
負けません。勝つまで続けます。
人智を超えた運、天運を持っている方々なのでしょう。
運をも家来にしている人たちなのでしょう。 その心境に至るには、自分自身でできるあらゆることに最善を尽くすことが前提なのでしょう。
もしあなたがまだ勝てていないのだとしたら、「こんなにがんばっているのに!」と努力を売り物にしているのだとしたら、私自身も含めてそうですけど、まだまだ全然がんばりが足りないのです。
それでは人類は次のステージにいけないのです。
全員が、ビル・ゲイツ氏、イーロン・マスク氏のレベルになる ーー そうなってくると、未来のビル・ゲイツ氏、イーロン・マスク氏に相当する人はもっと先にいるのです。それでこそ世界文化はようやく進展するのです。私達ひとりひとりは人類発展の尊い礎なのです。生命の続く限り闘い抜くべきなのです。
女優の芦田愛菜さんが王貞治会長の言葉を紹介されています。
「努力は必ず報われる。報われない努力があるとすればそれはまだ努力とは言えない」(王貞治)
将棋では素人でも、いまの藤井先生と同じレベルになる ーー そんな未来がきて、将棋はますます発展するのです。将棋ウォーズ2級の分際で大それたことを言っています。100年後、1000年後の理想とする世界観、メッセージとしてご容赦ください。
Phoenix は不死鳥 ーー 闘魂は永遠
2022-10-01 アントニオ猪木さんは、文字通り生命を燃やし続けられました。
その火は消えていないのです。
闘魂の火は永遠です。いつまでも一人ひとりの胸の中で闘魂の火が燃えていることでしょう。
「闘魂は連鎖する」のです。
日本の歴史はすなわち闘魂の歴史です。
こちらのビデオの05分40秒あたりからをぜひご覧になってください。
アントニオ猪木さんの引退試合のセレモニーが始まります。
有名な「道」の詩が朗読されたシーンです。
引退セレモニーの冒頭で古舘伊知郎さんのナレーションがあります。
その中で「闘魂は連鎖する」の言葉があります。
闘魂のかけらを携えて今度は我々が旅にでる番だ! 闘魂は連鎖する!
Phoenix は不死鳥ですし、「燃える闘魂」は永遠なのです。
さいごに
Phoenixを説明しました。
闘魂の意味は、 「己に打ち克つこと、そして闘いを通じて己の魂を磨いていくことだとおもいます」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
$\huge{1、2、3 ぁっダー!}$
Elixir Advent Calendar 3の22日目、まいどお馴染み @torifukukaiou さんで、Elixirビルトインライブラリが一通り終わり、遂にWebFW「Phoenix」の出番です💁♂️https://t.co/p2ml11lHs4
— piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) December 25, 2022
今年はコミュニティ発の書籍もリリースしており、Webアプリ開発に必要なモダンで洗練された要素、全部入りFWです😆 pic.twitter.com/S11veT4Evs
$\huge{元氣があればなんでもできる!}$