tag:crieit.net,2005:https://crieit.net/tags/%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC/feed 「アドベントカレンダー」の記事 - Crieit Crieitでタグ「アドベントカレンダー」に投稿された最近の記事 2022-03-09T17:06:28+09:00 https://crieit.net/tags/%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC/feed tag:crieit.net,2005:PublicArticle/16403 2020-12-22T03:28:56+09:00 2022-03-09T17:06:28+09:00 https://crieit.net/posts/b4327f9b22f803820145fdd55168f5e0 チンタラ英語を勉強していくつもりが、いつの間にか変な所に来てしまった話 <p><a href="https://crieit.net/">Crieit</a>の、<a href="https://crieit.net/advent-calendars/2020/crieit">なんでも Advent Calendar 2020</a> 21日目の記事として投稿させて頂きました。</p> <p>福岡で物流系のエンジニアやってる、かきそふとです。</p> <p>思いつきから英語の勉強を初め、英語で日記を書き続けて 500日程経過しました。</p> <p>その他には、オンライン英会話を1日 30分ほど、あとは個人的に教わっている先生が、カナダ・イギリス・スペインに居て、週1で1時間ほどレッスンを受けています。</p> <p>あとは Language Exchange Partner(「日本語を教える代わりに、英語を教えて」という間柄) と不定期に連絡を取っています。</p> <p>別に大それた目標があったわけではなく、「仕事、英語との親和性が高いんで、やっといて損はないか」程度のノリで始めました。<br /> が、特別英語が好きなわけでは無いので、何か工夫をしないと途中で投げ出す事は目に見えている。</p> <p>そこで、継続させるために色々と工夫をしていたら、結構面白い事もあったんで、それを書き連ねていきます。</p> <h2 id="英語で日記を書いてみた"><a href="#%E8%8B%B1%E8%AA%9E%E3%81%A7%E6%97%A5%E8%A8%98%E3%82%92%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%BF%E3%81%9F">英語で日記を書いてみた</a></h2> <p>現在も継続中。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-en-talk.com/">kaki en talk ~英語が苦手な日本人エンジニアが書く 英語の日記~</a></p> <p>継続期間は 16ヶ月と長いものの、トップページの「Author」を「Auth<em>e</em>r」とずっとスペルミスしていたのを最近ようやく直したという何だかもう恥ずかしい入り口となっておりました。<br /> 書いた英文は凄まじい怪しさを放っているので、先生に添削してもらってます。</p> <p>書き始めるきっかけは、こんな感じ。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-note-02.netlify.app/2019/09/01/">英語で日記をつけて50日ぐらい経ちました。それまでの経緯とか。</a><br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-note-02.netlify.app/2019/09/02/">英語で日記をつけて50日ぐらい経ちました。(全体の構成編)</a><br /> (※「50日」は、上記のブログを書いた頃の継続日数)</p> <blockquote> <p>(要約)<br /> 小さい子供たちに邪魔されて、全然趣味のコードを書く事に集中できんのじゃあ!<br /> よし。それなら邪魔されても気にならない事(別に好きでもないこと)をやろう。<br /> という事で、英語で日記でも書いてみるか。</p> </blockquote> <p>添削は英語が得意な知人にお願いした。<br /> が、新しい事業の立ち上げで忙しくなったので、途中から断念。</p> <p>義理の姉が海外で生活していた経験があるので頼んでみた所、快く引き受けてくれました。</p> <p>ちなみに義理姉、確か5~6国語ぐらい話す事ができ、瞬間映像記憶なる超特殊能力を保持しているという、何かもうワケ分からない人。</p> <p>東大を余裕で合格できる学力がありながらも、「近いから」という理由で地元の大学に行き、それを全力で先生全員から止められたというスラムダンクの流川楓みたいなエピソードがあったりする。</p> <p>そんな素敵な才女である義理姉の旦那(私の兄)は、「出身は鈴蘭高校です(漫画「クローズ」に出てくる超ヤンキー校)」と言ってしまうようなお茶目さんで(実際にヤンキー校出身。学生時代、前述の「クローズ」や「ろくでなしブルース」のようなバイオレンスな世界に生きていた)、そのあまりの不釣り合いっぷりに、結婚前に</p> <p>「何でコレ(ウチの兄)を選んだんですか!?考え直してください!今ならまだ間に合います!」</p> <p>と心配して声をかけるも、</p> <p>「もう既に色々な人に言われてるんで大丈夫ですw」</p> <p>とにこやかに返してくれました。<br /> ちなみに同じ事をウチの両親にも言われたらしい。どんだけやねん。</p> <p>そんな元ヤンのウチの兄、現在は介護職に落ち着き(ハタから見てる分には天職みたい)つつも、副業でオカリナ吹きをやっており、時には有料、時にはチャリティーでコンサートを開催し、「オカリナ福祉士」というワケ分からん肩書きで様々な活動をしつつ、時には YouTuberやってたり有名どころのバンドとコラボしてたりと、意味不明な行動力があったりする。</p> <p>話が逸れた。英語の日記だ。<br /> 200日を越えたあたりで、「英語で日記を書き続ける事で、何を得る事ができたか」をまとめときました。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/effect-of-writting-english-diary/">英語で日記を200日書き続けたら、様々な学びがあった。</a></p> <p>自分で言うのも何だけど、結果のみでなく実際に書いてきた日記と突きつけ合わせながら効果を検証した、読み応えのある内容になっていると思う。</p> <h2 id="英語でスライド作ってみた"><a href="#%E8%8B%B1%E8%AA%9E%E3%81%A7%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F">英語でスライド作ってみた</a></h2> <p>こんなの作ってみました。<br /> <a target="_blank" rel="nofollow noopener" href="https://kakisoft.github.io/what-i-got-from-writing-an-english-diary-for-5-months/slides/">WHAT I GOT FROM WRITING AN ENGLISH DIARY FOR 5 MONTHS</a><br /> ※ 「5 MONTHS」は、スライド発表時の継続日数</p> <blockquote> <p>(要約)<br /> 英語で日記書いて5ヶ月経ったけど、まだ全然ダメだよ!<br /> でも、少しは上達してるし、得られるものもあった。<br /> これからも継続したいけど、実は問題が・・・<br /> 実は、添削をお願いしている先生が、ご妊娠されたので、新しい先生を探しています。</p> </blockquote> <p>そう。おめでたい事に、義理姉には新しい命が宿っていたのです!<br /> おおーーー!!めでたいーー!!</p> <p>ちなみに現時点では元気な男の子が生まれており、すくすくと育っております。<br /> 兄の悪影響で、名前に「龍信(「クローズ」の登場人物の名前)」とか付けたらどうしようかとちょっとドキドキしていたが、特に変な名前が付けられる事はありませんでした。よかったです。</p> <p>多分、義理姉が上手い事制御してくれているのだと思います。</p> <p>これがきっかけで、新しい英語の先生を探す事になりました。</p> <p>その時の内容は、こんな感じ。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/i-am-looking-for-my-teacher/">【英語学習】英語日記の添削をお願いできる方を探しています。</a><br /> 「こんな方にお願いしたい」といった人物像および自分の学習スタンスをはっきりさせておきました。</p> <h2 id="学習記録を残した"><a href="#%E5%AD%A6%E7%BF%92%E8%A8%98%E9%8C%B2%E3%82%92%E6%AE%8B%E3%81%97%E3%81%9F">学習記録を残した</a></h2> <p>色々な勉強法を試していく中で、「これは合わない」という勉強法が分かったり、<br /> 「こんな方法はどうだろ?」というのをいくつか試してみたり、<br /> 「こんな方法が合ってる」というのが分かってきたりしたので、メモを残す事にした。</p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/boxing-is-my-great-teacher/">英語学習で大切な事は、ボクシングが教えてくれた</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/the-road-to-edison/">英文法の第2文型が今でもさっぱり分からない。しかし、それはエジソンに続く道だった!?</a></p> <p>自分の学習スタンスをはっきりさせ、その意見に肯定的な意見を示してくれる方にお願いしたいと思っていたので、この辺りは文章化しておきたかった。<br /> 実際、探す時は上記のブログのエントリを使いました。</p> <h2 id="オンライン英会話を試してみた"><a href="#%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E8%8B%B1%E4%BC%9A%E8%A9%B1%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F">オンライン英会話を試してみた</a></h2> <p>「とにかく会話する時間を増やそう!」という事で、色々なオンライン英会話を試してみた。<br /> とりあえず DMM英会話に落ち着いたものの、やっぱり合わないと感じ始めていた。</p> <p>DMMが悪いという事ではなく、「英会話教室」というシステムそのものが自分に合わない気がしてきていた。<br /> 詳しくは以下を。</p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/impressions-of-some-online-english-lesson/">オンライン英会話サービスをいくつか利用してみた感想と、今後の方向性について</a></p> <h2 id="専属の先生を探してみた"><a href="#%E5%B0%82%E5%B1%9E%E3%81%AE%E5%85%88%E7%94%9F%E3%82%92%E6%8E%A2%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F">専属の先生を探してみた</a></h2> <p>英会話の以下の点が合わないと思った。</p> <ul> <li>毎回、その場限りの会話をするのが虚しくなった</li> <li>講師の当たり外れが大きい</li> <li>会話のネタを探すのに困る事がある</li> </ul> <p>そして、以下のスタンスで会話をしたいと思った。</p> <ul> <li>特定の講師から習いたい</li> <li>教えてくれる方は、スペシャリストでなくてもいい</li> <li>緩い雰囲気で、ざっくりなトークがしたい</li> </ul> <p>そんなスタンスで探してみようかと思ったのをまとめたブログがこちら。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/solution-for-learning-english-online/">オンライン英会話サービスを利用してみた結果、別の学習法を試したくなった話</a></p> <p>こちらも無事、見つける事ができました。</p> <h2 id="何だかんだでオンライン英会話を続けてる"><a href="#%E4%BD%95%E3%81%A0%E3%81%8B%E3%82%93%E3%81%A0%E3%81%A7%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E8%8B%B1%E4%BC%9A%E8%A9%B1%E3%82%92%E7%B6%9A%E3%81%91%E3%81%A6%E3%82%8B">何だかんだでオンライン英会話を続けてる</a></h2> <p>とりあえず、自分の要望を満たす事はできたものの、退会まで猶予があるな。どうしよう。<br /> ・・・と思い、せっかくなんで色々試してみた。</p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/how-to-use-different-online-lessons/">オンライン英会話レッスンを使い分けてみようと思った話</a></p> <p>正直、英会話講師との会話に虚しさを感じ始めていた頃だったので、「どうやったら面白くできるか」ばかりを考えるようになった。<br /> 何だかんだで現在まで続いていて、少しは楽しめるようになっています。</p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/lets-talk-about-watersports/">英会話レッスンなんてどうでもよくて、海のレジャーについて聞きたくなった話</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/lets-talk-about-english-tutors-lover/">オンライン英会話にて、講師がデートをしていた場合に使えるフレーズ集!</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/various-faction-in-english/">「猫派」は英語で「cat person」。ほかに、どんな派閥があるのか調べてみた</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/useful-phrases-to-ask-correct-expressions-in-online-lesson/">【英会話】カタコト英語ではなく、講師から「正しい表現」を聞きたい!そんな時に使えるフレーズをご紹介。</a></p> <h2 id="英語日記の書き方を変えてみた"><a href="#%E8%8B%B1%E8%AA%9E%E6%97%A5%E8%A8%98%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9%E3%82%92%E5%A4%89%E3%81%88%E3%81%A6%E3%81%BF%E3%81%9F">英語日記の書き方を変えてみた</a></h2> <p>英語日記を書き続けて 400日ほど経過したところ、今後伸ばしていきたいスキルの方向性を考え、別のスタンスで進めたくなった。<br /> 日記を書く事で、ついでに会話能力もあげられないかと思ったが、案外そうでもなかった。<br /> 具体的には以下の点に気付き始めたので、方向転換をしてみたくなった。</p> <ul> <li>「書く」と「話す」は、表現方法が異なる</li> <li>インタラクティブ性が鍛えられない</li> <li>リアクション時に使う言葉のボキャブラリが全く増えない</li> <li>文章化するのは結構大変</li> </ul> <p>詳しくはこちらを。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/revising-the-diary-method/">英語日記を1年続け、方向性を見直してみようと思った話</a></p> <p>具体的には、<br /> 「文章として書くのではなく、あたかもチャットをしているかのように書く」<br /> というスタンスに切り替えた。</p> <p>自分にとっては効果絶大で、どのくらいの成果があるのかは以下に書きました。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/chat-style-diary-is-great-tool/">英語日記をチャット形式で書いたら、想像以上に大きな学びがあった</a></p> <h2 id="英語で技術ブログ書いてみた"><a href="#%E8%8B%B1%E8%AA%9E%E3%81%A7%E6%8A%80%E8%A1%93%E3%83%96%E3%83%AD%E3%82%B0%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%BF%E3%81%9F">英語で技術ブログ書いてみた</a></h2> <p>DEV に投稿てみた。<br /> <a target="_blank" rel="nofollow noopener" href="https://dev.to/kakisoft/fibonacci-estimation-method-to-minimize-the-harmful-effects-of-death-march-of-engineers-4a0e">fibonacci estimation method to minimize the harmful effects of death march of engineers</a></p> <p>「英語記事→日本語」の方向はよく見るけど、「日本語→英語」の技術記事はあんまり見ないな。<br /> と思い、書いてみた。</p> <p>ちなみに、元記事はこちら。<br /> <a target="_blank" rel="nofollow noopener" href="(https://www.jabba.cloud/20170613054635/">フィボナッチ工数見積は「完成させます!(徹夜で)」という無理ゲーによる弊害を最小化するプロジェクトマネージメント手法</a></p> <p>※元記事の作者から許可を頂いたうえで執筆しております</p> <p>元記事の<a target="_blank" rel="nofollow noopener" href="https://twitter.com/nodenodenode1">@ジャバ・ザ・ハットリ</a>さん、ありがとうございます。</p> <p>書いた英文は、先生にチェックをお願いしました。<br /> 読むのは数分ですが、完成までに8時間ぐらいかかりました。<br /> 現在、2つ目を執筆中。こっちは元記事が自分が書いたものなので、だいぶ楽。</p> <h2 id="その他のアウトプット"><a href="#%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88">その他のアウトプット</a></h2> <p>英語スライド:パート2<br /> <a target="_blank" rel="nofollow noopener" href="https://kakisoft.github.io/slide/accounting-for-engineers/export/index#/">Accounting for engineers(エンジニアの会計)</a><br /> エンジニア向け英語LTイベント<a target="_blank" rel="nofollow noopener" href="https://try-english-lt.connpass.com/event/191090/">第7回 Try English LT! for engineers</a>様にて発表させて頂きました。</p> <p>オンライン英会話で起こった面白かった出来事をネタに、ブログエントリにした<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/dialog-example-if-you-ask-tutor-his-github-account/">「オンライン英会話の先生の GitHubアカウントを聞いたら、全然違う人だった!というかエンジニアですらなかった!」 そんな時に使える会話例</a></p> <p>一見、「こんなクールなサイトができたぜ!」と錯覚させる事ができるものの、しょーもない事しか言ってないネタサイト。<br /> <a href="">https://atarima-e.studio.site/</a></p> <h2 id="現在の状況"><a href="#%E7%8F%BE%E5%9C%A8%E3%81%AE%E7%8A%B6%E6%B3%81">現在の状況</a></h2> <p>そんな感じで、ダメなりに色々とアウトプットを続けている状態です。</p> <p>「Xヶ月で英語ペラペラに!」と、短期で走りきる目標を立てるのではなく、「惰性で続けられるようにしよう」と、継続に主眼を置いたところ、こんな感じになりました。</p> <p>現在の状況としては、<br /> 「せっかくここまで続いたんだから、ここで辞めるのも勿体ない」<br /> と、より思ってるんで、こんな感じでしばらく続けて行こうかと思います。</p> かきそふと tag:crieit.net,2005:PublicArticle/16099 2020-10-04T23:18:52+09:00 2020-10-04T23:37:31+09:00 https://crieit.net/posts/edbca6f6b9d3492bdeebf80276138151 企業に所属する前に、大学で学んで良かったこと、もっと学んでおけば良かったこと <p>本記事は、 Qrunch からの移転記事です。</p> <p>移転元: <a target="_blank" rel="nofollow noopener" href="https://morichan.qrunch.io/entries/ni2p1QmGObHGkmlQ">企業に所属する前に、大学で学んで良かったこと、もっと学んでおけば良かったこと - 雑木林</a></p> <h1 id="TL; DR"><a href="#TL%3B+DR">TL; DR</a></h1> <p>必要になって、自ずと勉強できれば、それで大丈夫です。<br /> 気軽に生きていきましょう。</p> <p>でも、読書だけはガチでやっておきましょう。<br /> 大学で読みたい本は、全て読み切ることをオススメします。</p> <h1 id="社会人枠です"><a href="#%E7%A4%BE%E4%BC%9A%E4%BA%BA%E6%9E%A0%E3%81%A7%E3%81%99">社会人枠です</a></h1> <p>本記事は、<a target="_blank" rel="nofollow noopener" href="https://qiita.com/advent-calendar/2019/university-of-miyazaki">宮崎大学アドベントカレンダー2019</a>における8日目のエントリー記事です。</p> <p>ペーペーですが、これでも社会人として生活しています。<br /> ちょっと前まで学生だったので、学生時代に得たものを整理したいなと思いました。</p> <p>学生さんは、ご参考までに、今後の学生時代を謳歌してください。<br /> そうでない方は、自分もこんな時代があったと、ノスタルジーに浸ってください。</p> <h1 id="学んで良かったこと"><a href="#%E5%AD%A6%E3%82%93%E3%81%A7%E8%89%AF%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8">学んで良かったこと</a></h1> <p>以降、大学で学んで良かったことを記述します。<br /> 自慢話みたいなものです、温かく眺めてください。</p> <h3 id="対人コミュニケーション"><a href="#%E5%AF%BE%E4%BA%BA%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3">対人コミュニケーション</a></h3> <p>学生時代にお酒を飲むようにしていたのは、社会人はお酒を飲めたほうがいいのかな、と漠然と考えていたからですが、大当たりでした。<br /> 私の所属しているプロジェクトチームは、学生時代の研究室以上に飲み会が多く、2次会も何度かありました。<br /> 2次会を楽しめる人間でよかったなと、2次会に参加するたびに思っています(だいたい奢ってくれます)。</p> <p>あまり口数は多くないですが、Slackなどのコミュニケーションツールでは喋るようにしています。<br /> 自身の<a target="_blank" rel="nofollow noopener" href="https://note.com/vaaaaanquish/n/ncc512cf0e263">timesチャンネル</a>があるため、独り言を言いやすい環境でもありますが、ネット弁慶時代の性格をうまく活用し、ネット上では話しやすい雰囲気を務めています。<br /> お蔭で、プロジェクトチーム外の人からも話しかけられることが多く、自身からも質問しやすく、社内の雰囲気は良好です(個人の感想です)。</p> <p>仕事は人対人のコミュニケーションで成立しているため、コミュニケーションを避けては通れません。<br /> しかし、話せれば良いわけではなく、しっかり会話が成立し、人間関係を良好にすることが肝心です。<br /> 人間関係が良くなれば信頼してもらえますし、そうなれば新人であっても、けっこう話を聞いてもらえます。<br /> これを活用し、自身からの提案が通ったりすると、仕事も楽しくなりますよ。</p> <blockquote> <p>コミュニケーションが苦手?――なら「なたもだ」で解決すればいいじゃない<br /> <a target="_blank" rel="nofollow noopener" href="https://www.atmarkit.co.jp/ait/spv/1912/11/news005.html">https://www.atmarkit.co.jp/ait/spv/1912/11/news005.html</a></p> </blockquote> <h2 id="自動化への意識"><a href="#%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%B8%E3%81%AE%E6%84%8F%E8%AD%98">自動化への意識</a></h2> <p>現在の所属プロジェクトには、CI/CD環境が一部整っていますが、すべてが自動化されているわけではなく、非常にまどろっこしく感じる時があります。<br /> しかし、中には機械的に淡々と同じ作業をしている人もいるため、メンバー全員が自動化を考えているわけではないのだな、と意外に思いました。</p> <p>とあるシステムに、バイナリファイルを手動で設定しなければならないディレクトリがありました。<br /> そのバイナリファイルを更新するためには、手動でコンパイルしたバイナリファイルを、手動で上書きし、手動でプルリクをしなければなりませんでした。<br /> 私は嫌だったので、自動化したいと提案し、そして実装しました。</p> <p>人手による作業はヒヤリハットの温床になるため、できるだけ潰しておきたいです。<br /> その考え方が、私の自動化への意識を生み出してくれました。</p> <h2 id="開発環境におけるこだわりと柔軟性"><a href="#%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%81%93%E3%81%A0%E3%82%8F%E3%82%8A%E3%81%A8%E6%9F%94%E8%BB%9F%E6%80%A7">開発環境におけるこだわりと柔軟性</a></h2> <p>現在の所属プロジェクトの開発環境ですが、IDEとしてほぼ全員がVS Codeを使用しています。<br /> しかし、僕だけなぜかVimをメインで使用しています。<br /> 開発環境に対して強制が無かったというのもありますが、PythonならVimでいいかなという気持ちで独自路線を進んだのが、正直な理由です。</p> <p>ですがその際に、チームの開発環境に合わせる必要があります。<br /> VS Codeで利用しているプラグインやLintツールがあれば、それをVimに組込まなければなりません。<br /> 私はVimの設定を多少いじれたので、VS CodeじゃなくてもPythonを編集できることを証明しつづけています。</p> <p>一方で、妥協したものもあります。<br /> 既存システムにRustを使っていたものがあったのですが、代替品としてPythonを使っていたシステムがあり、そちらに移行すべきか否か、という話が持ち上がりました。</p> <p>個人的には、Rustを勉強していたこともあり、Rustを推したい欲がありました。<br /> しかし、他のメンバーはPythonの方が読みやすいです(当時は私しかRustを読めていませんでした)。<br /> 属人化が怖かったため、私からPythonのシステムに変えてほしいと頼みました。<br /> 結果として、多くのメリットが生まれました。<br /> 今でも若干後悔していますが、これで良かったとも思っています。</p> <p>こだわりは大事、妥協も大事です。<br /> 折合いを付けることが重要なことですね。</p> <h2 id="ソフトウェア工学"><a href="#%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%B7%A5%E5%AD%A6">ソフトウェア工学</a></h2> <p>オブジェクト指向という概念を理解できていない人は、意外と今でもいます。<br /> TDD文化がないプロジェクトはたくさんありますし、UMLを正しく読み書きできない人もたくさんいます。<br /> テスト手法とかカバレッジ測定とか、名前は知ってても開発で使える道具にできる人は、あまり多くいません。</p> <p>ソフトウェア工学は、システム開発全般で使える、かなり汎用的な知識を学べる学問だと思います。<br /> 学生時代にCI/CD環境を整えたのは、想像以上に役に立っています。</p> <h2 id="様々なプログラミング言語/ツールの概念や利用方法"><a href="#%E6%A7%98%E3%80%85%E3%81%AA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%EF%BC%8F%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E6%A6%82%E5%BF%B5%E3%82%84%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95">様々なプログラミング言語/ツールの概念や利用方法</a></h2> <p>事前に学習して良かったと思ったプログラミング言語/ツールは、以下の通りです。<br /> これらを学生時代に学んでいたことで、会社のチーム配属直後からスムーズに開発を担当できました。</p> <ul> <li>Perl</li> <li>Git/GitHub</li> <li>CI/CD</li> <li>Slack</li> <li>C++</li> <li>Raspbian/Raspberry Pi</li> </ul> <p>私はPerlを勉強していましたが、それによりRubyやPythonなんて比較的簡単に使えるだろうと自己判断していましたし、実際にチームで開発やレビューを行う立場となっています。<br /> Gitを使っていたことで、GitHubでのプルリクという文化や、コンフリクトとの格闘について、長く苦しめられることもありませんでした。<br /> なにより、CI/CD環境の構築を経験していたおかげで、どのようにシステムをアップデートするのかの概要理解は非常に役立ちました。<br /> ラズパイに至っては、知らなければ使い方すらわからない気がしますが、スムーズにRaspbianをmicroSDカードに焼いて <code>ssh [email protected]</code> できました(簡単なことですが、意外と凄いことだと思いますよ)。</p> <p>これらに関しては、運の要素が結構絡みます。<br /> もし配属先のプロジェクトが、SVNでバージョン管理しているCOBOLシステムサーバーの保守運用(コミュニケーションツールはEメール)みたいな場合、全く役に立たなかった可能性もあります。<br /> 気負わずに、勉強したいことをすればいいと思います。</p> <h1 id="もっと学んでおけば良かったこと"><a href="#%E3%82%82%E3%81%A3%E3%81%A8%E5%AD%A6%E3%82%93%E3%81%A7%E3%81%8A%E3%81%91%E3%81%B0%E8%89%AF%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8">もっと学んでおけば良かったこと</a></h1> <p>以降、大学でもっと学んでおけば良かったことを記述します。<br /> 反面教師として、ご活用ください。</p> <h2 id="Javascript"><a href="#Javascript">Javascript</a></h2> <p>現在のJavascriptについては、殆ど理解できていません。<br /> 流行っているものは勉強したくない、という私の天邪鬼な性格が災いしました。<br /> それは、以下に示す、私の学生時代に使っていた言語からも、お察しできると思います(1つだけ例外あり)。</p> <ul> <li>Perl</li> <li>Java</li> <li>C++</li> <li>Rust</li> </ul> <p>流行というものは、使われているから発生するものです。<br /> 現に、私の所属しているチームでもJavascriptを扱っていますし、もしかしたら私も今後触ることがあるかもしれません。<br /> しかし、基本的な文法ならともかく、JavascriptはPerlやC++と同じくらい闇が深いと考えているため、モチベーションも相まってなかなか触りたいと思えません。</p> <p>すごく勿体ないことですし、自身の性格を直すためにも触ってみようかなと思ったり、逡巡したりを繰返す日々を過ごしています。</p> <h2 id="Webサイト開発"><a href="#Web%E3%82%B5%E3%82%A4%E3%83%88%E9%96%8B%E7%99%BA">Webサイト開発</a></h2> <p>Javascriptの節とも関係していますが、基本的な <code>HTML + CSS + Javascript + Webサーバー</code> という構成Webサイトについては、1度しっかりと勉強したほうが良かったかもしれません。</p> <p>学生時代にふるーいCGIサーバーを触っていたせいで、HTMLはWebサーバーで丸ごと動的生成するものだと思っていました。<br /> HTMLとCSSで体裁を整えて、中の要素だけをWebサーバーで動的生成するほうが、シンプルで疎結合だと気付いたのは、業務で取扱うようになってからです。<br /> HTMLとCSSとJavascriptとWebサーバーの役割を、もっとちゃんと学習すべきだったなぁと反省しています。</p> <h2 id="Docker"><a href="#Docker">Docker</a></h2> <p>とある業務でDockerを触る機会がありました。<br /> そこで、次のようなDockerfileを作ってしまい、動かないなーというミスを2日ほど経験しました。</p> <p>1番目のsetup.shはどうして動かないの?</p> <pre><code class="dockerfile"># 前略 CMD ["bash", "./setup.sh"] CMD ["bash," "./run,sh"] </code></pre> <p>初歩的過ぎるミスなのか、調べてもどこにも「CMDコマンドでは2つのコマンドを実行できない」という文言を見つけきれませんでした(公式サイトにも<a target="_blank" rel="nofollow noopener" href="http://docs.docker.jp/engine/reference/builder.html#cmd">ちょこっと書いてあるだけ</a>でした)。<br /> 今ではDocker無しの生活は考えられませんが、学生時代にちょっとでも触っておけばよかったです。</p> <h2 id="サーバー運用"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E9%81%8B%E7%94%A8">サーバー運用</a></h2> <p>とにかくネットワーク系は苦手でした。<br /> 大学でもネットワークの授業はありましたが、基本的なコマンドさえ頭から消えていました(<code>arp</code>、<code>netstat</code>、<code>iptables</code> などなど)。<br /> しかし、ネットワーク系を触るとなると、インフラを整備するような環境でもない限り、あまり機会が無いと思います。</p> <p>また、基本的なサーバー運用時のイロハも学んでおけばよかったです。<br /> プロセスの整理、インタフェースの把握、デーモンの理解、ネットワーク設定などなど、サーバー運用で学習できる内容は数知れません。</p> <p>学生時代にこれらを学ぶ機会はあまり無いかもしれませんが、せっかく研究室にサーバーがあったのに、使いこなせなかったのは勿体なかったです。</p> <h2 id="ライセンス関係"><a href="#%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E9%96%A2%E4%BF%82">ライセンス関係</a></h2> <p>学生時代、ツールは実質タダ、OSS使い放題の環境でした。<br /> しかし、社会人になるとそう簡単ではありません。</p> <p>学生であればフリーソフトでも、商用になった途端に有料というツールは珍しくなくなってきました。<br /> もし商用利用不可/商用利用有料のツールでしか開発できない人間になってしまうと、非常に苦労すると思います。<br /> 私も、GitKrakenが使えなかったり、CLionが使えなかったりと、ライセンスの壁を認識して過ごしています。</p> <p>またOSSについても、ライセンスが問題になる場合があります。<br /> いわゆる<a target="_blank" rel="nofollow noopener" href="https://www.wdic.org/w/TECH/GPL汚染">GPL汚染</a>と呼ばれるものですが、実際にお金を取得するプロジェクトでは、かなり気をつけなければなりません。<br /> この辺りは、ソフトウェア工学としてフォローできそうな気がします。<br /> ぜひ、どなたか研究してみてはいかがでしょうか?</p> <h2 id="読書"><a href="#%E8%AA%AD%E6%9B%B8">読書</a></h2> <p>本を読む時間が減ります。<br /> 読む気力が残っていない日々ばかりです。</p> <p>大学というのは、タダで高額な書籍の読み放題機関であると心得るべきでした。<br /> 時間もたっぷりあったはずなので、悔やんでも悔やみきれません。</p> <h2 id="料理"><a href="#%E6%96%99%E7%90%86">料理</a></h2> <p>正直、こんなにコンビニ弁当の日々が続くとは思っていませんでした。<br /> 朝はパン、昼は外食、夜はコンビニ弁当のルーティンができてしまい、気付けば5キロ太っていました。<br /> 食費も結構かかります。</p> <p>しかし、想像以上に料理ができません。<br /> 都会の部屋の狭さもあり、効率的な動きを余儀なくされます。<br /> 基本がなっていない人間に効率的な動きを求められても、なかなかうまく行きません。</p> <p>それでも最近は少しずつ自炊をしています。<br /> カレーを作ると2時間、麻婆豆腐を作ると1時間かかりますが......</p> <h1 id="振返って一言"><a href="#%E6%8C%AF%E8%BF%94%E3%81%A3%E3%81%A6%E4%B8%80%E8%A8%80">振返って一言</a></h1> <p>いろいろありましたが、学生時代は楽しかったです。<br /> もちろん、今の生活も楽しいです。</p> <p>なんだかんだ言って、その場その時を生きていける力が最も大切なことかもしれませんね。</p> Morichan tag:crieit.net,2005:PublicArticle/15624 2019-12-19T03:09:13+09:00 2019-12-19T03:13:07+09:00 https://crieit.net/posts/2019-5dfa6b49987e8 2019年を振り返るポエム <p>この記事はcrieitの<a href="https://crieit.net/advent-calendars/2019/crieit">なんでも Advent Calendar 2019</a>の19日目の記事です。前日は<a href="https://crieit.net/users/hammhiko">hammhiko</a>さんによる<a href="https://crieit.net/posts/localhost">localhost監獄</a>でした。localhostに自分専用のアプリが増殖していくのはプログラマあるあるですね!こういったアプリケーションは世に出ることは無いとしても自分の経験や成長につながりますし、なんていうか、盆栽みたいな感じで自分好みに魔改造していくのが楽しいですよね。</p> <p>さてさて、本当ならこの記事には今やっているKubernetesとかGoとかPythonがらみのネタを書こうかなーと思ってたけど、どうにも記事が煮詰まらないまま今日を迎えてしまいました。ということで、ここはポエム…というか、今年1年の振り返りをしようかなと思います。</p> <hr /> <p>自社は地方都市にあり企業の規模はまぁまぁ大きいWeb系企業です。そんなところで、私はいまは小さいチーム(本当に小さい。メンバーの異動と退職が相次いで今はなんと2人!もはやチームではなくてペアと呼んだほうが正しい)のマネージャーをしている。チームの役割としては、インフラのためのアプリケーションを開発したり運用したりしている。個人としては、これまでのプログラマの仕事に加えて、マネージャー業、特に採用活動もやっている。採用活動というのは本当に大変で、自分のチームにフィットする人というのは予想以上にいなかったりする。また、これまでのプログラマとしての仕事が減ることなく、というかむしろ増え続けていて、振り返ってみるとそれなりに消耗した一年になってしまったように思います。</p> <p>突然ですが、今って空前絶後の人手不足じゃないですか。それは弊社でも同じで全然人が採用できない!というかそもそも応募が無い!わけあって、外部のリクルーターを使うのをやめてしまったため、自分で候補者を探す必要があるんだけど、ちょっと知り合ったやつの口車に乗って選考に応募する奇特な人など見つかるはずもなく…。自分の個人的な人脈とかを駆使しても、なかなか応募まで至らなかったりする…人望をどこかに置いてきてしまったらしい…</p> <p>ということで、そもそもなんでこんなに応募が無いのか、あるいは応募してもらうことができてないのかということをここ最近(数ヶ月以上)ずっと考えている。たぶん色々理由はあって、うちに来たらどのくらいのお賃金がもらえるよとか、どういうことをやってもらいたいと思っているよ、とかそういう具体的な話ができないことが多いからということがある。もちろん、ある程度のことは話せるんだけど、なかなか相手に刺さるようなことが言えない。まぁこれは私の会話力が低いからなんだろうけど…</p> <p>いずれにしてもこのまま採用活動しててもなかなかうまいこといかないなーというのが今年の反省。来年はもっとカンファレンスでの登壇とかを増やして自社の知名度をあげるのと、海外遠征も視野に入れて採用活動をしないといけないかもなーと思っている。なにせ地方には人がいない!地元からの応募があれば嬉しいんだけど、なかなかマッチするひとがいない…</p> <hr /> <p>次に技術的な振り返り。去年もそうだったけど、今年もたくさんコードを書いた。なにせ人手不足なものでね…アラフォーですよ、私…35歳定年説はどこいった。まぁそれはおいといて、今年はKubernetesを実戦で使うことができてサービス投入までできたのでそれは良かったなー。まぁ私が関わったのは最初の立ち上げのところまでで、今は別のメンバーが運用しているんだけど…Kubernetesに関しては運用のほうが圧倒的に大変で、だけど、学ぶところが多いのでインフラレイヤーに興味がある人は絶対に触っておいたほうが良い。まぁでも世の中的にKubernetesが必要なサービスってどのくらいあるのか、言うほどKubernetesが必要になることって無いんじゃないかなとは思うけど。もっと簡単に問題が解決できるなら、Kubernetesは無理に使わなくてもいいと思う。Ref: <a target="_blank" rel="nofollow noopener" href="https://endler.dev/2019/maybe-you-dont-need-kubernetes/">Maybe You Don't Need Kubernetes</a></p> <p>多分、今年一番書いたコードはGoだと思う。自分でも意外だったけど、GoでWebアプリケーションを書いたことがあんまりなくって、初めて<a target="_blank" rel="nofollow noopener" href="https://echo.labstack.com/">echo</a>というフレームワークを使った。Flaskとかfalconみたいなマイクロフレームワークを使ったことがある人ならすんなり使えるんじゃないかなと思う。ただ、個人的な感想としては、Goで複雑なモデル操作が必要なアプリケーションは書かないほうがいいんじゃないかなって思う。やっぱりPythonみたいな動的言語と比べると、コード量が増えがちだし、面倒ではある。もちろん型付言語としてのメリットを享受することはできるんだけど。まぁでもGoは楽しい言語だし、使い勝手が良い言語なので、これからもGoをたくさん書くんだろうなーと思う。Goで面白いトピックはなんかあったけなーと思ったけど、面白い話題はだいたい<a target="_blank" rel="nofollow noopener" href="https://dave.cheney.net/">Dave Cheneyのブログ</a>にあるので、これを暇なときに読んでいれば良いと思う。</p> <hr /> <p>えー、次はPythonですかね。Pythonでは別のWebアプリケーションを作った。なんか最近は<a target="_blank" rel="nofollow noopener" href="https://responder.readthedocs.io/en/latest/">responder</a>とかいうWebフレームワークが流行っているらしく、開発者はrequestsとかpipenvを作った人らしい。ということで、まず間違いなく近いうちに主流になってそうなんだけど、色々あってDjangoを使った。というのは別にどうでも良いんだけど、今回は<a target="_blank" rel="nofollow noopener" href="https://pastedeploy.readthedocs.io/en/latest/">Paste Deployment</a>を紹介したい。</p> <p>Paste Deploymentは設定管理のためのソフトウェアみたいなやつで、アプリケーションの設定をスクリプトじゃなくて宣言的に管理することを目的に開発されたもの。また、こいつはDjangoが起動させるWSGIアプリケーションを読み込むことができるんだけど、HTTPリクエストをpipelineで処理させることができる。どういうことか簡単に言うと、自分のアプリケーションに来る前(あるいは後)に別のアプリケーションをフィルターとして置いて、ユーザーからのHTTPリクエストを事前/事後に処理することができる。</p> <p>これの何が嬉しいのか?それは認証処理のような、本来アプリケーションのビジネスロジックとは無関係なものを自分のアプリケーションから切り出すことができる。それにより、自分のアプリケーションは本来集中すべき処理に集中することができるので、余計なロジックを持たなくて良くなる。これにより、テストが格段に書きやすくなる。認証処理を考慮してテストを書くのは本当に面倒で、OAuth的な認証処理とかだったりするときはこういったやり方がとても便利。フィルターを利用したWebフレームワーク自体はそんなに珍しくないし、むしろ古くからあるんだけど、自分のアプリケーションから切り離して利用することができるのは結構珍しいんじゃないかなと思う。どっかで話すことができたら良いな。</p> <hr /> <p>(なんか文字数がこのあたりで2,700を超えてきたので、そろそろまとめに入ろう…)</p> <p>そんなこんなで技術的には色々挑戦できて学びが多かったけど、いかんせん業務量が多くてつらぽよだった…特に採用活動は本当にどうにかしないといけなくて、来年はどうにか解決したい。あと、せっかくcrieitに記事をポツポツと投稿していることだし、個人開発のビッグウェーブに乗りたいところ。アイデアはボチボチあるけど、時間を作らないと…来年はゆとりある暮らしをしたいですな…</p> <p>ということで、3,000字を超えそうなので、このへんで終わりにします。明日は<a href="https://crieit.net/users/kin-mi">きんみ</a>さんです!お楽しみに!</p> shige tag:crieit.net,2005:PublicArticle/15622 2019-12-18T23:20:07+09:00 2019-12-19T13:06:45+09:00 https://crieit.net/posts/localhost localhost監獄 <p>ここはlocalhost監獄。様々なwebアプリやスマホアプリが投獄されて日々を過ごしている。<br /> あなたはアプリを監獄(localhost)にぶち込んだ、検察官であり、裁判官であり、看守(アプリの開発者)である。<br /> 今のあなたの仕事は、囚人(アプリ)を更生(完成)させ外の世界(インターネット)に旅立たせる(リリースする)ことだ。<br /> ところがこの囚人(アプリ)たち、なかなか厄介で、思った様に働いてくれない。<br /> 彼らが日の目を浴びる日はいつくるのやら。</p> <h2 id="さて"><a href="#%E3%81%95%E3%81%A6">さて</a></h2> <p>crieitの<a href="https://crieit.net/advent-calendars/2019/crieit">なんでも Advent Calendar 2019</a>の18日目の記事です。ぎりぎりまだ18日です。<br /> 前日はHataさんの<a href="https://crieit.net/posts/2019-5df9305f35c8a">プログラミングが好きでずっとプログラミングしていたい。2019</a>でした。<br /> ハートフルでなんかこう、好きなことに打ち込むっていいな、と思わせてくれる記事でした。<br /> そんな記事の翌日に、こんな意味のわからんポエムから始まる記事をぶっ込んで申し訳ない。懺悔します。<br /> (あと、たぶん、赤っぽいジャケットの長髪のカツラの人は彦じゃなくて、…きみま…)</p> <h2 id="localhostになんかいる。いっぱい"><a href="#localhost%E3%81%AB%E3%81%AA%E3%82%93%E3%81%8B%E3%81%84%E3%82%8B%E3%80%82%E3%81%84%E3%81%A3%E3%81%B1%E3%81%84">localhostになんかいる。いっぱい</a></h2> <p>さてさて。去年、<a target="_blank" rel="nofollow noopener" href="https://publn-s.xyz/">公共HP検索</a>というサイトを作って以来、実は色々とwebアプリを作ってきました。<br /> そいつらがみんな、<strong>ローカルホストで鎮座している。</strong><br /> 上記のサイトですら閑古鳥が鳴く状態なのですが、それ以外は<strong>世に出てすらいない。</strong><br /> まあ、理由ははっきりしているんですけど。</p> <h3 id="理由1.完成させようとしている"><a href="#%E7%90%86%E7%94%B11.%E5%AE%8C%E6%88%90%E3%81%95%E3%81%9B%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B">理由1.完成させようとしている</a></h3> <p>個人開発の先人方はみんな言っていると思うので、今更なんですが。<br /> 完成させようとしたらいつまでも完成しない。個人開発は締め切りがないのでパーキンソンの法則にしたがって、仕事量が無限に膨れ上がる。<br /> ある程度見切りをつけてリリースしないとダメ。<br /> わかってます。それでもリリースできないのは他にも理由があるからです。</p> <h3 id="理由2.localhostで十分"><a href="#%E7%90%86%E7%94%B12.localhost%E3%81%A7%E5%8D%81%E5%88%86">理由2.localhostで十分</a></h3> <p>これが結構マズい。<br /> そもそも、僕が何かを作る時って、<br /> <strong>こういうの欲しいな、どっかにないかな?→ないなー→よし、作るか!</strong><br /> こんな感じなので、一番の利用者は自分。自分が使うならlocalhostで十分ってなりがちです。出先で使いたいってなっても、最低限で作ってherokuやfirebaseにデプロイして、不安なら認証もかければ十分。<br /> そうやって完成度4割5割のアプリがどんどん増えていく。</p> <p>とはいえ、作りかけのものを友達に見てもらうと(お世辞かもしれないけど)褒めてもらえるので、やっぱり他の人にも使ってもらいたいなという欲はあるんです。<br /> それでもリリースできないのは他にも理由が(ry</p> <h3 id="理由3.個人開発に対する優先度が低い"><a href="#%E7%90%86%E7%94%B13.%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E5%84%AA%E5%85%88%E5%BA%A6%E3%81%8C%E4%BD%8E%E3%81%84">理由3.個人開発に対する優先度が低い</a></h3> <p>いや、割と致命的だよね。<br /> 平日はフルタイムで働いて、定時後はジム行って汗流して、週末はクラブチーム所属でスポーツしてるんだもん。そりゃあ個人開発に時間取れないよねーって。<br /> (個人開発の話じゃないけど、完全に<a target="_blank" rel="nofollow noopener" href="https://hitodeblog.com/not-time-blog#i">これ</a>ですよね)<br /> まあ、そういう風に物事の優先度を設定しているのは他ならぬ自分なので、致し方ないというか。<br /> 第一、みんな他にやることある中で、時間見つけて個人開発しているはずですから、条件一緒のはずなんですよね。</p> <h2 id="それでも良くね?"><a href="#%E3%81%9D%E3%82%8C%E3%81%A7%E3%82%82%E8%89%AF%E3%81%8F%E3%81%AD%EF%BC%9F">それでも良くね?</a></h2> <p>例えば、<br /> プロ野球選手が草野球をやっている人に対して「真面目にやれ!」と怒ることはないと思います。<br /> 逆に、草野球の人がプロ野球を見てレベルの差を見て「自分が野球をやるなんておこがましい」と卑屈になる人もいないと思います。<br /> あたりまえですよね(たぶん)。</p> <p>個人開発だって一緒で、いろんなスタンスの人がいるはずです。<br /> これを読んでいる人も「何を当たり前のことを」と思っていると思います。<br /> けど、twitterとかで個人開発にすごい熱量を注いでいる人を見ると、卑屈になってしまう自分がいて、その気持ちを落ち着かせるために文章にする必要があって、今書いているわけです。</p> <p>結局のところ、自分が楽しいとか面白いとか思えればそれで良いのでは、って思ってます。<br /> (うまくいかないとか、辛いとかの試行錯誤とか諸々含めての「楽しい」)</p> <blockquote> <p>面白ければ良いんだ。面白ければ、無駄遣いではない。子供の砂遊びと同じだよ。面白くなかったら、誰が研究なんてするもんか。<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p> </blockquote> <div style="text-align:right">森博嗣「冷たい密室と博士たち」より</div> <h2 id="とはいえ"><a href="#%E3%81%A8%E3%81%AF%E3%81%84%E3%81%88">とはいえ</a></h2> <p>全然何も世の中に出さずにこんな事を語るのも居心地が悪いので、新しいwebアプリをリリースしようと思います。(小規模なやつだけど)<br /> 本当はこの日に間に合わせるはずでしたが、色々諸事情でできなかったので、年末年始でリリースします。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.mobet.gq/jp/posts/5dfa31a7c3297b0009adf546">頑張ります</a></p> <p>明日はshigeさんです!</p> <div class="footnotes" role="doc-endnotes"> <hr /> <ol> <li id="fn:1" role="doc-endnote"> <p>ドラマ化したときにこのセリフが採用されなかったのが本当に納得できない。このシーンあったのに <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> </ol> </div> hammhiko tag:crieit.net,2005:PublicArticle/15616 2019-12-18T04:45:35+09:00 2019-12-18T07:02:13+09:00 https://crieit.net/posts/2019-5df9305f35c8a プログラミングが好きでずっとプログラミングしていたい。2019 <p>昨日のアドベントカレンダーの記事は、kakisoftさんの<br /> <a href="https://crieit.net/posts/14a6cfe7df0d4f2bca6caf888d2c2951">2019年:乱発したアウトプットの振り返り</a><br /> でした。</p> <p>す、すごいアウトプットの量、、作れたらいいな〜と考えても、全然量産出来ないので尊敬です。しかもポートフォリオの技術欄にも、いっぱい星が並んでるー!</p> <p>あ、スマホアプリ作って広告貼れば、アドセンスよりは収益いいかもしれません…<br /> (私は受け取れるほど稼いでいませんが…AdMob上に貯まっていってます…)</p> <h2 id="■ 2019年の個人的なふりかえりと自己紹介です"><a href="#%E2%96%A0+2019%E5%B9%B4%E3%81%AE%E5%80%8B%E4%BA%BA%E7%9A%84%E3%81%AA%E3%81%B5%E3%82%8A%E3%81%8B%E3%81%88%E3%82%8A%E3%81%A8%E8%87%AA%E5%B7%B1%E7%B4%B9%E4%BB%8B%E3%81%A7%E3%81%99">■ 2019年の個人的なふりかえりと自己紹介です</a></h2> <p>ちょうど一年前のアドベントカレンダーに、思いきって初めて書いたのが以下のポエム記事です。</p> <p><a href="https://crieit.net/posts/40">今年スマホアプリを作ってプログラマーになった40代女性の話。https://crieit.net/posts/40</a></p> <h3 id="あれから1年…"><a href="#%E3%81%82%E3%82%8C%E3%81%8B%E3%82%891%E5%B9%B4%E2%80%A6">あれから1年…</a></h3> <p>(赤っぽいジャケットの長髪のカツラの人が思い浮かびましたが、名前が出てこない…彦…)</p> <p>今日も「なんでも」ポエムを書かせていただきます。<br /> ポエムって「技術記事ではない」という意味で使っています。つまりこれは私的な散文です。</p> <p>あ、注意書きに「プログラマー、クリエイターが興味のあることであれば」って載ってましたね。<br /> 興味のあること…orz</p> <h2 id="■ 2019年の仕事"><a href="#%E2%96%A0+2019%E5%B9%B4%E3%81%AE%E4%BB%95%E4%BA%8B">■ 2019年の仕事</a></h2> <p>2018年11月末で2018年6月からプログラマーとして働いていた会社を辞めた私は、<br /> 2019年2月から3月末ぐらいまでフルリモートで働き、<br /> 2019年5月に技術派遣で始めた仕事は2日で辞め、<br /> 2019年6月末から、現在の会社で主にVBAで仕事をしております。</p> <p>その間に何度かCrieitに記事を書かせていただいたので<br /> もし気になる方がいればこちらをどうぞ。<br /> <a href="https://crieit.net/users/33hata33">https://crieit.net/users/33hata33</a></p> <p>怒涛の1年でした。<br /> 今年も転職の年というか、ひとところにとどまらない日々でした。<br /> フルリモートでハートブレイクした後は、技術派遣を2日で辞めたことでさらに傷つき、<br /> 凹みまくり、あああもうどんな仕事もできないかもしれないいいいい・・・・と、なっておりました。</p> <p>もううどんかもしれないいいいいいと言ったところで<br /> 税金などの請求は来る訳で、、生きているとお金がかかりますね。</p> <p>ちょっとでもいいから収入を得なければ、ということで、<br /> とりあえず(社会復帰のリハビリのために)これなら大丈夫かな〜?と<br /> おそるおそる週3日のCAD仕事に応募しまして。</p> <p>ふと気付いたら、<br /> その会社で、上司にも周りの人にも恵まれ(人間関係とても大事ですね〜)<br /> 結局CADではなく、初めてのVBAで開発を担当して、<br /> とても楽しく仕事をさせていただいております。ありがたや〜</p> <p>今年の働いた日数こんなです。<br /> 1月は0日、2月は約20日、3月は約10日、4月は0日、5月は2日、6月は3日、<br /> 7月,8月は週3日、9月,10月は週2,3日…</p> <p>ぼこぼこに凹んだメンタルは、安定して小稼働で働くことで、<br /> こんな記事を書けるまでに回復しました。</p> <p>今の仕事は、気分的には、お題を出されて解答を考えるとお金がもらえる、みたいな気分でできてます。<br /> 本人にとっては、クイズの答えを考えるのが仕事みたいで、ラッキー♪タナボタ♪みたいな感じです。</p> <p>(でもまあ…11月頃からちょっと状況が変わってきて、難易度が上がって、やりがいもその分ありますが…)<br /> (楽しいけど時間が…足り…な…い…?)</p> <h2 id="■ 2019年の個人開発"><a href="#%E2%96%A0+2019%E5%B9%B4%E3%81%AE%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA">■ 2019年の個人開発</a></h2> <h3 id="Web"><a href="#Web">Web</a></h3> <p>1つWebサービスを作ってみました。<br /> 勉強していたLaravelを使って、何かしら完成させようと思い、ハードルを下げまくって作りました。<br /> ハードル上げると完成できなくなるので。</p> <p>なんのために作ったのかって、これ、ポートフォリオにするつもりだったみたいです。<br /> せっかくだから広く公開しちゃえ〜と出しました。</p> <p><a href="https://crieit.net/posts/5-5d9c0ecabe849">サービスリリースしました(=゚-゚)ノ 週休5日のプログラマーは快適という話。</a></p> <p>そして学んだことは、(技術云々はさておき)<br /> Webサービスは、AppleのAppStoreに並べられないから、<br /> ほっといても知らない人が検索して見つけて使ってくれることはあまりないのだろう、ということ。</p> <p>「作る」のは楽しくても、それ以外の作業が膨大に存在すること。<br /> そうはいっても、ユーザーをちゃんと獲得している人々がいること。</p> <p>たくさん作ったら、どれかはヒットするかもしれない。<br /> それだけ数が作れるようになっていれば技術も向上しているだろうし…なんて妄想はします。</p> <p>別のアイディアもあるのですが(脳内に)。</p> <h3 id="スマホアプリ"><a href="#%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%A2%E3%83%97%E3%83%AA">スマホアプリ</a></h3> <p>Appleのデベロッパー登録も、2年目の更新はしたものの、<br /> 今年は、ちょっとバージョンアップしただけになっています。</p> <p>ところが、ずっとどうしてもこれだけは活用せねばならない、という使命感のある絵がありまして。<br /> そのままもう1年以上経っているのですが、2020年はスマホアプリを完成させますよ…!</p> <p>そしてまあ…スマホアプリ作れると知られると、作ってほしい!と言われることがありますね。<br /> 最近そう言われて、珍しくいやだと思わなかったので、前述のアプリを完成させたあと、<br /> 取りかかれたらいいな。(来年の抱負)</p> <h2 id="■ 大切にしたいこと"><a href="#%E2%96%A0+%E5%A4%A7%E5%88%87%E3%81%AB%E3%81%97%E3%81%9F%E3%81%84%E3%81%93%E3%81%A8">■ 大切にしたいこと</a></h2> <p>いろいろやっていみて気付きました。</p> <h3 id="プログラミングが大好き"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%8C%E5%A4%A7%E5%A5%BD%E3%81%8D">プログラミングが大好き</a></h3> <p>私は「プログラミング」自体が好きです。どうやって実現するか、ロジックを考えるのも好きです。<br /> 設計も好きです。ドキュメントを見栄え良く作るのは、あまり得意ではないですが。</p> <p>プログラミングが好きなので、何を作るかというのは二の次です。<br /> 作れそうなものを作っています。</p> <p>何が好きって、業務システムがわりと好きです。<br /> どちらかといえば、求人サイトを作るよりは、特定の事業者向けの専門ソフトを作る方が好みです。</p> <p><strong>コード書いてる時が幸せです。</strong></p> <h3 id="新しいことを知るのが好き"><a href="#%E6%96%B0%E3%81%97%E3%81%84%E3%81%93%E3%81%A8%E3%82%92%E7%9F%A5%E3%82%8B%E3%81%AE%E3%81%8C%E5%A5%BD%E3%81%8D">新しいことを知るのが好き</a></h3> <p>デザインは苦手ですが、今年はCSSの基本をやってみたりはしました。<br /> やったことのないことをやってみるのが好きです。<br /> 自分にとって簡単すぎることを続けるのはちょっと苦痛です。</p> <h3 id="自由が好き"><a href="#%E8%87%AA%E7%94%B1%E3%81%8C%E5%A5%BD%E3%81%8D">自由が好き</a></h3> <p>決められていることが苦手です。<br /> 毎日会社に行かねばならないのは辛い。<br /> 会社が好きでも辛い(気力と体力が)。</p> <p>人が大勢いるところ(職場とか)にずっと居続けるのがちょっと辛い。<br /> カフェも人がいるので、家が一番ホッとします。</p> <p>今はなぜか、半分会社で半分家で仕事をしている上に<br /> 出社日も融通がきくのでとても助かっています。</p> <p>自由な時間は、たくさんある方がいいです。</p> <p>週2日会社に行くと、人と話すリハビリになるので、<br /> 私にとってはちょうど良い頻度みたいです。</p> <h3 id="安心したい"><a href="#%E5%AE%89%E5%BF%83%E3%81%97%E3%81%9F%E3%81%84">安心したい</a></h3> <p>安心して過ごしていないと、不安だと何もできなくなります。<br /> なので、ある程度の収入と自由な時間がバランス良くあると良いです。</p> <p>大半の人はそうかも…?</p> <p>窮地に追い込んで力を発揮するタイプではありません。</p> <h3 id="脳内お花畑"><a href="#%E8%84%B3%E5%86%85%E3%81%8A%E8%8A%B1%E7%95%91">脳内お花畑</a></h3> <p>テレビのニュースは基本的に見ません。<br /> 事件や事故のニュースを聞くと、映像が頭に浮かんで怖いからです(子供の頃はそうだった)。</p> <p>私は、自分の頭の中は、ホワホワ幸せでいたいのです。<br /> みんな仲良く平和に楽しく過ごしている、と思いたいのです。</p> <p>たとえ本当はそうでなくても、私が知らなければそれで良いと思っています。<br /> 社内の人間関係の裏話とか聞きたくないです。</p> <p>NHK教育テレビ番組の、子供向け番組の、<br /> どちらかといえば人間が出てこないものの方が好きです。(誰も聞いてないって)</p> <h2 id="■ 総括"><a href="#%E2%96%A0+%E7%B7%8F%E6%8B%AC">■ 総括</a></h2> <p>私は、2017年頃(それまでも)、<br /> <strong>「プログラマーとして仕事したいなあ、でもやっぱりむりかなあ、でもやりたいなあ」</strong><br /> と思っていました。</p> <p>理由は、プログラミングが好きでずっとプログラミングしていたいから。</p> <p>.</p> <p>2018年にスマホアプリを初めて作りました。<br /> プログラマーとして仕事も始めることができました。<br /> 家から自転車で20分の距離の会社に、ホームページのお問い合わせフォームから問い合わせました。<br /> (半年で辞めたけど。今は会社自体が引っ越してもっと遠くなりました。)</p> <p>2019年は、上に書いた派遣に行く前も、決まってから1ヶ月ぐらいあったので、<br /> ずっと家で勉強してました。<br /> でも会社に行ったら、誰も教えてくれない状態で、<br /> 10年以上前の複雑で膨大なコードを読むのは心折れました。</p> <p>入門書をいくら読んだところで、書籍でいくら実践したところで、<br /> 実務のコードがスラスラ読める訳ではないですもんね。<br /> しかもプログラム実行もできない環境で、順に追っていくことすら難しく。<br /> 質問しても、そのぐらいわからないと後で困るから、という感じで答えてもらえず。</p> <p>それにしても2日は早いだろう、と思いますが、社内の雰囲気もちょっと…で。<br /> たらればですが、もし一緒に面談を受けた人が一緒に入っていたら、励ましあって頑張れたかもしれません。</p> <p>打たれ弱いんです。ここで負けないぞ!と歯を食いしばって頑張れるタイプではないのです。</p> <p>でも、そのおかげで、今のとても恵まれた環境で、楽しい気持ちで仕事ができているので、<br /> 人生ってどう転ぶかわかりませんね。</p> <p>.</p> <p>YOUも勝手に自分を諦めずに、生きているうちにやりたいことやろう〜♪</p> Hata tag:crieit.net,2005:PublicArticle/15611 2019-12-16T07:00:09+09:00 2020-04-17T01:38:46+09:00 https://crieit.net/posts/14a6cfe7df0d4f2bca6caf888d2c2951 2019年:乱発したアウトプットの振り返り <p>今年は、<br /> 「クオリティの高低は置いといて、アウトプットを増やしていこう!」<br /> と思い、作ったものは片っ端から晒していったので、それを振り返っていくエントリです。</p> <h2 id="ポートフォリオ"><a href="#%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AA%E3%82%AA">ポートフォリオ</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://kakisoft-portfolio-v2.netlify.com/">https://kakisoft-portfolio-v2.netlify.com/</a><br /> <a href="https://crieit.now.sh/upload_images/4387d9af8e0b50251d865038984a51c25df4e46876859.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4387d9af8e0b50251d865038984a51c25df4e46876859.png?mw=700" alt="img001.png" /></a><br /> さすがに bootstrap3 で作ってそのまま放置というのは気持ち悪くなってきたのでリニューアル。<br /> 作った物の整頓もしたくなったし。<br /> Vue.js/vuetify で作り、Netlify にホスティング。</p> <h2 id="公園を中心とした、子供と遊ぶ場所をピックアップしていくサイト"><a href="#%E5%85%AC%E5%9C%92%E3%82%92%E4%B8%AD%E5%BF%83%E3%81%A8%E3%81%97%E3%81%9F%E3%80%81%E5%AD%90%E4%BE%9B%E3%81%A8%E9%81%8A%E3%81%B6%E5%A0%B4%E6%89%80%E3%82%92%E3%83%94%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%97%E3%81%A6%E3%81%84%E3%81%8F%E3%82%B5%E3%82%A4%E3%83%88">公園を中心とした、子供と遊ぶ場所をピックアップしていくサイト</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-playground.com/">https://kaki-playground.com/</a><br /> <a href="https://crieit.now.sh/upload_images/c7d3e5d9b7fc8133731c03df5d7f09475df4e47ca10cf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c7d3e5d9b7fc8133731c03df5d7f09475df4e47ca10cf.png?mw=700" alt="img002.png" /></a></p> <p>コンセプトは、<br /> 「歩いて行ける、子供と遊ぶ場所!」<br /> (対象:福岡市周辺)</p> <p>ちっちゃな子供がいると行動範囲が限定される!<br /> 旅行に行っても子供たちが覚えてないから思い出にもならないし、子供かかえたままだと親側も楽しめない!</p> <p>そんな悩みをかかえ、<br /> 「じゃ、せめて周辺で遊べる場所をピックアップしていくかー!」<br /> という動機で始めたサイト。</p> <p>もう少し言えば、<br /> 「公園を探すサービスがいくつかあるけど、全国区で探す必要なくない?<br /> せいぜい半径5キロぐらいの範囲がカバーできてればそれでいいのでは?」<br /> と思ったのがきっかけ。</p> <p>週1ペースくらいで更新していこうかと思ったが、最近、息子君がインドア派になってきたせいで、絶賛凍結中!<br /> ここから発展形の妄想だけは膨らませているので、温かくなったら再開したい。。。<br /> やってみたい事が、子供が一緒に遊んでくれる間じゃないと実現しづらいので、優先度上げて何とかせねば。</p> <p>GatsbyJS で作って、Netlify にホスティング。</p> <h2 id="人狼ゲーム用語集(英語)"><a href="#%E4%BA%BA%E7%8B%BC%E3%82%B2%E3%83%BC%E3%83%A0%E7%94%A8%E8%AA%9E%E9%9B%86%EF%BC%88%E8%8B%B1%E8%AA%9E%EF%BC%89">人狼ゲーム用語集(英語)</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://kakisoft.github.io/WerewolfGameInEnglish/">https://kakisoft.github.io/WerewolfGameInEnglish/</a><br /> <a href="https://crieit.now.sh/upload_images/f2d67391348f531b675f10d0c01374a25df4e4bc1e4bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f2d67391348f531b675f10d0c01374a25df4e4bc1e4bc.png?mw=700" alt="img003.png" /></a><br /> 英語で人狼ゲームをやって遊ぶコミュニティに参加した時に作った。</p> <p>リニューアルして、管理者はキーワードが追加できるなどの機能を追加・・・したいんだけど時間ががが<br /> 来年、ちゃんと作りたい。</p> <p>MkDocs で作成し、GitHub Pagesにデプロイ。</p> <h2 id="作ったチンケなアプリ1:異名ジェネレータ"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%83%81%E3%83%B3%E3%82%B1%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AA%EF%BC%91%EF%BC%9A%E7%95%B0%E5%90%8D%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF">作ったチンケなアプリ1:異名ジェネレータ</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://another-name-generator.netlify.com/">https://another-name-generator.netlify.com/</a><br /> <a href="https://crieit.now.sh/upload_images/5027cad5ca33303daae37c166c5d73215df4e4c7260bf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5027cad5ca33303daae37c166c5d73215df4e4c7260bf.png?mw=700" alt="img004.png" /></a></p> <p>異名ってありますよね!</p> <p>「死の天使」とか<br /> 「砂漠の狐」とか<br /> 「音速の貴公子」とか、そういうの。</p> <p>いいのが思いつかない時に、ランダムに言葉組み合わせて、おりゃーなんか出ろーって生成しちゃうサービス。</p> <p>Vue.js で作って、Netlify にホスティング。</p> <h2 id="作ったチンケなアプリ2:CSV to TABLE"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%83%81%E3%83%B3%E3%82%B1%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AA%EF%BC%92%EF%BC%9ACSV+to+TABLE">作ったチンケなアプリ2:CSV to TABLE</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://csv-to-table.netlify.com/">https://csv-to-table.netlify.com/</a><br /> <a href="https://crieit.now.sh/upload_images/5df4f78d8c026d03865b60606a48256c5df4e4d5a4002.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5df4f78d8c026d03865b60606a48256c5df4e4d5a4002.png?mw=700" alt="img005.png" /></a><br /> CSV をテキストエリアに入力したら、ちょっといい感じにテーブル化する。</p> <p>ダウンロードして遊ぼうと思ってたデータがCSV形式だったんで、その過程で作ってみた。</p> <p>同じく、Vue.js を使い、Netlify にホスティング。</p> <h2 id="ネタポートフォリオ"><a href="#%E3%83%8D%E3%82%BF%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AA%E3%82%AA">ネタポートフォリオ</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://kakisoft-tmp-portfolio.studio.design/11">https://kakisoft-tmp-portfolio.studio.design/11</a><br /> <a href="https://crieit.now.sh/upload_images/64afcf9085a0b855024f29c4283396cd5df4e4dfb7908.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/64afcf9085a0b855024f29c4283396cd5df4e4dfb7908.png?mw=700" alt="img006.png" /></a><br /> ネタで作成した、情報量ゼロのポートフォリオサイト。見た目だけはちょっと良さげ。<br /> 個人的には、ちょっと気に入ってる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://studio.design">STUDIO</a>を使ってます。</p> <h2 id="良さげな画像と適当な英語を並べた、一見クールなサイト"><a href="#%E8%89%AF%E3%81%95%E3%81%92%E3%81%AA%E7%94%BB%E5%83%8F%E3%81%A8%E9%81%A9%E5%BD%93%E3%81%AA%E8%8B%B1%E8%AA%9E%E3%82%92%E4%B8%A6%E3%81%B9%E3%81%9F%E3%80%81%E4%B8%80%E8%A6%8B%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AA%E3%82%B5%E3%82%A4%E3%83%88">良さげな画像と適当な英語を並べた、一見クールなサイト</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://atarima-e.studio.design/">https://atarima-e.studio.design/</a><br /> <a href="https://crieit.now.sh/upload_images/00856dea94f6fbcfbe2e8dc112817fad5df4e4ec879b4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/00856dea94f6fbcfbe2e8dc112817fad5df4e4ec879b4.png?mw=700" alt="img007.png" /></a><br /> ネタサイト。<br /> 一見、「こんなクールなサイトができたぜ!」と錯覚させる事ができました。</p> <p>同じく、STUDIO を使ってます。</p> <h2 id="技術ブログ(2016年~)"><a href="#%E6%8A%80%E8%A1%93%E3%83%96%E3%83%AD%E3%82%B0%EF%BC%882016%E5%B9%B4%EF%BD%9E%EF%BC%89">技術ブログ(2016年~)</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://www.kakistamp.com/">https://www.kakistamp.com/</a><br /> <a href="https://crieit.now.sh/upload_images/efa595e85e305b93679310419d3b8c955df4e4fcd693a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/efa595e85e305b93679310419d3b8c955df4e4fcd693a.png?mw=700" alt="img008.png" /></a></p> <p>コンセプトは、<br /> 「必要な情報をパッと取り出して、すぐに自分のタスクに戻りたい人向け」</p> <p>不要な情報はトコトン削ぎ落とし、可能な限り短く簡潔に書くことを心がけています。</p> <p>最近はペースが落ちて、月に1本くらいしか書いてない。<br /> そして今年の後半は完全にサボってる。<br /> 継続してちゃんと書こう。</p> <p>はてなブログを使っています。</p> <h2 id="ゆるく書いてるブログ(3月~) ※現在は閉鎖"><a href="#%E3%82%86%E3%82%8B%E3%81%8F%E6%9B%B8%E3%81%84%E3%81%A6%E3%82%8B%E3%83%96%E3%83%AD%E3%82%B0%EF%BC%88%EF%BC%93%E6%9C%88%EF%BD%9E%EF%BC%89%E3%80%80%E2%80%BB%E7%8F%BE%E5%9C%A8%E3%81%AF%E9%96%89%E9%8E%96">ゆるく書いてるブログ(3月~) ※現在は閉鎖</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://kakiflow.com/">https://kakiflow.com/</a><br /> <a href="https://crieit.now.sh/upload_images/955967209efdc10b806b90e64fdb469b5df4e50a4def7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/955967209efdc10b806b90e64fdb469b5df4e50a4def7.png?mw=700" alt="img009.png" /></a></p> <p>「こんな事ができた!」<br /> ではなく、<br /> 「うぎゃーー!わからーーん!!」<br /> というポイントに焦点を当て、それらをどう消化して行ってるかを記録する目的で書き始めたブログ。<br /> だんだん技術と関係ない事も書くようになってきた。<br /> 毎日、何かしらのログとして書き残していこうかと思ったが、子育てがしんどすぎて断念。詳細は後述。</p> <p>気がつけば、読んでもらう事を前提としないようなポエム的なエントリと、読んでもらう事を意識したエントリがごちゃまぜになって訳わからなさが加速してるんで、趣旨およびブログ名を変え、ドメインの取り直しからやり直す予定。</p> <p>色々と失敗してんなと思ったが、元々、特に深い考えも無しに走り出したし、走っている間に色々と考えが整理できて次の方向性の案も出てきたので、結果オーライと思ってる。</p> <p>WordPressを使ってます。</p> <h2 id="英語で書いてるブログ(8月~)"><a href="#%E8%8B%B1%E8%AA%9E%E3%81%A7%E6%9B%B8%E3%81%84%E3%81%A6%E3%82%8B%E3%83%96%E3%83%AD%E3%82%B0%EF%BC%88%EF%BC%98%E6%9C%88%EF%BD%9E%EF%BC%89">英語で書いてるブログ(8月~)</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-en-talk.com/">https://kaki-en-talk.com/</a><br /> <a href="https://crieit.now.sh/upload_images/b4c9ce529ef2a3eaea479555c05726ee5df4e518479cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b4c9ce529ef2a3eaea479555c05726ee5df4e518479cb.png?mw=700" alt="img010.png" /></a></p> <p>個人開発に興味があったものの、手のかかる子供たちにを相手にしながらやり遂げるのがキツ過ぎたんで、<br /> 「よし!妨害されながらでも出来る事をやろう!」という考えから始めた。</p> <p>書いた内容は、先生にチェックしてもらい、修正しております。<br /> 基本、<br /> 「文法的に正しいかどうか自信がなくても無理にでも英文を書く → 悪い所を指摘してもらって修正する」<br /> というサイクルで進めてる。</p> <p>現在、書き始めて連続更新4ヶ月が経過。<br /> おお。よく続いてるな。<br /> しょーもない内容を垂れ流し続けるだけでなく、別の利用方も考えているが、多分、もう少し先。</p> <p>WordPressを使っているが、色々あって GatsbyJS か Gridsome あたりに移行したいなと考えてる。<br /> 理由は後述。</p> <h2 id="英文イディオム集"><a href="#%E8%8B%B1%E6%96%87%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0%E9%9B%86">英文イディオム集</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://englishtextbook01.netlify.com/">https://englishtextbook01.netlify.com/</a><br /> <a href="https://crieit.now.sh/upload_images/a2bd1fcd235683662ce79856ed7277e75df4e524c943b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a2bd1fcd235683662ce79856ed7277e75df4e524c943b.png?mw=700" alt="img011.png" /></a><br /> 英文の添削をお願いしている先生から、「語彙力が弱いので、強化しといた方がいい」と言われたので書き始めた。</p> <p>こちらは GatsbyJS + Netlify で作成。サクサク動くのが気持ちいい。<br /> こういった、何度も読み返して頭に叩き込む系の代物は、サイトがスピーディーに動いていた方がいいな。と思い、日記の方も爆速フレームワークを使いたくなった。</p> <p>日記は WordPress を使っているが、記事は WP Editor.md というプラグインを使ってマークダウンで書いているので、移行がしやすいようにしている。</p> <p>検索機能がついてないので、超絶に使いづらい。<br /> が、改善するかどうかは気分次第。</p> <p>投稿日時が妙に過去なのは、日付をソートの条件として使ってるせい。<br /> マッハ雑に作り、雑なまま使い続けている。</p> <h2 id="スライド"><a href="#%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89">スライド</a></h2> <p>2人目の子供が生まれ、家が大変になってきて家庭を優先しはじめたので、後半は勉強会への参加数が減少。<br /> もっと積極的に参加し、アウトプットのクオリティも高めていきたいっすなー。</p> <p><a target="_blank" rel="nofollow noopener" href="https://gitpitch.com/kakisoft/slave-of-OOP#/">「Vue.js 分からーん!」と感じていたのは、自分が『オブジェクト指向の奴隷』だったんだと気がついた話。</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://gitpitch.com/kakisoft/StudyingEnglishBySmartSpeaker/">スマートスピーカーで英語の勉強をしている話</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://gitpitch.com/kakisoft/UsePHPLightly#/">お手軽に使う PHP</a></p> <p>スライドには GitPitchという、マークダウンでいい感じにスライドが作れるサービスを使っています。<br /> GitPitchの使い方をスライドにした資料は、ちょっと自信作。</p> <p><a target="_blank" rel="nofollow noopener" href="https://gitpitch.com/kakisoft/HowToUseGitPitch/">GitHubだけで作成するスライド「GitPitch」の使い方 ~基本編~</a><br /> <a target="_blank" rel="nofollow noopener" href="https://gitpitch.com/kakisoft/HowToUseGitPitch3">GitHubだけで作成するスライド「GitPitch」の使い方 ~応用編~</a></p> <h2 id="仕事で使うちょっとしたツール"><a href="#%E4%BB%95%E4%BA%8B%E3%81%A7%E4%BD%BF%E3%81%86%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%81%97%E3%81%9F%E3%83%84%E3%83%BC%E3%83%AB">仕事で使うちょっとしたツール</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/kakisoft/MyTrivialTools">https://github.com/kakisoft/MyTrivialTools</a><br /> ブチ適当でもとりあえず作って、後からブラッシュアップしていくスタイルのちょっとしたツール。<br /> 今年は確か3つ作った。<br /> 正直、自分以外の人間が使う事を想定していないので、デザインやUIは超絶に終わってる。<br /> しかも一部は上位互換がネットのあちこちにあったりと、完全に存在意義を見失っているのもちらほら。</p> <hr /> <h2 id="所感"><a href="#%E6%89%80%E6%84%9F">所感</a></h2> <p>アウトプットするにあたり、1つ決めていたことは、<br /> 「ITとあんま関係ない事も合わせて、積極的に晒していこう!」<br /> って事だったんだけど、発信する情報に全く一貫性がねぇ・・・。</p> <p>来年はもう少し何をするかにスコープを絞った方がいいのかもしんない。<br /> でも、あれもこれもと手を出すのも楽しいので、そこはバランスの取り方って事で。</p> <hr /> <h2 id="アウトプットついでの収益化を考えた"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%A4%E3%81%84%E3%81%A7%E3%81%AE%E5%8F%8E%E7%9B%8A%E5%8C%96%E3%82%92%E8%80%83%E3%81%88%E3%81%9F">アウトプットついでの収益化を考えた</a></h2> <p>せっかくなんぼかアウトプットしてるんで、Google Adsenseつけて少しは稼げんかな。と考えてつけてみた。<br /> 技術ブログの方は月1万PVくらいあるので、少しは稼いでくれんかなと思って。(調子がいいときは2万くらいあったが、最近、かなり落ちた。)</p> <p>結果、1日1~2円くらい。<br /> 小遣いにすらなりゃしねえ・・・。</p> <p>考えらえれる要因はいくつか。</p> <ul> <li>コンセプトが「必要な情報をパッと取り出して、すぐに自分のタスクに戻ってもらう」という趣旨。それが書き手の意図通りに動いている。(Adsenseで稼ぐ事を考えるなら、真逆の行動が必要となる)</li> <li>結果、回遊率は異常に低く、離脱率も非常に高い。(他のエントリを読んでもらえない)</li> <li>余計な情報は極力削ぎ落とし、できるだけ少ない文章で書くように心がけている。結果、エンタメ的な要素が皆無となり、じっくり読ませるような内容でなく、人の心に残りづらい。</li> <li>書き手のキャラに興味を持ってもらうような内容にしていない</li> <li>アクセスが多いのは主に Oracle関連のエントリ。調べる人は別に Oracleが好きな訳でも興味があるわけでもなく、「業務で使っているから」という理由で、職場で見ている人が大多数だと思う。(土日祝はアクセス数は 十分の一ぐらいになる)<br />   「職場で見る=広告は業務に関連するものばかり」となり、収入の源泉にしづらい。</li> <li>見る人は全員エンジニアだろうし、広告をブロックするプラグインを入れている人が大半と思われる。</li> </ul> <p>という感じで、収益化に結び付く要素が何一つとして存在しない。<br /> 当初は、「アウトプットついでに、小金でも稼いでくれんかな。」と思っていたが、それにすら到達できなさそうだ。</p> <p>その他、SEO絡みについては色々実験もしたので、自分なりに調査した事のを書きました。<br /> <a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/seo-change-original-domain-1/">はてなブログを独自ドメイン化したら、検索順位は下がるの? ~実験編~<br /> </a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/seo-change-original-domain-2/">はてなブログを独自ドメイン化したら、検索順位は下がるの? ~結果編~</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/engineers-perspective-seo//">エンジニア視点のSEOの話</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://kaki-engine.com/my-hypothesis-about-seo//">SEO対策について、他ではあまり言われていない仮説</a></p> <p>一応、AdSense とSEOコンサルで稼いでいる、その道のプロの方に、お金払ってちゃんと話を聞いてみたが、AdSense で稼ぐには、相応の戦略が必要となる事がわかった。<br /> よくよく考えれば当然だな。<br /> 少なくとも、「とりあえず定期的にアウトプットしてたら、ついでに稼げちゃった♪」などという夢は見ない方がいいな。という事が分かっただけでも収穫だ。</p> <p>エンジニアなら、技術的なアウトプットに限れば、AdSenseで稼ぐよりも、公開した内容を多くの人の目が触れる場所に投稿し、それによって自分の知名度を上げ、それを収入アップに結び付ける方が効率良さそうな気がする。<br /> というか、”収入を上げる”というのが一番の目的とするなら、「副業で稼ぐ」よりも、「本業の収入を増やす」のが効率いい気がする。多くの場合。</p> <p>なので、技術チックな事を書く場合は、何かしらの理由が無い限りは、自分のブログ以外のプラットフォームに書いた方がいいんじゃないかと思った次第。(単発記事の場合。連載記事なら話は変わってくると思う。)</p> <p>「AdSenseで稼ぐ」というアクションについては、自分が苦手意識のある事がいくつか含まれている。<br /> それをどう折り合いをつけてやっていくか、もしくは別の事をするか、というのは悩みどころだ。<br /> といっても、自分なりの答えは出していて、「こういう方向でやってみよう!」という考えが既にあり、実践はもう少し先になる予定。<br /> というか、よくよく観察していると、自分だけが特別苦手というわけでもなく、大多数の人がそんな気がしてきたんで、多分慣れの問題なんだと思う。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>並べるとそれなりに多そうに見えるものの、どれも小粒なので、もっとじっくりと時間をかけて育てていくものを作っていきたいなと思った。<br /> 来年は長男が幼稚園に行くし、少しは負担が減らないかなー。個人開発する時間が取りやすくなってくんないかな。</p> かきそふと tag:crieit.net,2005:PublicArticle/15605 2019-12-14T07:00:08+09:00 2019-12-14T07:00:08+09:00 https://crieit.net/posts/f9ebd420c41c1270c5dbfe042703d173 自作クソアプリを無謀にもドヤ顔で晒す… <p>クソアプリ紹介記事を開いていただき本当にありがとうございます。高田と申します。</p> <h1 id="どんなクソアプリなの?"><a href="#%E3%81%A9%E3%82%93%E3%81%AA%E3%82%AF%E3%82%BD%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AA%E3%81%AE%EF%BC%9F">どんなクソアプリなの?</a></h1> <p>ズバリ。「福笑い」でございます。<br /> <a target="_blank" rel="nofollow noopener" href="https://portrait.piggy3.com/ja/index.html">https://portrait.piggy3.com/ja/index.html</a></p> <h1 id="遊び方"><a href="#%E9%81%8A%E3%81%B3%E6%96%B9">遊び方</a></h1> <h2 id="1.サイトにアクセスする"><a href="#%EF%BC%91%EF%BC%8E%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B">1.サイトにアクセスする</a></h2> <p>トップ画面が開いたらやることは1つ。「似顔絵を作成する」を押しましょう。<br /> <a href="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d14de1b0a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d14de1b0a.png?mw=700" alt="image.png" /></a></p> <blockquote> <p>【 クソポイント】<br /> ・ログイン機能の実装で挫折<br /> ・なのに英語対応(英語力はクソ)<br /> ・さらに独自ドメイン取得</p> </blockquote> <h2 id="2.遊びたい絵を選択"><a href="#%EF%BC%92%EF%BC%8E%E9%81%8A%E3%81%B3%E3%81%9F%E3%81%84%E7%B5%B5%E3%82%92%E9%81%B8%E6%8A%9E">2.遊びたい絵を選択</a></h2> <p>これは!と感じた絵を選びましょう。<br /> <a href="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d2436e6d6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d2436e6d6.png?mw=700" alt="image.png" /></a></p> <blockquote> <p>【クソポイント】<br /> ・素材の追加で挫折<br /> ・このためだけに契約したPhotoshopに月々980円を払い続けている<br /> ・もうすぐお正月だから素材を充実させたい気持ちもアリ</p> </blockquote> <h2 id="3.自由にパーツを配置"><a href="#%EF%BC%93%EF%BC%8E%E8%87%AA%E7%94%B1%E3%81%AB%E3%83%91%E3%83%BC%E3%83%84%E3%82%92%E9%85%8D%E7%BD%AE">3.自由にパーツを配置</a></h2> <p>ここだ!と感じた場所にパーツをドラッグ。「位置を確定して次へ」を押すと次のパーツの配置に進みます。この繰り返し。<br /> <a href="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d3c589639.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d3c589639.png?mw=700" alt="image.png" /></a></p> <blockquote> <p>【クソポイント】<br /> ・操作が直感的ではない<br /> ・「位置を確定して次へ」ボタンいらなかったかも…ドラッグして離したら自動で次のパーツに進むようにすれば良かった<br /> ・でも修正する気ナシ</p> </blockquote> <h2 id="4.タイトルを設定"><a href="#%EF%BC%94%EF%BC%8E%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%92%E8%A8%AD%E5%AE%9A">4.タイトルを設定</a></h2> <p>これだ!というタイトルを付けてあげましょう。あえて未設定も可。心の準備ができたら「確定」を押します。<br /> <a href="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d4d910868.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d4d910868.png?mw=700" alt="image.png" /></a></p> <blockquote> <p>【クソポイント】<br /> 完成した絵を確認する前にタイトル付けを強要</p> </blockquote> <h2 id="5.完成!"><a href="#%EF%BC%95%EF%BC%8E%E5%AE%8C%E6%88%90%EF%BC%81">5.完成!</a></h2> <p>おめでとうございます!完成した作品のURLをコピーしてSNSにシェアしましょう!<br /> <a href="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d5b39ba39.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/333bc7f5384be08dc752e6a9220f45725de7d5b39ba39.png?mw=700" alt="image.png" /></a></p> <blockquote> <p>【クソポイント】<br /> ・SNSのシェアボタンではなくURLコピペスタイル</p> </blockquote> <h1 id="最後に作者の自己紹介"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB%E4%BD%9C%E8%80%85%E3%81%AE%E8%87%AA%E5%B7%B1%E7%B4%B9%E4%BB%8B">最後に作者の自己紹介</a></h1> <p>ここまでお読みいただき本当にありがとうございます。</p> <p>お仕事ではOffice 365などのクラウドサービス導入支援・利活用サービス提供を生業としております。最近は営業寄りの活動が中心になっており仕事上では技術に触れる機会が激減中です。</p> <p>本クソアプリはAWSのサーバーレスに興味があり趣味の範疇で手を出してみた結果です。Web開発で飯を食う目標は持っていませんが、自分でやってみることで本格的なサービスを開発しているエンジニアの皆様の凄さをより理解できるようになりました。なにより、モノづくりの過程であれこれと勉強している時間が本当に楽しかったです(ある程度形になると飽きっぽさが出てしまいます…)。Udemyの動画教材でAWSを契約するところから学んだのですが、ついつい楽しくて徹夜をしてしまったこともあり。仕事の合間に短期集中で1か月くらいの期間で作成しました。</p> <p>最後の最後にクソアプリの構成だけ載せておきます。</p> <div class="table-responsive"><table> <thead> <tr> <th>AWSサービス名</th> <th>役割</th> </tr> </thead> <tbody> <tr> <td>Lambda</td> <td>・サーバー側処理の実行(Pythonを使用)</td> </tr> <tr> <td>S3</td> <td>・htmlやjsなどの静的コンテンツ配置・Lambdaで生成した画像データ保管</td> </tr> <tr> <td>DynamoDB</td> <td>・システム用レコード管理・ユーザー作成の画像データに紐づくプロパティ情報保管</td> </tr> <tr> <td>API Gateway</td> <td>・Lambdaの処理をREST APIとして提供するための設定</td> </tr> <tr> <td>CloudFront</td> <td>・キャッシュ管理(CDN)・S3/API Gatewayのコンテンツにユーザーがアクセスするためのマッピング設定</td> </tr> <tr> <td>Route53</td> <td>・ドメイン管理・S3/API GatewayをCloudFrontにマッピングするための定義</td> </tr> </tbody> </table></div> 高田弘介 tag:crieit.net,2005:PublicArticle/15574 2019-12-02T11:36:03+09:00 2019-12-02T11:36:03+09:00 https://crieit.net/posts/AWS 今更、「AWSなのに、エモい」の読書感想文 <p>この記事は「<a target="_blank" rel="nofollow noopener" href="https://adventar.org/calendars/3986">Qiitadon Advent Calendar</a>」の2日目の記事です。</p> <p>なお、1日目はこの記事を書いている時点では誰もエントリーしておりませんでした。</p> <p>思いつきでアドベントカレンダーを立ち上げるからこうなるのである。</p> <hr /> <p>そしてさらに厄介なことに、立ち上げた当人がそこまでQiitadonにまつわるネタがあるわけでもなかった。</p> <p>「とりあえず楽しそう」という安易な気持ちが、いつも自分の首を締めるのである。</p> <p>なので私は改めて、ほぼ躁状態で書いたであろう「Qiitadon Advent Calendar」の説明文を読み直した。</p> <blockquote> <p>明美(Qiitaファンミーティング(非公式含む))、大喜利、お勧めクライアント、ROM専の方の自己紹介、ポエム、カーテン、エモい話、Qiitadon説明書やQiitadonの皆さんに助けられましたなど。どうぞ。</p> <p>カーテン、エモい話</p> </blockquote> <p>明らかにある人物を意識している文節がある。<a target="_blank" rel="nofollow noopener" href="https://qiitadon.com/@carotene512">かろてん氏</a>だ。</p> <p>そしてかろてん氏に頼まれていた宿題を、全くやっていなかった。<br /> 「書評」である。</p> <p>ということで、この記事を書くために先程「<a target="_blank" rel="nofollow noopener" href="https://booth.pm/ja/items/1574177">AWSなのに、エモい。</a>」を読んだ。</p> <hr /> <p>主人公の「透(すける)」がAmazonの運営している施設で1枚のフロッピーディスクを拾ったところから物語は始まる。全ページで87ページくらいなので、なにか大切な気持ちを失いかけていたAWS利用者は読むと何かが思い出せるかもしれない(著者はそれを「エモい気持ち」と称しているが)。</p> <p>サーバーというものが私達の身近で物理的に存在を感じれるものではなくなってから、思ったより時間が経っただろう。</p> <p>コマンドを叩けば――もしかするとブラウザの画面からマウス操作で――AWSのインスタンスやリソースを操作できるこの時代、そこまでHTTPやTCP/IPのことを分かっていなくても、つまりそのコマンドが何を意図して伝達されるのかなぞ、意識しなくてもいいのかもしれない。</p> <p>たとえそれが、中で誰を幽閉していたとしても、もしくは古代の文明の力で動いていたとしても、オペレーターが知る必要が無いのかもしれない。<br /> この「AWSなのに、エモい」は、そういった皮肉を、とてもうまく物語としてまとめているのである。</p> <p>全体としても分量は多くないものの、読後感はむしろ清々しいのがこの物語の強いところである。<br /> もちろん、巻末には解説が載っているので技術書の体裁をしている。</p> <p>大人になって忘れてしまった気持ちを取り戻せる技術書である。エモい。</p> まんじゅ(´ん`) tag:crieit.net,2005:PublicArticle/14632 2018-12-07T07:27:05+09:00 2019-07-19T21:01:26+09:00 https://crieit.net/posts/Korette Koretteのオモテとウラ <p>こちらはCrieitの<a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a>の7日目の記事です。</p> <p>前日は<a href="https://crieit.net/users/sola_io">🍃🥜🗼sola🗼🥜🍃さん</a>の「初めてのウェブサービスを WordPress + Vue.js で開発した話」についてでした!</p> <h1 id="Koretteって?"><a href="#Korette%E3%81%A3%E3%81%A6%EF%BC%9F">Koretteって?</a></h1> <p>「Korette(コレッテ)」というのは、私が運営している、観光地の魅力を題材にしたクイズの回答と投稿ができるWebサービスのことです。</p> <p>本業エンジニアではなく、IT業界の人間ですらなかった自分が、ほぼゼロから独学でプログラミングを学びながら、9ヶ月かけてリリースしました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://korette.jp/">https://korette.jp/</a></p> <p><a href="https://crieit.now.sh/upload_images/b25842c47817d208ac8f2730c15264de5c0637b4951b9.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b25842c47817d208ac8f2730c15264de5c0637b4951b9.jpg?mw=700" alt="topsc.jpg" /></a></p> <p>このサービスを作ったのは、私が30代半ば頃から感じ始めた、「社会のために何か役立つことがしたい」、「組織の肩書きではなく個人として何かを成し遂げたい」、「自分が人に直接人の役に立つ実感が得られることがしたい」、そういったことを思うようになったことがきっかけです。</p> <p>具体的になにをするかを延々と考えた末、「地域の人が自分の街の魅力を知り、好きになり、誰かに伝える、次の世代に残したくなる」そういう社会を実現しようと思い至り、それを実現するプラットフォームとしてKoretteを開発することにしました。</p> <p>Koretteは観光地の魅力を歴史や音楽、人物などといった魅力を、クイズ化するというアプローチにより、さまざまな切り口に細分化し、訴求力の高い形で観光地に興味を持つ人に伝えることができるのが特徴です。</p> <p>また、クイズの作成・投稿を地域に住む人や縁のある人が行うことにより、地域密着の情報が可視化されるという特徴や、地域に住む人が魅力を再発見できることも狙っています。</p> <p>さらに、題材となる観光スポットのデータには自治体のオープンデータ(約1万件)を活用しており、2018年3月には東京都主催の「<a target="_blank" rel="nofollow noopener" href="http://opendata-portal.metro.tokyo.jp/www/contents/1522039625760/index.html">東京都オープンデータアプリコンテスト</a>」で準優勝(優秀賞)を頂きました。</p> <p>少し古いですが、<a target="_blank" rel="nofollow noopener" href="https://www.slideshare.net/Hiroz/korette">東京都のコンテストに応募した際の企画書</a>をSlideShereにアップしています。</p> <p>サービスへの思い入れの強さもあって、2017年12月末にこのサービスをリリースしてから、ずっとこのサービス1本でやっています。</p> <p>今日はこのKoretteのオモテとウラ、テーマに沿って、Webサービスで採用している技術をオモテ(フロントエンド)とウラ(バックエンド)ということで紹介していきたいと思います。</p> <p>※サービス開発の背景やリリースするまでの話などは、こちらにもまとめています。<br />  良かったら読んでみてください。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/hiroz31/items/d7f2f9b7d02f9be1ca92">「中年の危機」ど真ん中のオッサンがWEBサービス作ってみた(Qiita)</a>。</p> <p><a target="_blank" rel="nofollow noopener" href="https://hrz31.hatenablog.com/entry/2018/05/22/173000">「中年の危機」ど真ん中のオッサンのWebサービスが東京都のコンテストで入賞するまで(はてなブログ)</a>。</p> <h1 id="基本的な構成"><a href="#%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%A7%8B%E6%88%90">基本的な構成</a></h1> <p>Koretteのサービスは、フロント・サーバーサイドともにASP.NET Core(MVC)を採用、MicrosoftAzureでWindowsServer(IIS)とSQLServerを使っています。</p> <p>ASP.NET Core(MVC)は、Microsoft社が提供する、C#でWebアプリケーションを作るためのMVCフレームワーク(動作環境)です。</p> <p>個人開発でWebサービスを開発するときは、PHPやRubyを活用している人が多いと思いますので異端に感じる方も多いのではないでしょうか。</p> <p>これは、プログラミング経験がほぼ無い自分が、かろうじて持っていた数少ない知識や経験をもとに、そこから最小の学習コストでWebサービスをリリースできるだろうと考えたのが理由です。</p> <p>その時の経験から、今回Webサービスを開発するにあたり、PHPやRubyやJavaも含めいろいろな言語や開発環境を試してみたところ、C#(とその開発環境のVisualStudio)が自分で一番しっくりくる感じがありました。<br /> これは、大学生の頃にDelphiとVisual Basicを少しだけ触ったことがあり、Delphiの元開発者がC#の開発に関わっているそうなので思想が似ている感じを受けたのかなという気がします。</p> <p>そいういうわけで、KoretteはASP.NET Core(MVC)をベースに開発スタートしました。<br /> リリース後、機能改善を進めるなかで画面遷移させたくない箇所についてWebAPI+Ajaxでフロント側を更新するページを徐々に増やしていき、今の形になっています。</p> <p>徐々にフロント側の動的更新の比重が増えてきたことから、現在はかなりJavaScriptを弄る比重が高くなっています。ただ、これもC#をベースに色々と学んだお陰で応用が利いていて、イチからJavaScriptを学ぶより遙かに習得が早くなってい気がしています(たぶん最初からJavaScriptだと発狂してリリースに至らなかったかも・・・)。</p> <h2 id="オモテ(フロントエンド)"><a href="#%E3%82%AA%E3%83%A2%E3%83%86%EF%BC%88%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%EF%BC%89">オモテ(フロントエンド)</a></h2> <h3 id="採用しているフレームワーク・ライブラリなど"><a href="#%E6%8E%A1%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%BB%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AA%E3%81%A9">採用しているフレームワーク・ライブラリなど</a></h3> <p>ASP.NET Core(MVC)で表示されたビューのHTMLのDOMをJQueryを使って書き換えるという古典的な手法を採用しています。</p> <p>VueやReactといったフレームワークは採用していないのは、プログラミング経験んがほとんどない自分がWebサービスをリリースするにあたり、フロントとバックと両方にフレームワークを学習するという二正面作戦は無理だと判断したためです。</p> <ul> <li><p>Bootstrap4.0<br /> リリース当初は3.x系でしたが、ページデザインのリニューアルを機にアップデートしました。</p></li> <li><p>JQuery 3.3.1<br /> リリース当初は2.2.x系でしたが、ページデザインのリニューアルを機にアップデートしました。</p></li> <li><p>Material Design for Bootstrap 4(https://mdbootstrap.com/)<br /> マテリアルデアインのUIキットです。無料版もありますが有償版の方を使ってます。<br /> カード型のスタイルなど、Koretteのデザインのベースになっています。</p></li> <li><p>leafletjs(https://leafletjs.com/)<br /> OpenStreetMapの地図操作ライブラリです。<br /> 地図ライブラリは、当初はYahooMapを利用していましたが、OpenStreetMapの方がマッピングパーティといった地域の人が地図を更新するイベントが行われるなど、Koretteと目指すところが近いものを感じたことからOpenStreetMapに変更することにしました。<br /> 観光スポット紹介ページの地図情報などで利用しています。</p></li> <li><p>Croppie(https://foliotek.github.io/Croppie/)<br /> 画像の縦横変換、切り抜き&リサイズライブラリ。<br /> クイズ投稿時の画像投稿機能で利用しています。<br /> 当初はアップロードしてサーバーサイドでリサイズしていましたが、ネットワーク負荷軽減などを考慮し、クライアント側で行うように変更しました。</p></li> <li><p>Garlic(http://garlicjs.org/)<br />  投稿フォームで入力中に別画面へ遷移した際に入力内容を保持しておくライブラリ。<br />  利用者さんからの要望で追加した機能です。</p></li> </ul> <h2 id="ウラ(バックエンド)"><a href="#%E3%82%A6%E3%83%A9%EF%BC%88%E3%83%90%E3%83%83%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%89%EF%BC%89">ウラ(バックエンド)</a></h2> <h3 id="採用しているフレームワーク・ライブラリなど"><a href="#%E6%8E%A1%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%BB%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AA%E3%81%A9">採用しているフレームワーク・ライブラリなど</a></h3> <ul> <li><p>CoreTweet(https://github.com/CoreTweet/CoreTweet)<br />  Twitter連携のライブラリ。Koretteのアカウントへのピックアップクイズの投稿に利用しています。</p></li> <li><p>SixLabors.ImageSharp(https://github.com/SixLabors/ImageSharp)<br /> ASP.NET Core対応の画像処理ライブラリです。<br /> 当初はユーザーの投稿画像をこのライブラリでリサイズしていましたが、現在はフロント側でリサイズされてサーバサイドに飛んできますので、飛んできた画像をもとにサムネイル用とOGP用の画像を生成する際に利用しています。 サムネイル用は単なるリサイズですが、OGP用は1200×630の白紙キャンパスに飛んできた画像をセンタリングして配置し縦横比を変換するという処理を行っています。<br /> また、このライブリでは、画像無しでクイズを投稿した際にタイトル名を画像化する機能としても利用しています。</p></li> </ul> <h3 id="バッチ処理"><a href="#%E3%83%90%E3%83%83%E3%83%81%E5%87%A6%E7%90%86">バッチ処理</a></h3> <p>リリース後の機能追加で、人気クイズのランキングや、投稿者ランキングなどを実装しました。</p> <p>これらの機能について、リリース当初はユーザーが表示リクエストをした際に、クイズの解答履歴データを都度集計してランキング表示をしていました。またクイズの回答数も回答履歴を都度集計して表示していました。</p> <p>利用者が増え、徐々に回答履歴データが肥大化していくとともに、これらの処理が重くなっていきました。</p> <p>そこで、これらの処理をバッチ処理化することにしました。</p> <p>とはいっても、専用のジョブ管理ツールとか入れるまでのレベルではないと考えたので、ASP.NET CoreのWebAPIで処理を作成し、WindowsのタスクスケジューラからPowershellのスクリプトを定時キック、PowershellのスクリプトがWebAPIに鍵情報を付加したhttpリクエストを行うことにより処理を開始するという、「なんちゃってバッチ」で実装しています。</p> <p>また、バッチ処理化にあたり、大量にデータ更新するテーブルについては、障害対応とロック対策のために2テーブル化を行いました。</p> <p>PrimaryテーブルとSecondaryテーブルを作成し、Primaryテーブル参照時間帯にSecondaryテーブルをバッチで更新、時間経過後はその逆を行うという形にしています。<br /> 万が一バッチ処理の異常終了でテーブルがぶっ壊れた場合は、更新テーブールに切り替わるまでに復旧作業を行える時間稼ぎができるようになっています(実際はサラリーマンやってる時間にぶっ飛んだらどうにもなりませんがw)。</p> <p>また、バッチ化により、ランキングアルゴリズムを回答数だけでなく、複数の要素を組み合わせて集計するといったより高度な処理にすることも可能となりました。</p> <h3 id="インフラ周り"><a href="#%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E5%91%A8%E3%82%8A">インフラ周り</a></h3> <p>MicrosoftAzureでWindowsServer2012R2のVMを立てて、WEB・APサーバーとDBサーバー(SQLServer2016)を同居させています。</p> <p>VMのDISKは容量を最小にする代わりにPremium SSDを採用しIOのボトルネックを最小化。利用者の投稿画像などは別途BLOBストレージを用意し、そちらに配置するようにしています。</p> <p>自分の学習コストを最小限にするためにAzureやWindowsServerを選択していますが、ASP.NET CoreはLinuxでも動作するようになったので、Linuxへ以降すれば運用コストを減らすことができると思います(現在移行を検討中)。</p> <h1 id="技術の選択には学習コストの視点も"><a href="#%E6%8A%80%E8%A1%93%E3%81%AE%E9%81%B8%E6%8A%9E%E3%81%AB%E3%81%AF%E5%AD%A6%E7%BF%92%E3%82%B3%E3%82%B9%E3%83%88%E3%81%AE%E8%A6%96%E7%82%B9%E3%82%82">技術の選択には学習コストの視点も</a></h1> <p>冒頭に触れたように、私がプログラミングをほぼゼロから覚えてリリースできたのは、少しだけあった過去の経験から学習コストが最小となるWindows系とC#を選択したというのも大きかったのかなと思います。</p> <p>サービスをリリースまで至るには、技術的にオーソドックスじゃない、古くてもイケてなくても、自分の学習コストが最小化できるのであれば、それを選択しても良いと思うのです。</p> <p>一度、何かの技術を使ってサービスをリリースするまで至ることができれば、そこで得た基本的な知識や他の技術でもある程度応用がきいて、学習スピードは圧倒的に上がります。</p> <p>なので、いくつか軽く触ってみて、わかりやすい、使いやすいと思った言語や技術でとりあえず作ってみると良いのだと思います。</p> <p>プログラミングはハマると楽しくなって、ついつい新しい技術に手を出したくなることがあります。でもサービスをリリースするという視点で考えれば、学ぶことが目的ではなく、リリースするために学ぶのが目的のはずです。<br /> であれば、最小の学習コストという視点も観点のひとつとしてあるのかなと思います。</p> <p>まずは、自分で良さそうと思うものを決めて、あとは浮気せずリリースまで突っ走ってみると良いのではと思います。</p> <p>サービスのリリースはゴールではなくスタートです。<br /> まずはどんな形でもスタートラインに立ってみると、違う世界が見えてくると思いますよ。<br /> 私のサービスはリリースしてもうすぐ1年ですが、まだスタートラインをウロウロしている気もしなくはないですが・・・。</p> <p>頑張ってリリースまで到達できたら、山のように迷うことや選択を迫られることが出てきます。<br /> そのときは、必要に応じてアドバイスをもらえる環境も大切です。特に以下2つのSlackコミュニティは知見を持った人が沢山所属していて、アドバイスや情報交換ができるのでオススメです。私も所属させてもらっています。<br /> 門を叩いてみましょう。</p> <p>・マシュマロの運営者でもあるダースさんが運営している「<a target="_blank" rel="nofollow noopener" href="https://scrapbox.io/admin-guild-pr/%E9%81%8B%E5%96%B6%E8%80%85%E3%82%AE%E3%83%AB%E3%83%89">運営者ギルド</a>」</p> <p>・SeekGeeksというプランナーとエンジニアのマッチングWebアプリを運営しているny(にぃ)さんが運営する「<a target="_blank" rel="nofollow noopener" href="https://blog.seekgeeks.net/2017/11/wrote-about-monetize-geek-jam.html">Monetize-Geek-JAM</a>」</p> <p>上記のコミュニティの他に、私も場合は「Koretteサポーターズ」というコミュニティを自分で作ってしまいました。<br /> Koretteの目指すところに共感頂ける有志の方を公募させていただき、現在6名のサポーターに支えられています。<br /> 支援者&利用者の立場で、UXの改善をはじめ、迷ったときの相談相手になって頂いていて、凄く助かっています。</p> <h1 id="Koretteのこれから"><a href="#Korette%E3%81%AE%E3%81%93%E3%82%8C%E3%81%8B%E3%82%89">Koretteのこれから</a></h1> <p>ここからは少し宣伝チックな内容です。</p> <p>Koretteですが、皆様の応援に支えられ、少しづつですが利用者も増え、12月27日にリリース1周年を迎えるところです。</p> <p>これまで個人サービスとしてやっていましたが、このタイミングで、非営利の運営団体を設立し、Koretteの運営を団体として行っていこうと思います。</p> <p>設立する団体名は「CultiVision(カルティVision)」です。<br /> Vison(ありたい将来)をCulti(耕す)という意味を込めて造った造語です。</p> <p>「地域の人が自分の街の魅力を知り、好きになり、誰かに伝える、次の世代に残したくなる」<br /> そんな社会の実現に向けた活動を、農業の土作りのように、地域の人とともに畑を耕すように長期的な実りを期待して活動をしていけたらと思っています。</p> <p>団体化により、これまで個人名ではやりにくかった企業などとのコラボやイベントの開催などを行うなども予定しています。<br /> Webサービスとリアルの活動を組み合わせながら、サービスのさらなる普及を目指し、ありたい将来の実現に向けて進めていく予定です。</p> <p>まず、団体としての活動の第一弾として、12月中にKoretteのスマホアプリ版のリリースを予定しています!<br /> スマホアプリ化により、より気軽に楽しく遊んで頂けるようにしていきたいと思っています。<br /> その際は、プレスリリースも投げて、認知度を高めて行く予定です。</p> <p>サービスのみためもUXもまだまだですが、サービスにかける想いだけは、他の方に負けないように、あとは沢山の人に助けてもらいながら頑張っていきたいと思っています。</p> <p>今後とも応援の程、どうぞよろしくお願いいたします。</p> <h1 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h1> <p>ちょっと読者ターゲットが絞れない記事になってしまったかもしれません・・。<br /> この記事が、ほんの少しでも、みなさんのヒントになれれば幸いです。</p> <p><a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a>、明日は<a href="https://crieit.net/users/ckoshien">ckoshien</a>さんの「野球リーグスコア管理システムに用いている技術について」の記事です!お楽しみに!</p> Hiroz tag:crieit.net,2005:PublicArticle/14626 2018-12-05T09:08:01+09:00 2019-02-22T20:59:57+09:00 https://crieit.net/posts/e9c4b7e76be1f900445bac2c52af1cbd なるべくお金をかけず個人開発をしていくには <p>こちらは<a href="https://crieit.net">Crieit</a>の<a href="https://crieit.net/advent-calendars/2018/crieit">アドベントカレンダー Advent Calendar 2018</a>の5日目の記事です。</p> <p>自分は結婚しておりまして現在お小遣い制です。<br /> 独身時代と比較すると自由に使えるお金がそんなに多くありません。</p> <p>そんな中、個人でWebサービスを作るというのを趣味にしてます。<br /> Webサービスを作るためにはお金が色々かかるわけです。</p> <ul> <li>サーバー</li> <li>ドメイン</li> <li>素材</li> </ul> <p>そこで<strong>いかにお金をかけずに個人開発をしていくか</strong>を考えながら開発しています。<br /> そのノウハウをこの記事で書いていきたいと思います。</p> <h2 id="サーバー"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC">サーバー</a></h2> <p>作ったWebサービスを動かすための基盤が必要になるわけですがここが結構お金がかかるポイントじゃないでしょうか。<br /> さくらのVPSやConohaを使うのが最初に思いつくと思うのですが、これは月額制です。<br /> 払っているお金以上請求が来ないというのはすごく安心感があり魅力的です。</p> <p>ただ自分の場合そこにお金をあまりかけたくないです。ものすごくケチです・・・</p> <p>ということでSaasなどをうまく使ってお金を最低限しかかけないようにしてます。</p> <h3 id="SaaS/PaaS/MBaaSをうまく使う"><a href="#SaaS%2FPaaS%2FMBaaS%E3%82%92%E3%81%86%E3%81%BE%E3%81%8F%E4%BD%BF%E3%81%86">SaaS/PaaS/MBaaSをうまく使う</a></h3> <p>Webサービスを作るとなると</p> <ul> <li>Webアプリを動かすためにWebサーバーが必要</li> <li>APIを動かすためのアプリケーションサーバーが必要</li> <li>DBを動かすためにDBサーバーが必要</li> </ul> <p>といろんなサーバーが必要になりますし、運用を楽にするならそれぞれ冗長化をしたいところです。<br /> となるとやたらお金がかかるので自分でインフラは用意したくないです。</p> <p>ということでこういうのはSaas/PaaS/MBaaSを使って無料枠を駆使します。</p> <h4 id="Webホスティング"><a href="#Web%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0">Webホスティング</a></h4> <p>SPAを前提としますが、html/css/JavaScriptは静的ファイルです。<br /> 最近は無料で静的ファイルをホスティングできるところが増えてきています。</p> <ul> <li>Netlify</li> <li>GItHub Pages</li> <li>Firebase Hosting</li> </ul> <p>その他にはAWS S3でもWebホスティングできるので安く済ませることが出来ます。</p> <p>またこれらはHTTPSに必要な証明書も無料で発行してくれます。<br /> 今時であれば必ずHTTPS対応しておきたいので、これは嬉しい。Let's Encryptさまさまです!<br /> (S3であればCloud Frontを使ってHTTPS対応する必要がありますが)</p> <h4 id="APIやDB"><a href="#API%E3%82%84DB">APIやDB</a></h4> <p>ブラウザからは直接叩けないものをバックエンドのAPIから叩きたいとか<br /> 情報をDBに保存したいという要件は必ずあるでしょう。</p> <p>これはFirebaseやHerokuといったMBaasやPassの無料枠を使うことが出来ます。</p> <ul> <li>Firebase <ul> <li>認証/API/DB/ストレージと全部揃ってる</li> <li>DBはNoSQLなので要件にあったら使うといい</li> <li>無料プランがある</li> </ul></li> <li>Heroku <ul> <li>RailsなどのWebアプリケーション置ける</li> <li>MySQLやRedisが無料で使える(制限がきついけど)</li> </ul></li> </ul> <p>もちろんFirebaseとHerokuを組み合わせて使うことも出来るのでおすすめです。</p> <p>ちなみになんですがこういうインフラを考えなくて良いサービスを作ってると<strong>監視も最低限で済みます</strong>。<br /> Firebase起因の障害でない限り落ちたりはしないので!<br /> 監視をしたい場合はメトリクスの保持期間の少なさや制限が多いですが<a target="_blank" rel="nofollow noopener" href="https://mackerel.io/ja/">Mackerel</a>もフリープランがあるのでそれが使えます。</p> <h4 id="ストレージ"><a href="#%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8">ストレージ</a></h4> <p>画像や動画を保存したくなると思いますが、それも最近は従量課金やその無料枠で使うことが出来ます。</p> <ul> <li>AWS S3</li> <li>Firebase Storage</li> <li>Cloud Storage</li> </ul> <h2 id="ドメイン"><a href="#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3">ドメイン</a></h2> <p>Webサービスを公開するためにはできれば<strong>独自ドメイン</strong>がほしいところです。<br /> ただWebホスティングできるサービスはだいたいそこの無料ドメインを提供してくれるので、お金をケチりたかったらそれを使ってもいいと思います。</p> <h3 id="サブドメインをサービスのドメインにする"><a href="#%E3%82%B5%E3%83%96%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B">サブドメインをサービスのドメインにする</a></h3> <p>せっかく自分のWebサービスを作ったんだから、どうせならイケてるドメインにしたいですよね!<br /> <a target="_blank" rel="nofollow noopener" href="https://kibe.la/ja">Kibela</a>は「kibe.la」というドメインで非常に美しいです・・・</p> <p>ただドメインを取得するにはお金がかかります。<br /> 1ドメインが安くても年間1,000円前後はかかるんじゃないですかね。(セールはありますが!)</p> <p>しかし1回買って終わりじゃなく、毎年請求がきます。<br /> 1サービスだったらいいかもしれませんが、何個も何十個も作っていくと結構な額になります。</p> <p>そこで自分は、<strong>作ったサービスはほとんどサブドメインにしてます。</strong></p> <ul> <li>nyaaan.haramishio.xyz</li> <li>markdowntable.haramishio.xyz</li> <li>blog.haramishio.xyz</li> <li>trash.haramishio.xyz</li> </ul> <p>オシャレ感はありませんが、1ドメイン分のお金しか払わなくていいので安く済みます。</p> <p>またサブドメイン戦略は他にもメリットがあります。</p> <h4 id="サブドメインだと広告を出すのが楽"><a href="#%E3%82%B5%E3%83%96%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%A0%E3%81%A8%E5%BA%83%E5%91%8A%E3%82%92%E5%87%BA%E3%81%99%E3%81%AE%E3%81%8C%E6%A5%BD">サブドメインだと広告を出すのが楽</a></h4> <p>以下の内容は間違いで、一回ルートドメインで審査通れば別ドメインでも広告出せるみたいです。</p> <p>Google Adsenseで広告を出すのは一般的じゃないかなと思ってるのですが、<br /> Adsenseは<strong>そのドメインで広告を出す許可をもらったら、そのサブドメインすべてで広告を載せることが出来ます。</strong></p> <p>僕の場合は、このブログのドメインで広告を出す許可をもらったのでその他のサブドメインで広告を載せられるようになりました。<br /> 1つ1つのサービスでドメインを取っていると毎回広告を出す申請(結構ハードル高い)をしないといけないので大変です。</p> <h2 id="素材"><a href="#%E7%B4%A0%E6%9D%90">素材</a></h2> <p>Webサービスを作ってると、どうしてもイラストやロゴなど素材が必要になります。<br /> 僕は絵を書くスキルが皆無なのでフリー素材でどうにかしています。</p> <h3 id="ロゴ"><a href="#%E3%83%AD%E3%82%B4">ロゴ</a></h3> <p>サービスのロゴは<strong>フリーイラスト</strong>と<strong>フリーフォント</strong>で作ってます。<br /> フリーフォントでいいのないかなーと探すときに便利なのが<a target="_blank" rel="nofollow noopener" href="https://tameshigaki.jp/">ためしがき</a>です。</p> <p>これで良さそうなフォントを見つけたら、Gimpに入れてロゴを作ってます。</p> <h3 id="素材"><a href="#%E7%B4%A0%E6%9D%90">素材</a></h3> <p>フリーのイラストは「フリー イラスト ○○」でひかかったものを使ってます。<br /> 特にこれ!っていうサイトはないですが、「いらすとや」はなるべく使わないようにしてます。</p> <p>なぜかというと、いらすとやのイラストの世界観が強すぎてうまくサービスにマッチしないときが多いからです。</p> <h2 id="運用方針"><a href="#%E9%81%8B%E7%94%A8%E6%96%B9%E9%87%9D">運用方針</a></h2> <p>個人で開発・運用してますのである程度「俺ルール」を使えると思っています。</p> <p>なので、現在Firebaseを従量課金プランで使うことが多いのですが<br /> もしトラフィックが多くなり多額の請求が来そうになったら<span style="color: #ff0000"><strong>サービスを止めると思います</strong></span><br /> そういう割り切りを行えるのも個人開発のいいところだと思います。</p> <p>ただ永久閉鎖というわけではなく、利益を取れるようマネタイズを考えた上でインフラをきちっと整えたものでまた出せればと思ってます。<br /> そんな機会あるのかわかりませんがw</p> <h2 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h2> <p>ということで、なるべくお金をかけずに個人開発をしていくにはというお話をしました。<br /> 昔よりはだいぶ安く済ませるためのサービスが出ているので、いい時代になりました。</p> <p>同じようにお金あんまりかけられない・・・って人はぜひ参考にしていただけばと思います!</p> <hr /> <p>ちなみになんですが、現在4サービス運営しておりまして<br /> そのサーバー費用やドメイン費用合わせて <span style="color: #ff0000"><strong>毎月200円くらい</strong></span>です。<br /> ほぼドメイン費用とDNSサーバー費用です。</p> <hr /> <p>次回は<a target="_blank" rel="nofollow noopener" href="https://twitter.com/goodengineer7">Sさん</a>です。お楽しみに!</p> Morix💪😼✨ tag:crieit.net,2005:PublicArticle/14619 2018-12-02T08:57:46+09:00 2018-12-03T08:12:55+09:00 https://crieit.net/posts/Nyaaan Nyaaanを支える技術 <p>こちらは<a href="https://crieit.net">Crieit</a>の<a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a>の2日目の記事です。<br /> 前日は<a target="_blank" rel="nofollow noopener" href="https://twitter.com/nabettu">なべ</a>さんの<a href="https://crieit.net/posts/9a531cc77a86bfec6a0ad932dac69b56">日本語のフリーフォントを一度に試せる「ためしがき」に用いられている技術について</a>でした!</p> <hr /> <p>11/5に<a target="_blank" rel="nofollow noopener" href="https://nyaaan.haramishio.xyz/">Nyaaan</a>というWebサービスをリリースしました。</p> <p>そこで</p> <ul> <li>どのような技術を使ってるのか</li> <li>どういう知見が得られたのか</li> </ul> <p>を書いていこうと思います!</p> <p>どういうサービスかは以下の記事を読んでいただけたらと思います!</p> <p><a target="_blank" rel="nofollow noopener" href="https://blog.haramishio.xyz/entry/service-nyaaan">https://blog.haramishio.xyz/entry/service-nyaaan</a></p> <h2 id="使用している技術"><a href="#%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E6%8A%80%E8%A1%93">使用している技術</a></h2> <p>ざっくりな構成でいうと</p> <ul> <li>フロントエンド <ul> <li>Nuxt.js</li> </ul></li> <li>Webホスティング <ul> <li>Netlify</li> </ul></li> <li>バックエンド <ul> <li>Firebase</li> </ul></li> </ul> <p>です。</p> <h3 id="Nuxt.js"><a href="#Nuxt.js">Nuxt.js</a></h3> <p>Nuxt.jsはVue.jsアプリケーションを作るためのフレームワークです。<br /> ちょっと大きめのVue.jsアプリを作る際に必要なVuexやVue Routerなどが入ってるのでNuxtをインストールすればすぐにWebアプリが作れます。<br /> 今回はSSR(サーバーサイドレンダリング)を行わないため、<strong>SPAモード</strong>で利用しています。</p> <h3 id="Netlify"><a href="#Netlify">Netlify</a></h3> <p>Webホスティングはさまざまな種類がありますが、今回はNetlifyを選択しました。<br /> 選択した理由としては・・・</p> <ul> <li>ビルドを勝手にやってくれる(<code>npm run build</code> がビルドコマンドよ!ってNetlifyに登録しとくだけでいい)</li> <li>ビルドしたらデプロイもやってくれる</li> <li>他のホスティングサービスと比較して無料枠の制限が少ない</li> </ul> <h3 id="Firebase"><a href="#Firebase">Firebase</a></h3> <p>APIやDBが必要になったのですが、すべてFirebaseで行いました。<br /> 主要なFirebaseサービスはHostingとML Kit以外使いました。</p> <p>それぞれの用途としては・・・</p> <ul> <li>Authentication <ul> <li>Twitter認証のため利用</li> </ul></li> <li>Firestore <ul> <li>ユーザ投稿データやユーザデータを保存</li> </ul></li> <li>Functions <ul> <li>Twitter APIに問い合わせる処理やユーザ削除機能で利用</li> </ul></li> <li>Storage <ul> <li>ユーザのアイコンの保存で利用</li> </ul></li> </ul> <h2 id="得られた知見"><a href="#%E5%BE%97%E3%82%89%E3%82%8C%E3%81%9F%E7%9F%A5%E8%A6%8B">得られた知見</a></h2> <h3 id="Firestoreのクエリーのクセ"><a href="#Firestore%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%BC%E3%81%AE%E3%82%AF%E3%82%BB">Firestoreのクエリーのクセ</a></h3> <p>FirestoreはNoSQLです。RDBのような柔軟なクエリーを書くことは出来ません。<br /> その制限にひっかかってちょっと苦しんだ事例があるので共有します。</p> <p>Nyaaanでは「有効期限」という機能があり<br /> これを設定すると1時間または1日経つと、鳴き声(つぶやきみたいなもの)が見れなくなるというものです。</p> <p>その鳴き声テーブルはこんな感じになってます(本当はもっとカラムあります)</p> <div class="table-responsive"><table> <thead> <tr> <th>カラム</th> <th>型</th> </tr> </thead> <tbody> <tr> <td>ID</td> <td>string</td> </tr> <tr> <td>鳴き声</td> <td>string</td> </tr> <tr> <td>本音</td> <td>string</td> </tr> <tr> <td>有効期限</td> <td>timestamp</td> </tr> <tr> <td>作成時間</td> <td>timestamp</td> </tr> </tbody> </table></div> <p>Nyaaanにはタイムラインがあり、鳴き声は作成時間の降順でソートしたいです。<br /> なので・・・</p> <pre><code class="javascript">// カラム名はわかりやすく日本語にしてます mewRef.where("有効期限", ">", now).orderBy("作成時間", "desc").limit(10).get() </code></pre> <p>としたかったのですがこれはNG。<br /> 範囲フィルタ(>や>=)を使う場合は、orderByの最初の要素はその範囲フィルタで使用したカラムしか指定できません。<br /> <a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/firestore/query-data/order-limit-data?hl=ja">Cloud Firestore でのデータの並べ替えと制限</a></p> <p>RDBならこういうのは普通にできますが、NoSQLはこういう制限があるのかと勉強になりました。</p> <p>結局どうしたかというと、後述するバッチ的なもので有効期限をチェックして削除してます。</p> <h3 id="FirebaseでCron的なことをしたいとき"><a href="#Firebase%E3%81%A7Cron%E7%9A%84%E3%81%AA%E3%81%93%E3%81%A8%E3%82%92%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D">FirebaseでCron的なことをしたいとき</a></h3> <p>上述したバッチ的なものの話です。</p> <p>サービスを作っていくとバッチが必要になる場面があるとおもいます。<br /> なにかしらの処理を定期的に動かすとなるとCronを使ったりJenkinsを使ったり色々あると思います。<br /> これらはサーバーが必要になりますよね。<br /> すでに持ってる人はそれを使えば良いんですが、僕はお金をかけたくないのでどうにかしてサーバーレスにしたいです。</p> <p>さて、FirebaseのFunctionsはHTTPSフックで起動することが出来ます。<br /> つまりcronでcurlを定期実行すればバッチみたいなことができるわけです!</p> <p>そして世の中には外形監視のために定期的に指定したURLを叩いてくれるサービスがあります。<br /> <a target="_blank" rel="nofollow noopener" href="https://cron-job.org/en/">cron-job.org</a>や<a target="_blank" rel="nofollow noopener" href="https://uptimerobot.com/">Uptime Robot</a>がそれです。</p> <p>これを利用してFunctionsを定期的にトリガーするようにしてバッチ処理をサーバーレスで実現しました。</p> <p>懸念点として、Functionsの実行を外部からできるようにしてしまっているのでセキュリティ的に問題ないのか?という点ですが<br /> 今回の場合はリクエスト時にGETパラメーターでアクセストークンを渡しており、そのアクセストークンじゃないとアクセス拒否するようにコーディングしています。<br /> それでも攻撃されて突破されるリスクもなくはないので、センシティブなことをしたい場合はやめたほうがいいと思います。</p> <h3 id="Functionsの様々なトリガー"><a href="#Functions%E3%81%AE%E6%A7%98%E3%80%85%E3%81%AA%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC">Functionsの様々なトリガー</a></h3> <p>Fucntionsのトリガーは色々あります。</p> <div class="table-responsive"><table> <thead> <tr> <th>トリガー</th> <th>内容</th> </tr> </thead> <tbody> <tr> <td>HTTPS</td> <td>URLを叩くだけ</td> </tr> <tr> <td>onCall</td> <td>クライアントから直接呼び出し</td> </tr> <tr> <td>Authentication</td> <td>ユーザの登録/削除で呼び出し</td> </tr> <tr> <td>Firestore</td> <td>ドキュメントの登録/更新/削除で呼び出し</td> </tr> <tr> <td>Storage</td> <td>オブジェクトの登録/更新/削除で呼び出し</td> </tr> <tr> <td>Pub/Sub</td> <td>Cloud Pub/SubのPublishで呼び出し</td> </tr> </tbody> </table></div> <p>NyaaanではHTTPSとAuthenticationのトリガーを使用してます。<br /> 特にAuthenticationトリガーは便利で、以下のようにFunctionsに書くだけで簡単に書くことが出来ます。</p> <pre><code class="javascript">// ユーザが削除されたら実行されるFunction exports.removeUser = functions.region('asia-northeast1').auth.user().onDelete(function(user, context) { ~~~ }); </code></pre> <p>Nyaaanではユーザ削除されると今までの鳴き声が消えるようになってます。<br /> クライアントでそこまでやると重いので、クライアントではAuthenticationのユーザだけ削除してレスポンスをすぐ返し、<br /> FunctionsのAuthenticationトリガーで非同期で削除処理を走らせてます。</p> <h3 id="Netlifyのリダイレクト設定"><a href="#Netlify%E3%81%AE%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E8%A8%AD%E5%AE%9A">Netlifyのリダイレクト設定</a></h3> <p>Nuxt.jsのSPAモードを使用していて、Netlifyでホスティングしていたのですが<br /> ルートパス以外を直接呼び出すと404エラーになってしまいます。(例: https://nyaaan.haramishio.xyz/top)</p> <p>SPAではルートパス以外でアクセスされたらindex.htmlへリダイレクト処理をする必要があります。</p> <p>Netlifyはリダイレクトの機能があり、デプロイするディレクトリのトップに <code>_redirects</code> を配置しそこにリダイレクト設定を記述するとリダイレクトしてくれます。</p> <pre><code>/* /index.html 200 </code></pre> <p>この話をもうちょいちゃんと説明したのがこちらの記事になります。<br /> <a href="https://crieit.net/posts/Netlify-404">Netlifyを使ってたらルートパス以外が404になった話とその解決方法</a></p> <h2 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h2> <p>ということでNyaaanの使用技術とそこから得た知見を書きました!<br /> この記事でみなさんの開発のヒントになれれば幸いです!</p> <p>さて、明日はこのアドベントカレンダーが開催されている<a href="https://crieit.net">Crieit</a>の運営者の<a target="_blank" rel="nofollow noopener" href="https://twitter.com/dala00">だら</a>さんです!</p> Morix💪😼✨