tag:crieit.net,2005:https://crieit.net/tags/%E9%81%8B%E5%96%B6%E8%80%85%E3%82%AE%E3%83%AB%E3%83%89/feed 「運営者ギルド」の記事 - Crieit Crieitでタグ「運営者ギルド」に投稿された最近の記事 2019-01-13T12:18:34+09:00 https://crieit.net/tags/%E9%81%8B%E5%96%B6%E8%80%85%E3%82%AE%E3%83%AB%E3%83%89/feed tag:crieit.net,2005:PublicArticle/14708 2019-01-04T00:01:00+09:00 2019-01-13T12:18:34+09:00 https://crieit.net/posts/slack slack流量計の新バージョンをリリースしました(1/13追記) <p><a href="https://crieit.now.sh/upload_images/08434b799d790cbc047b581b1a07cf185c2e11b63d2d0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/08434b799d790cbc047b581b1a07cf185c2e11b63d2d0.png?mw=700" alt="image" /></a><br /> 「<a target="_blank" rel="nofollow noopener" href="https://scrapbox.io/admin-guild-pr/運営者ギルド">運営者ギルド</a>」で使用している、どのチャンネルで活発に議論されているかを可視化するツール「slack流量計」を年末にバージョンアップした話を書こうかと思います。</p> <h1 id="運営者ギルドって?"><a href="#%E9%81%8B%E5%96%B6%E8%80%85%E3%82%AE%E3%83%AB%E3%83%89%E3%81%A3%E3%81%A6%EF%BC%9F">運営者ギルドって?</a></h1> <p>Webサービスの運営に必要なあらゆる知見を共有できる場として、Webサービス運営者達によって作られたコミュニティです。主にslackを用いて情報交換をしています。</p> <h1 id="slack流量計とは?"><a href="#slack%E6%B5%81%E9%87%8F%E8%A8%88%E3%81%A8%E3%81%AF%EF%BC%9F">slack流量計とは?</a></h1> <p>slack APIから書き込みの履歴を取得して日別・チャンネル別に書き込みの数を集計してslackにグラフとテキストで投稿するアプリケーションです。<br /> (ギルドでは呼称が変わりました。)</p> <h2 id="旧バージョンで使っていた技術"><a href="#%E6%97%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E6%8A%80%E8%A1%93">旧バージョンで使っていた技術</a></h2> <p>旧バージョンではSpringMVCのタスクスケジューラを使用してバッチでサーバサイドでグラフを生成していました。<br /> - Java<br /> - Spring MVCのタスクスケジューラ<br /> - <a target="_blank" rel="nofollow noopener" href="http://www.jfree.org/jfreechart/">JFreeChart(グラフ生成ライブラリ)</a><br /> - MySQL</p> <h2 id="新バージョンで使っている技術"><a href="#%E6%96%B0%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E6%8A%80%E8%A1%93">新バージョンで使っている技術</a></h2> <p>毎日定時に実行するのにnode-cronを使っています。今回はExpressでAPIを用意してクライアントサイド(chart.js)でグラフを生成し、puppeteerを使ってスクリーンショットを撮って画像を投稿するという形をとっています。<br /> - NodeJS<br /> - Express<br /> - TypeScript<br /> - <a target="_blank" rel="nofollow noopener" href="https://www.npmjs.com/package/node-cron">node-cron</a><br /> - chart.js<br /> - puppeteer<br /> - <a target="_blank" rel="nofollow noopener" href="https://www.npmjs.com/package/@slack/client">slack/client</a></p> <h1 id="バージョンアップ"><a href="#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97">バージョンアップ</a></h1> <h2 id="バージョンアップ作業"><a href="#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E4%BD%9C%E6%A5%AD">バージョンアップ作業</a></h2> <ul> <li>製造期間:12/28~30</li> <li>運用・改修:12/31~<br /> Javaからの移行なのでロジックは変えていませんが、ロジック以外はゼロから作っています。</li> </ul> <h2 id="バージョンアップした理由"><a href="#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E3%81%97%E3%81%9F%E7%90%86%E7%94%B1">バージョンアップした理由</a></h2> <ul> <li>いくつかデプロイしているJavaアプリケーションからNodeJSアプリケーションに移行を終えたかった</li> <li>slackに投稿する処理で文字数制限を超えて失敗するケースがあるので改修したかった</li> </ul> <h2 id="苦労した点"><a href="#%E8%8B%A6%E5%8A%B4%E3%81%97%E3%81%9F%E7%82%B9">苦労した点</a></h2> <ul> <li>chart.jsの<a target="_blank" rel="nofollow noopener" href="https://nagix.github.io/chartjs-plugin-colorschemes/colorchart.html">プラグイン</a>でカラーセットを使っているが、実際に生成すると見辛い色が存在した。</li> <li>puppeteerの動作で描画待ちをしていなかったため、グラフ描画前にスクリーンショットを撮ってしまう現象が発生。</li> </ul> <h1 id="自動表彰機能追加しました(1/5追記)"><a href="#%E8%87%AA%E5%8B%95%E8%A1%A8%E5%BD%B0%E6%A9%9F%E8%83%BD%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%281%2F5%E8%BF%BD%E8%A8%98%29">自動表彰機能追加しました(1/5追記)</a></h1> <p><a href="https://crieit.net/users/ampersand_xyz">あんど</a>さんの「<a target="_blank" rel="nofollow noopener" href="https://hyou.show/">WEB表彰</a>」をお借りして自動で週1回表彰する機能を組み込んでみました。<br /> <a href="https://crieit.now.sh/upload_images/7a7957261387b24d52e646e155b1c2b15c30957b80170.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7a7957261387b24d52e646e155b1c2b15c30957b80170.png?mw=700" alt="image" /></a></p> <ul> <li>puppeteerのpage.type()でフォーム入力できるから簡単♪<br /> →入力直後にフォーカスを奪われて入力できなくなる<br /> →page.evaluate()でDOM要素に直接書き込み。</li> <li>環境によるが、DOM書き換えだけでは描画が走らないことが判明<br /> →要素にフォーカスしてからkeyupイベントを送ることで対処</li> </ul> <pre><code class="typescript">await page.evaluate( (str)=>{ document.querySelector('input#receiver.input').setAttribute('value',str[0]) document.querySelector('#certificate_body.input').textContent = str[1] document.querySelector('input#sender.input').setAttribute('value','運営者ギルド勢いランキング') },str) await page.focus('#certificate_body.input') await page.keyboard.up('Shift') </code></pre> <ul> <li>1行22文字しか入力できないのでsubstring()</li> </ul> <h1 id="パンチカード実装しました(1/13追記)"><a href="#%E3%83%91%E3%83%B3%E3%83%81%E3%82%AB%E3%83%BC%E3%83%89%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%281%2F13%E8%BF%BD%E8%A8%98%29">パンチカード実装しました(1/13追記)</a></h1> <p><a href="https://crieit.now.sh/upload_images/d60015b542b6c2ad882b6bafad229c155c3aacd0ee038.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d60015b542b6c2ad882b6bafad229c155c3aacd0ee038.png?mw=700" alt="image" /></a><br /> 折れ線グラフと同じようにAPIを用意してchart.jsで描画しています。</p> <h1 id="今後の展望"><a href="#%E4%BB%8A%E5%BE%8C%E3%81%AE%E5%B1%95%E6%9C%9B">今後の展望</a></h1> <p><del>週1回、チャンネルごとではなくユーザごとの書き込み数で「表彰」したら面白そう?</del>(実装済み)<br /> <del>- GitHubのコミット履歴に昔あったパンチカードのグラフを実装したい</del>(実装済み)</p> <h1 id="ソース"><a href="#%E3%82%BD%E3%83%BC%E3%82%B9">ソース</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/ckoshien/slack_stream_node">GitHub</a></p> ckoshien tag:crieit.net,2005:PublicArticle/14679 2018-12-20T18:37:56+09:00 2019-01-06T07:43:02+09:00 https://crieit.net/posts/dd1e56dcdf934dcbde1d8b69068d0224 言いたいことを大きな声で言うツールを作った話 <p>「<a target="_blank" rel="nofollow noopener" href="https://sscard.monokakitools.net/covermaker.html">かんたん表紙メーカー</a>」 という、文字を打ち込んで画像を選ぶと表紙っぽいものをいろんなレイアウトで生成するツールを公開してます。</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>」で呟いたら、「URLシェアでOGB画像芸で遊びたい」という示唆をいただきました。</p> <p>「サーバにずっと保存しとくの好きじゃないんですよね~」→「パラメタ与えたPHPで画像出力すればできるのでは?テストはしてないけど」とアドバイスいただき、おっ、となったので、当初の目的はひとまず脇に置き、「入力したテキストをgetでPHPに投げて画像生成し、URLとTwitterCardに表示させるテキストを連動させる」というのを試してみることにしました。</p> <p><strong><a target="_blank" rel="nofollow noopener" href="https://monokakitools.net/shout/index.php?t=%E8%A8%80%E3%81%84%E3%81%9F%E3%81%84%E3%81%93%E3%81%A8%E3%82%92%E5%A4%A7%E3%81%8D%E3%81%AA%E5%A3%B0%E3%81%A7%E8%A8%80%E3%81%86%E3%83%84%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F&f=m">言いたいことを大きな声で</a></strong></p> <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Twitterカードを使って、大きな文字で主張するツールを作りました。メディア欄を使わず、画像ソフトも不要、Web上の画面にテキストを入力するだけ。「質問箱」「マシュマロ」等の質問表示に使われているのと同様の見せ方です。お好きに遊んでみてください。 <a target="_blank" rel="nofollow noopener" href="https://t.co/3d584cFmvw">https://t.co/3d584cFmvw</a> <a target="_blank" rel="nofollow noopener" href="https://t.co/knSTHW9tA1">pic.twitter.com/knSTHW9tA1</a></p>— 悠 (@you_at_pedal) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/you_at_pedal/status/1069452705557446656?ref_src=twsrc%5Etfw">2018年12月3日</a></blockquote> <p>技術的にはごくごくシンプルで、PHP GDライブラリを使いました、以上終了。おしゃれデザインとかイマドキUIとか何それおいしいの…。入力ページとかめっちゃ白いです。</p> <p>入力フォームとOGP埋め込み:index.php<br /> 画像出力:shout.php</p> <p>入力した文字が1200×630の画像上になるべくみっちり詰め込まれるよう、文字数から行数字数フォントサイズを算出して(これは試行錯誤しつつswitch関数使って場合分け)1行ずつ分割してimagettftextに投げて、ヘッダつけて、画像出力。</p> <p>shout.php?t=URLエンコードした文字列 をindex.phpのヘッダのmeta property="twitter:image" とbody内のimage要素に埋め込んで、index.phpの受け取ったパラメタと連動。</p> <p>で、シェアボタンを設置して、「言いたいことを大きな声で」のハッシュタグつきで、実際見ているページをシェアできるように設定。</p> <p>半日くらいでざかざか作って、個人アカウントでリリース、拡散力のあるSS名刺メーカーアカウントでRT。<br /> 思ったよりウケたので、ちょっとびっくりしました。トレンド入りました(笑 <br /> オタク、言いたいことめっちゃあるね……。</p> <p>途中からツール使わずにタグだけ使って叫ぶ人も一杯出てきてましたけど、それもまた面白いところです。<br /> リリース当日のPVが19万くらい、翌日が14万くらい行きました。一瞬の流行だったので、現在はタグ使ってる人が1時間に数人くらいかな~。</p> <p>シンプルな技術、かっこわるい見た目でも、簡単に使えて機能として面白がってもらえたら、けっこう反応貰えることもあるねえ、という話でした。<br /> めっちゃ技術力とかデザイン力とかないと個人開発とかできないよね!? とか思ってる人がいたら、全然全くそんなことはないので、楽しくやりましょ。</p> tag:crieit.net,2005:PublicArticle/14662 2018-12-16T00:08:22+09:00 2018-12-17T12:14:49+09:00 https://crieit.net/posts/NPO-Fastly-non-profits NPO法人をエンジニアが手伝うススメ!Fastly non-profits サポートプログラムなど <p>NPO 法人は、WEBサービスなどを無料または、格安で使わせてもらえるサービスがたくさんある。</p> <p>僕は NPO法人グリーンズ( <a target="_blank" rel="nofollow noopener" href="https://greenz.jp">greenz.jp</a> )のエンジニアとしても活動しているのだが、いろんな有料サービスに実際に触れることができて知見がたまり、他のプロジェクトでも生きているので、そんな NPO 向けのサービスを紹介と、エンジニアがNPO手伝うススメを書く。</p> <h2 id="NPO 法人向けのサービスの探しかた"><a href="#NPO+%E6%B3%95%E4%BA%BA%E5%90%91%E3%81%91%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E6%8E%A2%E3%81%97%E3%81%8B%E3%81%9F">NPO 法人向けのサービスの探しかた</a></h2> <p>探し方ですが、まずはNPO支援コレクション(通称:N コレ!)にまとまっているので、是非ここで探してみてほしい。<br /> <a target="_blank" rel="nofollow noopener" href="http://npo-sc.org/ncolle">http://npo-sc.org/ncolle</a></p> <p>有料サービスが、無料になったり、割引価格で使えるものが意外とたくさんある。</p> <p>この記事でもまとまっています。<br /> <a target="_blank" rel="nofollow noopener" href="https://rhodium.co.jp/2018/01/11/【npo必見】非営利組織-割引・特典-一覧/">https://rhodium.co.jp/2018/01/11/【npo必見】非営利組織-割引・特典-一覧/</a></p> <p>探してみるとコレも使えるのか!ってなるものをがあるのですが、いくつか自分のオススメの紹介する。</p> <h2 id="Slack 有料プラン"><a href="#Slack+%E6%9C%89%E6%96%99%E3%83%97%E3%83%A9%E3%83%B3">Slack 有料プラン</a></h2> <p>Slack は有料のスタンダードプランが無料になるというプログラムがある。<br /> <a target="_blank" rel="nofollow noopener" href="https://get.slack.help/hc/ja/articles/204368833-Slack-の-NPO-支援プログラム">https://get.slack.help/hc/ja/articles/204368833-Slack-の-NPO-支援プログラム</a></p> <blockquote> <p>Slack の NPO 支援プログラムは、審査を通った団体に対し、1つのワークスペースの有料プランへのアップグレードを無料または割引価格で提供しています。詳細は次の通りです :</p> <p>スタンダードプラン : メンバー数が250人以下のワークスペースに対しては無料のアップグレード、250人を超える規模のワークスペースに対しては85%の割引を提供します。</p> </blockquote> <p>Slack は有料になるとインテグレーションが無限につけれたり、グループメンション、メンバーの発言の分析など、無料版にはない機能が使える。NPOを支援する代わりに、いろんなインテグレーションや、一定数以上大人数で、運用ができるというのは、とても学びがある。</p> <p>Slack できることがとても増えるので、とてもオススメ。</p> <h2 id="G Suite for Nonprofits"><a href="#G+Suite+for+Nonprofits">G Suite for Nonprofits</a></h2> <p>Google の G Suite の NPO法人であれば無料で使える。<br /> <a target="_blank" rel="nofollow noopener" href="https://support.google.com/nonprofits/answer/3367223?hl=ja">https://support.google.com/nonprofits/answer/3367223?hl=ja</a></p> <p>G suite は、Google Apps まわりで、何かと便利なので、NPOを手伝うことで G suite になれるということができる。</p> <h2 id="株式会社ジャックアンドビーンズ Google Ad Grants の運用代行業務サポート"><a href="#%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%B8%E3%83%A3%E3%83%83%E3%82%AF%E3%82%A2%E3%83%B3%E3%83%89%E3%83%93%E3%83%BC%E3%83%B3%E3%82%BA+Google+Ad+Grants+%E3%81%AE%E9%81%8B%E7%94%A8%E4%BB%A3%E8%A1%8C%E6%A5%AD%E5%8B%99%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88">株式会社ジャックアンドビーンズ Google Ad Grants の運用代行業務サポート</a></h2> <p>そもそも、Google Ad Grants が NPOに向けては、月間100万円分(※10,000ドル分)の無料枠で広告出稿ができる。</p> <p>しかし広告出稿の作業意外と大変なので、さらにジャックアンドビーンズさんが無料で代行運用をしてくれるものがある。</p> <p>広告運用がめちゃくちゃ大変なので、とてもありがたいし、Google Ad Grants の設定の勉強にとてもなる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://npo-marketing-labo.com/free-support">https://npo-marketing-labo.com/free-support</a></p> <h2 id="Faslty の non-profits サポート"><a href="#Faslty+%E3%81%AE+non-profits+%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88">Faslty の non-profits サポート</a></h2> <p>上記のNコレ!にはないが、このリンクの下の方に Nonprofit Program っていうのがある。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.fastly.com/open-source">https://www.fastly.com/open-source</a></p> <p>具体的な内容は書いていないが、 greenz.jp は無料枠(一定金額まで)をもらって、Faslty を使うことができる。<br /> 強靭な Fastly キャッシュを無料で実際に運用できるのは、とても最高である。</p> <h2 id="なぜ エンジニアがNPO手伝うのを勧めるのか"><a href="#%E3%81%AA%E3%81%9C+%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%8CNPO%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AE%E3%82%92%E5%8B%A7%E3%82%81%E3%82%8B%E3%81%AE%E3%81%8B">なぜ エンジニアがNPO手伝うのを勧めるのか</a></h2> <p>NPO 界隈は、IT の力が圧倒的に足りていない。エンジニアという人種がNPOに関わることは、それだけで大きな力になる。<br /> Slack を導入を手伝うだけでも、Gsuite の設定をするだけでも、めちゃくちゃ貢献できる。</p> <p>エンジニアとの関わりが比較的つくりづらい NPO とって、エンジニアが近くにいるだけでとても力強い存在となれるのだ。</p> <p>また力強い存在になれるだけでなく、上記サービスで紹介したように、有料のサービスを実運用で提案しやすいというメリットがある。フリートライアルで数週間試すのと、実際に運用するのは全然ちがう。こうした実験というと語弊があるか、手伝うことでエンジニアとしても実運用の知見を手に入れることができるのは、とてもメリットがあると思う。</p> <p>しっかりと使いこなせるようになれば、無料でNPOを応援してくれているサービス提供社のサービスを、もっと僕らエンジニアは使うだろうし、そういったNonprofit事業を応援している会社をもっともっと僕らも応援するサイクルになれば win - win - win なのではないだろうか。</p> <p>是非、NPOは無料で使える気になるサービスがあったら、そのサービスでNPOを手伝ってあげるのはどうだろうか?</p> <p>注)もちろん、無理やり導入することで運用コストを上げるなど本末転倒な提案は絶対しないでくださいね。笑</p> yahsan2