スクフェス新潟に参加してきました
参加した立場
今回は実行委員(スタッフ)として参加しました。
これまでスクフェス等のイベントはオンラインのみ、しかも参加者と発表者しか経験がなかったので現地に行くスタッフは初めてでした。
参加した理由はひとえに、「主催であるじゅんぺーさんの熱意」に賛同したからだと思います。
私自身QAでもテスターでもアジャイルをやっているわけでもなく、参加当時は転職活動中(無職)だったのでじゅんぺーさんの熱意と個人的な興味で参加しました。
やっていたこと
実行委委員としては事前の定例MTGを半年ほど。
そして現地では、会場の設営・Onlineトラックの進行・自身の発表等様々なことを経験しました。
特に現地実施だったためか会場の設営に時間と手間が思いの外かかり、じゅんぺーさんはもちろんのこと会場のNINNOでお手伝いしてくださったスズキさんと霜村さんや早めに新幹線で来てくださったkobaseさんには本当にお世話になりました。
感想
初日・最終日両方を通して学んだことは沢山ありますが、現地開催に初めて参加したため「これが現地の熱量か!」と大変驚きました。
常に何かが起きており、何か起きるたびにダイレクトに反応がある。
「現地が減ってつまらない」というコロナ前からの参加者の方の嘆きがわかる気がしました。(とはいえ半分以上の時間スタッフ作業で話を聞けていないのですが…)
今回、現地とオンラインのハイブリッド開催となりオンライン側は、テストの街「葛飾」のおおひらさんと品川アジャイルの皆さんによる雑談配信が行われていたようで、後ほどスレッドをみるととても盛り上がっていたことを知りました。
現地だけでなく、オンラインも盛り上げて頂き本当に感謝しています。
さいごに
今回はじゅんぺーさん、そしてオープニングキーノートのダニエルどちらかが欠けていたら成り立たなかったんじゃないかと思うほど二人は重要な存在でした。
もちろん、スタッフ全員の誰かが欠けても大変だったと思いますが、現地のあの熱狂を生んだのは間違いなくあの二人がいたからだと思います。
スクフェス新潟に参加したおかげで私は初の現地スタッフという経験と様々な問題に取り組むことになりましたが、これは結論としては「楽しかった」と言っていいものだと思います。
毎週のようにやっていたMTGでの苦労も会場で起きた小さなトラブルたちもひっくるめて「楽しかった」が勝ちました。
おまけ
そんな私ですが、スクラムフェス新潟が縁で転職活動も終わり6月からお仕事をできる立場になりました。
製品のサポートエンジニアとしてこれまでの、システムエンジニアとカスタマーサポートの両方の経験を活かして頑張っていこうと思います。
AWS クラウドプラクティショナーの学習をはじめました(3)
実際にやってみていること
- 試験ガイドとサンプル試験を探す
- サンプル試験は解いてみる
- 勉強方法を書いているブログを見つける
- 上記をポモドーロ・テクニックを使い、25分の学習+5分の振り返りというサイクルで回して学習している
- この方法はふりかえりカンファレンス2022の紺野さんのセッションで紹介されていたものをまるっと真似たものです。
各ポモドーロの振り返り(2022/4/13)
【第1ポモドーロの振り返り】
プロビジョニング
プロビジョニングの方法(サービスを起動等管理する)
Amazon Virtual Private Cloud(VPC)
- 論理的に分離したネットワークとしてAWSサービスを置くことが可能
- パブリックサブネット
- プライベートサブネット
【第2ポモドーロの振り返り】
仮想プライベートクラウド(VPC)
セキュリティ
- アプリケーションセキュリティ
- ユーザーアイデンティティ
- 認証と認可
- 分散型サービス妨害(DDoS)攻撃の防御
- データの整合性
- 暗号化
まとめ
- 2ポモドーロ回すだけで十分な勉強時間と量が確保できることが分かってきた。
- 一方で連続するとかなり疲れるので、2〜3ポモドーロを目安に長い休憩を入れても良いかも知れない。
AWS クラウドプラクティショナーの学習をはじめました(2)
背景
エンジニアになりたいと思っていてもプログラミング知識以前にクラウドの知識にも疎いことをふと実感したためです。
実際にやってみていること
- 試験ガイドとサンプル試験を探す
- サンプル試験は解いてみる
- 勉強方法を書いているブログを見つける
- 上記をポモドーロ・テクニックを使い、25分の学習+5分の振り返りというサイクルで回して学習している
- この方法はふりかえりカンファレンス2022の紺野さんのセッションで紹介されていたものをまるっと真似たものです。
各ポモドーロの振り返り(2022/4/12)
【第1ポモドーロの振り返り】
モジュール3開始
エッジロケーション
ポイント
- リージョンは地理的に分離された場所にある
- リージョンはアベイラビリティゾーンで構成されている
- エッジロケーションでCloudFrontが実行される
まとめ
- 今日は1ポモドーロしか回せませんでした。
- とはいえ、それでもこれだけのノートが作れるポモドーロ振り返り、良いかもしれません。
- 是非やってみてください。
AWS クラウドプラクティショナーの学習をはじめました(1)
背景
エンジニアになりたいと思っていてもプログラミング知識以前にクラウドの知識にも疎いことをふと実感したためです。
実際にやってみていること
- 試験ガイドとサンプル試験を探す
- サンプル試験は解いてみる
- 勉強方法を書いているブログを見つける
- 上記をポモドーロ・テクニックを使い、25分の学習+5分の振り返りというサイクルで回して学習している
- この方法はふりかえりカンファレンス2022の紺野さんのセッションで紹介されていたものをまるっと真似たものです。
各ポモドーロの振り返り(2022/4/11)
【第1ポモドーロの振り返り】
- 試験ガイドとサンプル問題を発掘
- サンプル試験解いた8/10
- 全65問の試験で100〜1000点中700点で合格
- 各分野の偏りは把握済み
- 詳細は不明
- 英語のオンライントレーニングがあるらしい(12h)
- スキルビルダーというらしい
- 登録したら見れるかも→見れるので見てみる
【第2ポモドーロの振り返り】
- CPの勉強法を見つけた
- skill builder日本語字幕つきの動画 の視聴開始(以下のポモドーロでは全て動画のポイントをまとめています) -「モジュール1」を修了(全モジュール11+a)
- UdemyでCPの模擬試験を購入
【第3ポモドーロの振り返り】
- EC2インスタンスの基本とそのタイプを学んだ
- 汎用
- コンピューティング最適
- メモリ最適
- ストレージ最適
- どれも向き不向きがあって、用途別に分かれているらしい
【第4ポモドーロの振り返り】
- EC2インスタンスの料金とスケーリングについて学んだ
- スケーリング
- スケールアップ
- スケールアウト
- AutoScalling
【第5ポモドーロの振り返り】
Elastic Load Balancer
- トラフィック分散、負荷分散
- 自動スケーラブル
メッセージとキューイング
- SQS
- キューを送る・保持する・受け取るサービス
- 自動スケーラブル -SNS
- エンドユーザーにも通知できる
- メッセージのチャネル(送り先)が多様
- SQS
サーバーレス
コンテナオーケストレーションサービス
【第6ポモドーロの振り返り】
- 目標のモジュール2まとめテスト修了!のため中断
まとめ
- ポモドーロ・テクニック+振り返りというやり方がすごく馴染み、集中が途切れにくい(反面相当疲れるが…)
- AWSのskill builderの動画は日本語訳付きがあるので興味がある人は是非登録、見てみてほしい。
- 動画での学習効率が高いのでとても頭に入る。
Rails Tutorial意図せず2週目(第7章 ユーザー登録)
背景
1周目第13章途中でどうしても問題が解消できなくなり、gitでソースコードを戻してもDBの状態が戻らない、Herokuにデプロイはできるがアプリケーションが表示されない等の問題達にぶち当たったため、意図せず2周目を開始することに。
今回は丁寧にわからない用語等あれば拾いつつ復習していこうと思います。
第7章 ユーザー登録
前章でUserのDBとModelを作成したため、本章ではユーザーを登録していきます。その中でRailsの以下のような機能に触れていきます。
これらに加えて本番環境のHerokuにはSSLとPuma(Webサーバ)を設定していきます。
以下1周目はスルーしていた概念やコマンドの意味を調べる
3つの環境
Railsには元来、以下の3つの環境が備わっており、それぞれが疎結合(つながっていない状態)になっています。本章でここを掘り下げるためそれを深く理解するためにそもそもどのような環境でどのような違いがあるのか調べてみました。
- 開発(development)
- テスト(test)
- 本番(Production)
私の少ない経験上、これら3つの環境は開発をする際に必要なものです。
開発環境では現在開発中のアプリケーションを保持し、テスト環境ではその妥当性のテストを行い、本番環境は一般ユーザーが見ることができる環境として切り分けておきたいのです。
3環境についてしらべていたところ、「システム開発の際に用意すべき環境」というちょうどよい記事があったので、こちらを貼っておきます。
私自身こういう大きなフレームワークにふれるのは初めてなので3環境が整っていることに驚きましたが、他のフレームワークでもあるものなのでしょうか。気になります。
各環境へのアクセス方法とその際のコマンドの使い方をRails Tutorial 第7章 ユーザー登録 コラム 7.1. Railsの3つの環境から引用してきました。以下引用です。
【各環境の使い方 コマンド】
$ rails console [各環境名]
$ rails server --environment [各環境名]
$ rails db:migrate RAILS_ENV=[各環境名]
また、db:migrateは語順を変えてこういう書き方も可能なようです。
$ RAILS_ENV=[各環境名] rails db:migrate
【結論】
form_with
本章ではユーザー登録ページを作成する際にユーザー登録フォームを作成しました。その際に利用したRailsの機能が「form_with」です。
この機能を使うと、form_withブロック配下でHTMLのフォームが作成できます。
以下の例のように、form_withブロック配下にテキストボックスやメールフォーム、パスワードフォーム等の作成が可能になります。
[例: /app/views/users/new.html.erb(一部抜粋)]
<%= form_with(model: @user, local: true) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
詳細についてはこちらのサイトに載っていたので、参照ください。
【結論】
- form_withはブロック内にHTMLフォームを実装可能
- フォームの種別(タイプ)はHTMLフォームに依存1
Rails Tutorial意図せず2週目(第6章 ユーザーのモデルを作成する)
背景
1周目第13章途中でどうしても問題が解消できなくなり、gitでソースコードを戻してもDBの状態が戻らない、Herokuにデプロイはできるがアプリケーションが表示されない等の問題達にぶち当たったため、意図せず2周目を開始することに。
今回は丁寧にわからない用語等あれば拾いつつ復習していこうと思います。
第6章 ユーザーのモデルを作成する
本章では前回作成したUsers Controllerを軸にUserに関するModelやDBを作成していきます。今後、ユーザー認証を行うための土台づくりです。
その中でDBのマイグレーションやActive Recordの使い方を学び、Railsの強力な概念を掴んでいきます。また、Model内でのバリデーション設定や正規表現などにも触れるため段々とRubyやRailsの難しい部分にも触れていきます。
以下1周目はスルーしていた概念やコマンドの意味を調べる
Active Recordについて
Railsでデータベースを使ってやりとりするデフォルトのライブラリとして「Active Record」があります。これを利用してModelにデータを渡してデータベースの操作を行うことを本章で行いました。しかし、詳しい内容はわからないまま使っていたので、Railsガイドを参照して、ポイントを調べてみました。
以下、Railsガイド v7 Active Record の基礎からの引用です。
【Active Recordそのものについて】
- Active Recordとは、MVCで言うところのM、つまりモデルに相当するものであり、ビジネスデータとビジネスロジックを表すシステムの階層です。
- Active Recordは、データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行なえるようにします。
【ORMとして】
- オブジェクト/リレーショナルマッピング(O/RマッピングやORMと略されることもあります)とは、アプリケーションが持つリッチなオブジェクトをリレーショナルデータベース(RDBMS)のテーブルに接続することです。
- ORMを用いると、SQL文を直接書く代りにわずかなアクセスコードを書くだけで、アプリケーションにおけるオブジェクトの属性やリレーションシップをデータベースに保存することもデータベースから読み出すこともできるようになります。
【結論】
Rails Tutorial意図せず2週目(第5章 レイアウトを作成する)
背景
1周目第13章途中でどうしても問題が解消できなくなり、gitでソースコードを戻してもDBの状態が戻らない、Herokuにデプロイはできるがアプリケーションが表示されない等の問題達にぶち当たったため、意図せず2周目を開始することに。
今回は丁寧にわからない用語等あれば拾いつつ復習していこうと思います。
第5章 レイアウトを作成する
本章では、header, footer,logo, body等をコンテンツレイアウトを切り出して別ファイルに定義することができるため、別ファイルにマークアップファイルを切り出しました。
また、今回はCSSを使ってデザイン調整を行いました。その中でBoostsrapフレームワークを利用してデザインを楽に良い形にすることができました。
そして、CSSですが、SCSSというCSSの冗長な部分を圧縮した新しい概念を利用することで楽にデザインを当てることを知りました。
最終的にはこれらのデザインや別ファイルに切り出したマークアップファイルに対して統合テストを書いてテスト実施をすることでページ間の遷移をシミュレートしてテストすることも行いました。
以下1周目はスルーしていた概念やコマンドの意味を調べる
アセットディレクトリ
名前の通りアセット(資産 / js,css,img等)を保持するディレクトリです。しかしながら、Railsでのアセットの保持の仕方やディレクトリについてわからなかったので調べてみました。
以下、Rails Tutorial 第5章 レイアウトを作成するから引用。
- app/assets
- 現在のアプリケーション固有のアセット
- lib/assets
- あなたの開発チームによって作成されたライブラリ用のアセット
- vendor/assets
- サードパーティのアセット(デフォルトでは存在しません)
また、アセットパイプラインについてはRailsガイドv7にもドンピシャの記事があったので貼っておきます。
【結論】
マニフェストファイル
どのアセットを取り込んでサポートするか指定するのに使用するのがマニフェストファイルです。しかしながら、それが何をしているのかわからなかったので調べてみました。
以下Railsガイド v7 アセットパイプライン 2.4マニフェストファイルとディレクティブ引用。
- マニフェストファイルにはディレクティブ (directive: 命令、指示)を記述します。必要なファイルをディレクティブで指定し、それに基いて最終的に単一のCSSやJavaScriptファイルがビルドされます。
- Sprocketsはディレクティブで指定されたファイルを読み込み、必要に応じて処理を行い、連結して単一のファイルを生成し、圧縮します。
- マニフェストファイルは必要に応じていくつでも使えます。
【結論】
- マニフェストファイルには読み込みたいファイルを書くことでそれを圧縮して単一のファイルにすることができる。
- マニフェストファイルは複数作成することができるため、必要に応じて複数のマニフェストファイルを作り、様々なアセットを圧縮生成することが可能。
プリプロセス
プリプロセスは名前の通り、プリ(事前)のプロセス(準備・手続き)です。しかしながら、アセットに関してどのような事前準備をしているのかわからなかったので調べてみました。
以下、Railsガイド v7 アセットパイプライン 2.5 プリプロセスから引用。
- 適用されるプリプロセスの種類は、アセットファイルの拡張子によって決まります。
コントローラやscaffoldをデフォルトのgemセットで生成した場合、通常のCSSファイルが置かれる場所にSCSSファイルが生成されます。
アセットファイル名の拡張子は、「右から左」の順に処理されます。つまりアセットファイル名の拡張子は、これに沿って処理の必要な順序で与える必要があります。
【結論】
minitestのテスト内容 Railsのテスト内容
第5章から本格的にテストを記載するようになったため、テストで確認することが増えました。しかしながら、理解が追いついていないため、わからない所を一つ一つ切り出して調べてみました。
assert_template
assert_select
- これもRailsのテスト機能のようでした。minitestのドキュメントには記載がなく、以下のRailsガイドv7 Rails テスティングガイドに記載されていました。
以下、Railsガイドv7 Rails テスティングガイド 2.3 RailsとMinitestの出会いの引用です。
ArticleTestクラスはActiveSupport::TestCaseを継承することによって、テストケース(test case)を1つ定義しています。
これにより、ActiveSupport::TestCaseのすべてのメソッドをArticleTestで利用できます。これらのメソッドのいくつかについては後述します。
ActiveSupport::TestCaseのスーパークラスはMinitest::Testです
【結論】
- minitestの機能だと思っていて書いていたテスト内容が、実はRailsのテスト機能だったということが判明しました。
- ソースコードをよく見たらminitestを継承していないのでわかるはずだが、特に何も考えずコピペしていたら気がつかなかった可能性がありました。
- 上記のRailsガイドをよく読むと、Railのテストで利用する「ArticleTest」は「ActiveSupport::TestCase」を継承し、その継承元は「Minitest::Test」で結局minitestの派生でRailsのテストを書いていることを改めて確認しました。
-
minitest 公式ドキュメントを読んでみても出てこなかったのと、他のブログではRailsの機能として扱っている所からそのように理解しました。↩