Django Girls Tokyo ワークショップに参加してきた

本ワークショップに応募するとき「Qiitaに記事を上げる」と約束したので書きました。
結論から言うと、参加して本当に良かったです。

##Django Girlsとは？
[Django Girls 公式サイト](https://djangogirls.org/)によると、
> Django Girls is a non-profit organization and a community that empowers and helps women to organize free, one-day programming workshops by providing tools, resources and support. 

一言でいうと1Dayワークショップ等を通してプログラミングの普及活動をしている非営利団体のようです。
##私のスペック

* 業務でPython 2系3系を触った経験あり(≠webアプリ、本当に触っただけ)、直近1ヶ月ほど
* 自分のキャリアの模索のため、独学でRailsを2ヶ月ほどダラダラと(今は使ってない、Railsチュートリアル半分までやった)
* 前職は外資インフラ系プロジェクトマネージャ
* 前職までは技術未経験、前職を辞めた後ブランク約2年を経て今の会社に入社

##参加動機
下記状況、思いが重なった感じです。

* Rails を独学でやっていた頃は1人でしんどくて、仲間が欲しいと思った (結局Railsは続かなかった)
* 勉強のためにRailsを触っていた流れでDjangoにも興味はあった(が、触る余裕はなかった)
* 最近IT企業(≠web業界)に就職してPythonを触る機会はあった

##達成したかったこと
* 初めて触るDjangoで何か作る
* お互い頑張れるお友達ができたら嬉しいな☺️

##カリキュラム
###概要
インストールDayとワークショップDayの2日間に分かれて開催された。
インストールDayの参加は必須でなく、参加者数はワークショップDayの半分くらいだったかと。
[Django Girls のチュートリアル](https://tutorial.djangogirls.org/ja/)に沿ってアプリ作成を進めました。

1. インストールDay

* 日時：　11月2日（金）19:00~21:00
* 場所： EventSpace Co-Creation Labo @ 東京都千代田区平河町

この日の目標は[Djangoをインストールするまで](https://tutorial.djangogirls.org/ja/django_installation/)進めること。Git, PythonAnywhereはスキップ。
時間が余っていたのでこれを機にAnacondaを卒業したいと思い、コーチに確認しAnacondaを無効にしてvirtualenvを使うことに。
具体的には、.bash_profileのAnacondaのエイリアスをコメントアウト。

2.ワークショップDay

* 日時：　2018年11月3日（土）10:00〜18:00
* 場所：　サイボウズ株式会社 東京オフィス @ 東京都中央区日本橋


現地で撮った写真は掲載OKとのことなのでバンバン載せます！

会場はこんな感じ！

![ED7F59D3-53D6-42EB-8776-33D48069F43B.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258945/474e9625-9b24-b3fd-6a51-26f95ef985c7.jpeg)

途中休憩を挟みながら、8時間でチュートリアルをこなし、なんとかwebアプリ(ブログ)を作りきった。

![Django_girls_Blog.png](https://qiita-image-store.s3.amazonaws.com/0/258945/9750abeb-1358-b2a2-aae3-5b3aace64fa0.png)


##私がつまずいたり疑問に思ったりしたところ
プログラミング初心者向けとのことだったので、普段なら聞けないような初歩的なこともとにかく聞きました！

###出るわ出るわ、エラー画面！
エラーメッセージをちゃんと読み確認して、それに合った対処を。
エラー画面とかメッセージって、読みたくなくなりますよね…
例えば、python manage.py runserver を叩いたコンソールにて

```py
File "/hoge/djangogirls/blog/views.py", line 17, in post_new
    form = PostForm()
NameError: name 'PostForm' is not defined
```

とか

```py
File "/hoge/djangogirls/blog/urls.py", line 6, in <module>
    path('post/new', views.post_new, name='post_new'),
AttributeError: module 'blog.views' has no attribute 'post_new'
```
とか
まずはエラー画面の最後の3行くらいを読んで

* どこのファイルの
* どの箇所に
* どんな症状のエラーが出てるか


が読むことができれば解決に近づきそう。

私のような初心者がやらかしがちなエラーの原因は、例えば

* タイプミス
* ファイル置く場所間違えた
* コピペミス

とかかな？

私が出したエラーはほぼ上記3つに当てはまりました。。

ブラウザで出るエラーも同様で、
例えばviews.pyに実行したいメソッドが定義されて！とエラーが出ていたら
コピペ漏れか書き忘れなのでちゃんと定義しましょう、ということ。

###MVCモデル…じゃないの？
Railsを少しかじっていたので、views.pyのファイル名が異質なものに見えた。
MVCモデルのcontrollerに当たるはずなのにviewsとはこれ如何に…🤔と。
(と言っても、私自身MVCモデルを説明できるレベルにはないのですが。。)
DjangoではMTVモデルと呼ぶらしいのです。
MTVとはModel Template Viewの略。
詳細は[Python Django チュートリアル チートシート](https://qiita.com/maisuto/items/bcdb0fd6c63cf0c544d6)「全体像」参照

###このドットは何だろう…
`blog/admin.py`

```py
from django.contrib import admin
from .models import Post
​
admin.site.register(Post)
```
.modelsの"."は 「カレントディレクトリ配下」という意味。
 .をつけないとmanage.pyがあるディレクトリから読んでしまう。
場所を指定しないと名前が衝突しImportエラーが起こるので要注意。

####追記 (2019/01/29)
復習してたら[Django Girls Tutorial テンプレート内の動的データの章](https://tutorial.djangogirls.org/ja/dynamic_data_in_templates/)に下記記述を見つけました。
> models の前にあるドットは カレントディレクトリ 、もしくは カレントアプリケーション のことです。 
views.pyと models.pyは、同じディレクトリに置いてあります。 だから、こんな風に.とファイル名だけを使って、簡単に記述することが出来るのです。

真面目に読んでなかったことがばれますね。。


###環境作ったはずなのに動かない！
Djangoを入れたインストールDay当日中は良かったのですが、ワークショップDayでちょっと焦りました。。
virtualenvに慣れておらず、djangogirls直下で下記コマンドを打つの忘れてたのが原因。
`$ source myvenv/bin/activate`
そもそも直近では会社Windowsでも私物MacでもAnacondaでしかPythonを使っていなかったためこれから慣れます、はい。

##雰囲気

参加者30名、全員女性。
外国出身の方も数名。年代、業種は本当にバラバラ。バリバリ働いてるママさんもけっこういた。
生き方というかチャレンジ精神というか、皆さんすごくパワフルで尊敬できる方たちしかいなくて、この環境にいられただけでもすごく良い体験だった。
いい意味でめっちゃ焦る。

お友達もたくさんできました！！嬉しい〜〜

<blockquote class="twitter-tweet" lang="ja"><p>参加者に何名か外国の方がいたけど、教える側だけじゃなく参加者側も英語話せる人が多かったのびっくりした。グローバル…😳</p>&mdash; まどかす (@madok_s) <a href="https://twitter.com/madok_s/status/1058344367377633281"></a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" lang="ja"><p>参加者の方々を見てると、とにかくみんな「強い意志」を持ってて前向き。好奇心だったり自分の働き方を考えたいとか色んな人と知り合いたいとか。私も頑張るぞ💪💪💪</p>&mdash; まどかす (@madok_s) <a href="https://twitter.com/madok_s/status/1058346010265608192"></a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

ワークショップは以下基準にグループ分けされ進行してたかと。
Windows/Mac
Django インストールした/してない

1グループ3〜4人に1人コーチがつく感じでした。
困ったタイミングですぐコーチに対応してもらえる環境で聞きやすかった。
ちなみにコーチは男女混合。

###適度に休憩！
頭フル回転しっぱなしでお腹がすぐ空いてしまう。。

![51030480-FE53-4310-ABF8-905C0734889A.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258945/b30890d8-9649-c575-6301-a9b86c5b2248.jpeg)

良い眺めとかわいいランチ🌈💗

そしてLTタイム！

[nikkieさんのLT](https://gitpitch.com/ftnext/2018_LTSlides/master?p=django_girls_Nov_for_beginners/#/)で、

> わからないことはメモしてまた出てきたら調べる

というフレーズ？が印象的だった。

わからないことを調べるとまたわからないことが出てきて、わからないことで溢れてしまうし

それがよく使う知識なのか否かの優先度がわからないから

確かにー！となった💡


あと今村かずきさんのLTも刺さった。

Django Girlsは女性を優遇しているのではなく、女性に機会を与えたいんだよ、という話。

確かに勉強会とか私の職場も男性の参加者の方が女性よりかなり多い。難しいけど、向き合い続けなければならない問題だなと感じています。

###おやつ！

![DC0818B6-DB4F-48A5-A240-0B48642E17E1.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258945/e46fac33-3830-a52c-8e5f-f6d6527de0a8.jpeg)

めっちゃフォトジェニックなケーキでびっくり。思わずインスタにも上げちゃいました(笑)

![8D4EE148-1387-416A-A7B8-EAB00FA9FFC5.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258945/69b5452f-08dd-0363-eac4-c59079c9c4be.jpeg)

懇親会まできっちり？楽しみました。

現役エンジニアのコーチの方々のお話から感じたのは
エンジニアへの門戸は開かれているけど、ちゃんと戦略考えないと生き残るのが難しそう

自分より優秀な人はいくらでもいる

ということ。

わかってはいたつもりだけど…
技術を磨きつつちゃんと考えなきゃ。
継続しなきゃ。

##これから

![332B1258-BFBE-4F94-A4AE-82FE13FE3712.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258945/17bc55ff-2174-2ca7-29af-b0d02c4b293b.jpeg)

まずはDjango Girls Tutorialの[拡張版](http://djangogirls.gitbooks.io/django-girls-tutorial-extensions/
)を今年中に終えたいな〜とゆるく考えてます。

それと同時に、友人のアプリ開発を手伝いながら、簡単なものから作っていこうかなと考えてます。

やっぱり大好きなことば、自然言語とITが重なる場所に身を置いて、人々のコミュニケーションを助けることを生業としたいので、その方向へ行けるようにしていきたいです。

##まとめ

> 初めて触るDjangoで何か作る

-> 達成🙌

> お互い頑張れるお友達できたら嬉しいな☺️

-> 達成🙌

助けを借りながらもDjangoでwebアプリを作り、色んな人と出会って話して情報が頭の中でひっちゃかめっちゃかだったけどとりあえず楽しかったです！！(語彙力


次回はスタッフとして(コーチは難しいと思うので)Django Girlsワークショップに参加したいと思いました！

最後まで読んでくださった方、ありがとうございましたm(_ _)m

![2FBEDDA6-2671-492C-8CA3-2B82C677748A.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258945/82f00cf3-d81a-e582-e15d-75c0e74c8a62.jpeg)

##参考リンク
https://djangogirls.org

https://djangogirlsjapan.gitbook.io/workshop_tutorialjp

https://blog.soracom.jp/blog/2018/04/18/howto-techblog/

https://qiita.com/maisuto/items/bcdb0fd6c63cf0c544d6

https://gitpitch.com/ftnext/2018_LTSlides/master?p=django_girls_Nov_for_beginners/#/