よこなのへたのよこずき

noteもよろしくね

JJUG CCC 2015 Fallで懇親会の司会をしに東京へ行った #jjug_ccc

11月28日(土)は恒例のJJUG CCCでした。
今回は過去最高の677人ご来場!勢い増している!
会長もこうおっしゃっていて、まだまだもっともっと頑張れそうですね。

なお、私はというと主に受付とかセッション部屋担当とか幹事っぽいことをしておりました。
そんな中印象的だったことといえば、無料になりご参加者も多かった懇親会における
@maaya8585さんとの司会業です。

結果…

あらあら。
怖い人であるという印象を与えてしまったかもしれませんが、あれはビジネス毒舌なんです。
心にもないことを言ったのでとても辛く、帰ってから皆さんを思って泣きました。

っていうのは嘘であることを早めにお伝えしておきます。

仲良しの方が何名もLTしてたので、思ったことを正直にコメントし続けてました!
好き勝手に暴言吐いた思い出を振り返るのも楽しそうですがやめにして、
とりあえず女豹みたいな方の写真だけ拝借しておきます。

しかしまぁ毒舌というのが考えものだってことは事実ですね。

こういうスタンスで、相手との関係とか相手のキャラとか…
自分では考えたり顔色をうかがったりしているつもりでも
傷つけてたってこと何度もあるので。最近もあった。
ということで好評もいただいたのに残念ですが、これまでの毒舌はここで封印して

慎重な毒舌を目指そうと思います。


…えっと、ふざけてばかりいないで最後にポエムを投下しておきます。

今回のコミュニティに関するパネルディスカッションを受けて、
JJUGにしろJava女子部にしろもうちょっと運営を楽しもうと思いました!

最近、安定の技術力不足*1から、これまで以上に
JJUGの幹事としては雑魚すぎる」「技術が出来ないからせめて雑用くらいはやらねばならぬのかもしれん」「Java女子部の部長名乗るの恥ずかしい」
などと感じることが増えていたんです。
それで、目立たんほうがいいなと思ったり、幹事/スタッフ感あるツイートをしかけてやめたり
といったなかなかアホなことを真面目にやるようになっていました。

しかし、まーやさんブログにあるうらがみさんのコメントじゃないですが、
そうやって義務とか負い目とか感じながら無理してやるのって本当に意味がない…!

心の中のリトルよこなが「あいつアホのくせに運営とかやってるぅ」としきりに申しており
不安になっちゃってたんだけど、そういうひねくれた心はいったんしまって、
ハッピーな気持ちで続けていければなと思いました。

まぁそれもあって懇親会司会を全力で楽しんでしまったわけなんですが、
要はあの快感を忘れずにいようということですね!!え。ちょっと違うかな。え。

ちなみに!!!去年秋のCCCでJava女子部についての報告をしてから1年経ちました。
当時のブログエントリ読んでみても、
もっと純粋な気持ちで色々トライしていたんだなということが分かってよいです。

そんなこんなで、激動の1年を振り返りまた成長するきっかけをくれたという意味でも、
よいJJUG CCCでした。
ただ、ひしだまさんにお会いできなかったのは一生の不覚。

次回はこそ登壇…はハードル高いかもしれんけど、とにかくCfPを出すのが目標です!

あ、最後の最後に。
後半ネガティブ感が滲み出ているとはいえ
慰めや励ましを求めるエントリではなくただの振り返りであることをお伝えしておきます。
おちこんだりもしていないけれど、私はげんきです。

追伸:@irofさんありがとうございます。

*1:分かってるなら努力しろっていうの今はナシ

IntelliJ IDEAのabbreviationというのを見つけた

IntelliJ IDEAの色々なショートカットキー、活用出来たら色々速くなりそうだよね。
でも覚え辛かったり、組み合わせの数に限りがある中好みのキーがほかで使われていたり…
人生甘くないっぽい。

そこでabbreviationが時々便利なのではと私の中で話題に!(さっきまでこんなん知らなかった)

環境

概要

何かというと、
ある機能に対し、その名の通りabbreviation(略語)を割り当ててらくらく呼び出す
というもの。

使い方

  1. を2回叩いてSearch Everywhereをひらく
  2. abbreviationを入力する

設定の仕方

  1. + ; -> Keymap をひらく
  2. 設定したい機能にAdd abbreviationする

イメージ

GitHubCreate Gist機能にgistというabbreviationを割り当ててみた! f:id:ihcomega:20151124193155g:plain

x 2 -> gist -> return で新しいgistを作れる。

発見の経緯

Diagram機能を呼び出すショートカットキーのデフォルトが覚えづらかったので
設定変えようと思ったら緑色で囲まれたumlの文字を見つけたこと👀
f:id:ihcomega:20151124194439p:plain
なんだこれ→ぐぐるJetBrainsのページで把握( ˘ω˘)

おまけ

abbreviationっていう単語のスペルと意味を二度と間違えなくなるというメリット。

うーん、時々便利っぽい。おわり。

Scala関西Summitの関数プログラミングことはじめを復習した #scala_ks

遅ればせながらScala関西 Summit 2015の復習です。2015年8月1日(土)開催でしたw
関西に来てすぐの頃、Scalaを1文字も書いたことがないのに参加しました。

最近は遂に職場でScalaを書くことに…(震)となっている私ですが、
@kitora_naokiさんの【ハンズオン】関数プログラミングことはじめ
ものすごく分かりやすかったのを思い出し、要点を再度確認しました。

"関数型言語っぽい書き方っぽいことはほとんどやったことなく、
コード見ても何これワカランとなる人(私)"にとてもよいハンズオンだったと思います*1!!
すこーし数学の話も出てきましたが、文系数学(?)の知識だけで全然問題ないレベルで
むしろ数学さんが全力で理解を助けてくれてね、本当に助かりました。
なお、当日はScala Worksheetを使って進めていきました。

10/24追記:@kitora_naokiさんが資料アップしてくださったー!!!


はい。さて行ってみよう。
ポイントは1つで、漸化式と同じ考え方をすること!!!

def f(n: Int): Int =
  if (n == 0) 5
  else f(n - 1) + 3

さてこれ、何をしているか。Javaの頭だとぱっと見「?」となったりする…。

そこで漸化式の考え方を脳みその古い箪笥から引っ張り出してくるのだ。
結論から言うと、上は初項5、公差3の等差数列なんですね*2
高校だか中学だかで習った数学だとこういう書き方をしたはず。

a1 = 5
an+1 - an = 3

はい。どうでしょうか。私は、
はぁぁあああなるほどああうおああぁぁあああって。なりました。

例えば3番目の項を求めたいとします。
分かりやすいよう試しに上の漸化式を地道に辿ってみましょう。

a1 = 5
a2 = a1 + 3 = 8
a3 = a2 + 3 = 11

ここで話を戻してはじめに例示したScalaのコードで同じことを考えると…
さっきまで読み解きづらいと感じていた関数ですが、上の漸化式と同じことしてると考えれば

f(2)

11が返ってくる、というのもかなり納得できます。


「何をそんな初歩的なことを」とか「コードから直接それを読み取ればいいのに」とか
思われるかもしれませんが、

  • Scalaを読み解く:新しくて、チャレンジングなこと
  • 漸化式の考え方を使う:多少なじみある発想で、すんなり理解しやすいこと

なのです、私にとっては(伝わるかなぁこの違い…)。
読めんと思った未知のコードを、脳みそにある既存のフロー(?)につっこんで処理出来た感じがして
はぁぁあああなるほどああうおああぁぁあああって。なりました。
解釈の仕方を掴んだというか…。


1時間のセッションだったので他にも色々な例を出して下さいましたが、
正直さっきの一例で私のアハ体験については語り尽くすことが出来ちゃった…。

おまけに当日のノートが手記はここで途切れている状態なので(どうした)
あとは思い出せる範囲でコードだけメモ書き程度に残しておきます。
私みたいな超初心者の方、この記事が目に止まったら、何が起きているか考えて
頭の体操してみてください!w
@kitora_naokiさん、本当にありがとうございました。


def f(n: Int): Int =
  if (n == 0) 0
  else f(n - 1) + n

0からnまでの和が出せます。f(10)だったら55ですね。
n-1までの和に、nを足しているんだなぁとすんなり理解できます。
༄༅༄༅༄༅༄༅༄༅༄༅

def f(n: Int): Int =
  if (n == 0) 1
  else f(n - 1) * n

こんどは、0からnまでの積です。
༄༅༄༅༄༅༄༅༄༅༄༅

def f(n: Int): Int =
  if (n == 0) 1
  else if (n == 1) 1
  else f(n - 2) + function(n - 1)

フィボナッチ数列
༄༅༄༅༄༅༄༅༄༅༄༅

def sum(list: List[Int]): Int =
  if (list.isEmpty) 0
  else list.head + sum(list.tail)

リストの要素の和!
༄༅༄༅༄༅༄༅༄༅༄༅

def multiple(list: List[Int]): Int =
  if (list.isEmpty) 1
  else list.head * multiple(list.tail)

リストの要素の積!

並べただけですが、おしまいでーす。


✪おまけ
IntelliJ IDEAにたくさんうずまき🌀が出てきて何かと思ったら
recursiveということを教えてくれていました🌀🌀🌀🌀🌀
f:id:ihcomega:20151018173258p:plain

*1:うろ覚えですが…あくまでも関数プログラミングはじめの一歩を踏み出すためのコードですというようなことをおっしゃっていた気がします。違う観点で見ると直したくなるようなコードがあるということかもしれません。確か末尾最適化がどうとかこうとか。まぁ今の私にはその判断もつきませんすみませんすみません…

*2:たしかハンズオンの際は、ここまで簡単な例は出なかった気がします。分かりやすさのため、私が勝手に等差数列を持ち出しています〜

PyCon2015パネルディスカッションに参加した #pyconjp

10月10日(土)はPyCon 2015におじゃましました。

PyLadiesの@a_macbeeさんにお誘いいただき、
パネルディスカッションに参加させていただいたのでした('o')!!

テーマはこちらにあるとおりです。
性コミュニティメンバーで集まってわいわいおはなしするということで
@a_macbeeさんとDjango Girlsの@mamix1116さん、
そしてRails Girlsの@emorimaさんと一緒に登壇しました。


様子です。本名とか社名とか写真とか出すのも初めて…(=o=)

簡単に、ランダムに、振り返ってみようと思います。

内容

togetter.com
Togetterまとめがあります、ありがとうございます!
話したことも大体ツイートしていただけているのでこちらのまとめに入ってますが、
一番言いたいことを出だしで結構語ることが出来たのが有難かったです。
https://twitter.com/M_T_Asagi/status/652751999369244672
ちなみに、しょうもないですが以下自己紹介資料ですw

(〜'-')~10/12(月)追記~('-'〜)
当日の動画ありましたw
t.co
姿勢とか気をつけたと言った割に案の定かなりキョロキョロそわそわしていました…
ぐぬぬ
(〜'-')~追記ここまで~('-'〜)

感想

  • きっとそう感じるだろうと思ったけどやはりあっという間でした。
  • 2階席まである大きな部屋でしたが壇上から聞いている方の顔がよく見えて、
    表情や反応がうかがいやすかったのが嬉しかったです。

他コミュニティの話を聞いて思ったこと

  • みなさん国際的でした…!Java女子部も海外進出出来たら楽しそうだなぁ〜。
  • Django GirlsさんとRails Girlsさんは何度も使える初心者向けカリキュラムを
    用意してあるらしく、すげーーなんて思いました。
    同じ内容を繰り返すのって、改善を重ねていってどんどん勉強会がよくなりそうですね。

気をつけたこと

  • 姿勢をよくすること…w
    いつもとても猫背だったり、前回のJJUG CCCでLT待ちのとき足広げてて叱られたり(アカン)
    そわそわキョロキョロしてたり、声が震えたり、スライドばっか見たり
    思いを伝える上で妨げになるような行動をとりがちなので
    出来るだけそういうのは避けようと意識したつもり…では…あります…(出来てないかも)。

反省したこと

  • 空気の読み方?というんですかね。
    話したいことを伝えきれなかったり、長く喋りすぎたり…
    持ち時間を自分だけで使うわけではないというのがチャレンジングで
    あんまりうまくいかなかったなぁなんて思いますねぇ。


今書き留めておきたいことは以上ですかねー。
聞きに来て下さったみなさま、誠にありがとうございました。

また、こんなに貴重な経験をさせていただき、
誘って下さった@a_macbeeさんには感謝感謝アンド感謝です。
@mamix1116さん、@emorimaさんもありがとうございました。
そして、
PyLadiesとJava女子部を最初に繋げて下さった@maaya8585さんもありがとうございました。

うん、ひたすらありがとうございました。
今後ともJava女子部をどうぞよろしくお願いいたします。
コミュニティの壁がないイベント、また出来ると嬉しいなぁと存じます。

(割と真面目に書いたの久しぶり!とか思ったけどいつも真面目だった。)

転勤した話

退職エントリならぬ転勤エントリですが、
京都所属にしてもらいました。京都市内に住んでます。

色々と理由があって決めました~٩(•౪• ٩)


よくある質問

  • お客さんが京都にいるの? -> NO
    自社開発なのでチガウヨ
  • 京都でのプロジェクトのため? -> NO
    東京に残ったとしてもやる仕事は同じだしチガウヨ
  • とばされたの? -> NO
    一応希望を聞いていただき自分で決めたことなのでチガウヨ

割とよく東京来る(今も東京に居る)し勉強会顔出したりするので
関東のみなさまこれからもどうぞよろしくお願いいたしますー。
関西のみなさまこれからどうぞよろしくお願いいたしますー。

f:id:ihcomega:20150926202258j:plain 区役所と間違えて行った京都市役所(かなしい)

IntelliJ IDEAのContent Rootを設定する

9月27日(日)はJava女子部のGradle勉強会です。
@mike_neckさんがGitHub専用のリポジトリを置いてくださっています。
その内容が充実しているためとても勉強になるだろうと大変楽しみ!!!

で、予習の際、IntelliJ IDEAについて得た知見を書いておきます。
Content Rootという概念('o')

先に私の身に起こった事象を説明するんだけど
上のGitHubリポジトリ行くとこんな風にいっぱいフォルダやファイルがあるのね。
f:id:ihcomega:20150924073703p:plain

こいつを普通にcloneしてIntelliJ IDEAで開くとこうなった。
f:id:ihcomega:20150924073716p:plain
おう、ファイルしかない。明らかな不足・・・!

( ˘•ω•˘ ).。oஇ

何でこうなっているかというと、Content Rootが指定されてないからみたい。

✈ Content Rootとは

  • 軽くぐぐるとどうやらJetBrains用語?
  • IntelliJ IDEAのContent Root説明ページはコチラ

    上記説明ページの Basicsという部分だけ少し読んでみると
    Content Root = 一番上の階層にあるフォルダ のことみたい(イメージ通り…)
    何かひとつのモジュールを構成する全ファイルが入ったフォルダ、のように書いてある。
    なおContent Rootは複数指定できるけど、大概ひとつで十分。
    Content Rootが必要ないケース*1もあるでしょう、とのこと。

✈ Content Rootの設定の仕方

IntelliJ IDEAのバージョンは14.1.4 ULTIMATE

  1. + ;Project Structureというウィンドウをひらく
  2. Project SettingsModules+ Add Content Rootする
  3. 選ぶ f:id:ihcomega:20150924161717p:plain
    ここだよ↑

今回だとjavajo-gradleを選択して・・・
できた!
f:id:ihcomega:20150924073719p:plain

設定画面を閉じると…よい感じですね(左側Project部分のトリミング) f:id:ihcomega:20150924075652p:plain

ハッピー!でも今までこんなことなかったな・・・。

まぁまぁ。というわけで、
9月27日(日)はJava女子部のGradle勉強会です。
9月27日(日)はJava女子部のGradle勉強会です。
9月27日(日)はJava女子部のGradle勉強会です。

おしまい。

*1:たとえば、"他のモジュールに対して依存するモジュール群を提供するため"といった役割で使う時とか(参考:Modules without content roots: Collections of dependencies

Ansibleが便利だと聞いたので試そう

せろさんとかたんごさんとかあねしがよく話しているAnsible!

Homebrew使ってMacに必要なものを揃えるやつ書いた!ちょっと必要だったので!
よく分からないシェルスクリプトも書いたけどよく分からない!

github.com

本格的な(?)カックイイ使い方は知りません!!!
寝てないからか、夜中だからか、テンション高くなってしまった!おわり