tag:crieit.net,2005:https://crieit.net/users/kame_f_no7/feed ほげにしの投稿 - Crieit Crieitでユーザーほげにしによる最近の投稿 2019-01-29T00:13:24+09:00 https://crieit.net/users/kame_f_no7/feed tag:crieit.net,2005:PublicArticle/14718 2019-01-12T16:24:34+09:00 2019-01-29T00:13:24+09:00 https://crieit.net/posts/SemanticUI SemanticUIでイマドキの横スクロールを実現する <p><a target="_blank" rel="nofollow noopener" href="https://semantic-ui.com">SemanticUI</a>が好きでずっと使っています。</p> <p>特に<a target="_blank" rel="nofollow noopener" href="https://semantic-ui.com/views/card.html">Card component</a>は使い勝手がよく、しょっちゅうお世話になるのですが、これをイマドキの横スクロールで使いたい。</p> <p>というわけで数行のCSS魔改造で実現してみるという小ネタです。</p> <hr /> <h2 id="完成品はこちら"><a href="#%E5%AE%8C%E6%88%90%E5%93%81%E3%81%AF%E3%81%93%E3%81%A1%E3%82%89">完成品はこちら</a></h2> <p>CodePENに上げてるのでよければ見てみてください。</p> <p data-height="329" data-theme-id="0" data-slug-hash="PXxJyd" data-default-tab="css,result" data-user="tomomichi" data-pen-title="Horizontal Scrollable Cards with Semantic UI " data-preview="true" class="codepen">See the Pen <a target="_blank" rel="nofollow noopener" href="https://codepen.io/tomomichi/pen/PXxJyd/">Horizontal Scrollable Cards with Semantic UI </a> by o_tomomichi (<a target="_blank" rel="nofollow noopener" href="https://codepen.io/tomomichi">@tomomichi</a>) on <a target="_blank" rel="nofollow noopener" href="https://codepen.io">CodePen</a>.</p> <h2 id="やってること"><a href="#%E3%82%84%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%93%E3%81%A8">やってること</a></h2> <p>デフォルトのCards componentに、独自のscrollingクラスをつけています。<br /> HTML側でいじってるのはこれだけ。</p> <p>あとはスマホサイズのときのみscrolling内のcardが横スクロールするよう、CSSを上書きしています。<br /> 元のCSSがflexを設定してるので、no-wrapにしてる感じです。</p> <hr /> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>という感じでイマドキの横スクロールUIができました。</p> <p>これが本当に使いやすいかどうかは議論の余地ありですが、個人的にはけっこう好きです。<br /> (あんまり数が多いと絶対見ないので、多くても5〜6個くらいまでが使いどころじゃないかと)</p> <p>SemanticUI、とてもよいのでよければ使ってみてください。<br /> おしまい。</p> ほげにし tag:crieit.net,2005:PublicArticle/14624 2018-12-04T07:33:09+09:00 2018-12-05T03:12:03+09:00 https://crieit.net/posts/2011 2011年の個人開発を支えた技術 <p>この記事は、「<a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a>」4日目の記事です。</p> <p><a href="https://crieit.now.sh/upload_images/12f44502ec3391da99ab5dfc2fc0fc8f5c04ec6a5f022.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/12f44502ec3391da99ab5dfc2fc0fc8f5c04ec6a5f022.png?mw=700" alt="20181119185903.png" /></a></p> <p>2011年(なんともう7年前!)に、初めての個人開発で「booklovesmusic(ブック・ラブズ・ミュージック)」というサービスを作りました。</p> <p>個人的に思い入れが強くサービスが死んでからもドメインを維持してたのですが、さすがにキリがないので今年で更新をやめることにしました。<br /> 色々整理してると当時の状況を思い出して懐かしくなったので、供養の意味も込めて2011年当時の個人開発環境を振り返ってみようと思います。</p> <p>これから開発しようという方には何の参考にもなりませんが、ちょっとでも懐かしい気持ちになってもらえれば本望です。</p> <p>※当時新人エンジニアだった自分の開発環境なので、当たり前ですがこれが当時のスタンダードというわけではありません。またここで挙げてる技術や環境がレガシーというつもりもまったくありませんので誤解なさいませんように。。</p> <hr /> <h2 id="その前にサービスを追悼する"><a href="#%E3%81%9D%E3%81%AE%E5%89%8D%E3%81%AB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E8%BF%BD%E6%82%BC%E3%81%99%E3%82%8B">その前にサービスを追悼する</a></h2> <h3 id="🤔どんなサービスだったの?"><a href="#%F0%9F%A4%94%E3%81%A9%E3%82%93%E3%81%AA%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%EF%BC%9F">🤔どんなサービスだったの?</a></h3> <p>booklovesmusicは、読書にぴったりの音楽をおすすめしてくれるサービス、というコンセプトでした。</p> <p>具体的には、好きな本を選ぶとその本に紐付いたYoutubeのプレイリストが表示されるので、それを聴きながら読書を楽しむことができます。</p> <p>本とプレイリストの紐付けは完全にユーザー投稿型です。<br /> サイト上で好きなYoutubeの動画(音楽)をいくつか選ぶとAPI経由でYoutubeのプレリストを作成し、そのプレイリストと本を紐付ける、という仕様になっていました(がんばってるな。。)</p> <h3 id="☠️一瞬のアクセスと、死"><a href="#%E2%98%A0%EF%B8%8F%E4%B8%80%E7%9E%AC%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A8%E3%80%81%E6%AD%BB">☠️一瞬のアクセスと、死</a></h3> <p>リリース後にいくつかメディアでも取り上げていただき、ありがたいことにデビュー作にしてはそれなりのアクセスがありました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.lifehacker.jp/2012/05/120507booklovesmusic.html">https://www.lifehacker.jp/2012/05/120507booklovesmusic.html</a></p> <p>しかし、当たり前ですがほとんどのユーザーは投稿じゃなくて閲覧しかしなくて、いくら本を検索しても紐づくプレイリストが存在しないという状態でした(そりゃそうですね)。</p> <p>結局リリースから半年くらいは追加開発しながら運用を続けて、最後は誰にも使われなくなってフェードアウト、、という感じでこのサービスは一生を終えました。南無。</p> <p>いま振り返ると反省点ばっかりですが、<a target="_blank" rel="nofollow noopener" href="https://blog.notsobad.jp/entry/2018/07/30/110000">最初から期待値を下げて開発する</a>のが定番になった最近の自分からすると、当時の勢いみたいなのがうらやましかったりもします。</p> <hr /> <h2 id="当時の開発状況"><a href="#%E5%BD%93%E6%99%82%E3%81%AE%E9%96%8B%E7%99%BA%E7%8A%B6%E6%B3%81">当時の開発状況</a></h2> <p>というわけでこのbooklovesmusicを開発していた2011年当時の環境を、できるだけ思い出して書いてみようと思います。<br /> 不正確な記述もあるかと思いますがご容赦ください。</p> <h3 id="🛠言語/フレームワーク"><a href="#%F0%9F%9B%A0%E8%A8%80%E8%AA%9E%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF">🛠言語/フレームワーク</a></h3> <p>booklovesmusicはPHPで開発していて、フレームワークとしてCakePHPを使っていました。まだ1系だったのかな。</p> <p><a target="_blank" rel="nofollow noopener" href="https://cakephp.org/jp">https://cakephp.org/jp</a></p> <p>このちょっと前にプログラミング覚えたいと思って未経験の求人を探してたのですが、当時Web界隈ではほとんどPHPの求人ばっかりだったと思います。で自分も無事に新人エンジニアとしてPHPから入門しました。</p> <p>仕事では確か<a target="_blank" rel="nofollow noopener" href="https://framework.zend.com/">Zend</a>ベースの独自フレームワークを使ってて、モダンな環境を知りたい!と思ってRailsインスパイアなCakePHPを使ってみたはず。</p> <p>ControllerとかModelとか大量に作られるフォルダの意味が全然わからず、最初はかなり絶望したのがいい思い出です。。<br /> この経験のおかげで後にRailsさわったときのハードルが多少下がった気がするので、まったく無駄というわけではなかった、と思いたい。</p> <h3 id="💻ローカル環境"><a href="#%F0%9F%92%BB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E7%92%B0%E5%A2%83">💻ローカル環境</a></h3> <p>マシンは買ったばかりのMacBookPro(Mid2010)を使っていました。<br /> <a target="_blank" rel="nofollow noopener" href="https://blog.notsobad.jp/entry/54791577771">メモリを増設</a>したり<a target="_blank" rel="nofollow noopener" href="https://blog.notsobad.jp/entry/82691328054">SSDに換装</a>したりして、けっこう最近まで使ってた愛用マシンです。</p> <p>ローカルサーバーは象のアイコンでおなじみの<a target="_blank" rel="nofollow noopener" href="https://www.mamp.info/en/">MAMP</a>を使ってましたね。便利だったよMAMP<br /> 🐘</p> <p>エディタは確か<a target="_blank" rel="nofollow noopener" href="https://www.mimikaki.net/">miエディタ</a>(旧名ミミカキエディット)を使ってたはず。</p> <p>その頃会社のマシンはWindowsで、<a target="_blank" rel="nofollow noopener" href="https://www.eclipse.org/">Eclipse</a>が推奨されてたけどどうしても好きになれず、途中からはもっぱら<a target="_blank" rel="nofollow noopener" href="https://sakura-editor.github.io/">サクラエディタ</a>を愛用してました。WindowsではXampp使ってましたね。</p> <p><a target="_blank" rel="nofollow noopener" href="https://sakura-editor.github.io">https://sakura-editor.github.io</a></p> <h3 id="⚙インフラ"><a href="#%E2%9A%99%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9">⚙インフラ</a></h3> <p>インフラはレンタルサーバーで、ロリポップの当時の最安プラン(月200円くらい?)を使っていました。<br /> 仕事の研修で使ってたので、同じ環境に揃えたんですね。</p> <p><a target="_blank" rel="nofollow noopener" href="https://lolipop.jp/" target="_blank" rel="noopener">ロリポップ!レンタルサーバー|WordPressの表示速度No.1</a></p> <p>AWSとかもまだそこまで一般的じゃなくて、個人開発だとレンタルサーバーは割と一般的な選択肢だったような気がします。知らんけど。</p> <p>ちなみにメディアで取り上げてもらったときはアクセスが集中して一瞬でサーバーが落ちたのですが、なんとこのときはまだ「サーバーが落ちる」という概念を知らなかったです(すごい)。</p> <p>ロジックが間違ってないのに動かないのはおかしい!と思っているうちに波が去って、よくわからないうちに復帰してました。<br /> わからないことがあったら詳しい人にちゃんと聞こう(大事)。</p> <h3 id="📦デプロイ"><a href="#%F0%9F%93%A6%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4">📦デプロイ</a></h3> <p>男は黙ってFTP、です。<br /> 毎回プロジェクトフォルダ全体を、レンタルサーバーのディレクトリにFTPで上書きアップしていました。</p> <p>後述するようにバージョン管理はまだ導入してなかったので、いま思うとよく無事にプロジェクトを維持してたなーという印象。<br /> しかし実際何とかなってたので、まぁがんばれば何とかなるんだなという知見を得ました。</p> <p>FTPのクライアントソフトは黄色いアヒルの<a target="_blank" rel="nofollow noopener" href="https://cyberduck.io/">Cyberduck</a>を使ってました。</p> <h3 id="🔗バージョン管理"><a href="#%F0%9F%94%97%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86">🔗バージョン管理</a></h3> <p>もちろんまだ導入していませんでした。<br /> 当時は世間的にもまだgitが今ほど普及してなくて、<a target="_blank" rel="nofollow noopener" href="https://subversion.apache.org/">Subversion</a>(SVN)の方が主流だったような。</p> <p>とぼけた亀がマスコットの<a target="_blank" rel="nofollow noopener" href="https://tortoisesvn.net/">TortoiseSVN</a>を仕事では使ってたので、バージョン管理の概念自体は知ってたはず。<br /> まぁ趣味開発だしそこまで必要性を感じなかったんですかね。。なかなか男らしい決断です。</p> <p><a target="_blank" rel="nofollow noopener" href="https://tortoisesvn.net/">https://tortoisesvn.net/</a></p> <p>バージョン管理がない上に当初はステージング環境もなかったので、デプロイして動かなかったときは悲惨です。<br /> これはどう対応してたかというと、定期的にプロジェクトフォルダ全部コピーしてバックアップ取ってたような記憶があります。<br /> 本当によく管理できてたな。。</p> <p>でもいま振り返ると、余計な学習コストを増やさなかったのはいい判断だった可能性もワンチャンあるんじゃないかと🐶<br /> すべてが初めてだったので、全部まともにやってたらとても完成しなかったはず。。</p> <h3 id="🤖ステージング環境"><a href="#%F0%9F%A4%96%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E7%92%B0%E5%A2%83">🤖ステージング環境</a></h3> <p>というわけで、何回か本番デプロイして動かない!という経験をしたあとに、ステージング環境を作るということを学びましたw</p> <p>レンタルサーバーでステージング用にディレクトリをもう1個切って、本番アップする前にそっちにアップするようにしたんですね。<br /> これで随分デプロイに安心感が出たような気がします。</p> <p>しかし一部本番とパスが違って動かないところがあって、特定の処理はステージング用に書き換えたりしてたような記憶が。<br /> 本番とステージングのソースに乖離が出てたので、ステージングでは動いたのに本番では動かなかったり。ステージングとは。。</p> <h3 id="🎨デザイン/CSS"><a href="#%F0%9F%8E%A8%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%2FCSS">🎨デザイン/CSS</a></h3> <p>最後はデザインまわりの話。<br /> この頃からデザインも完全にひとりでやっていて、覚えたてのPhotoshopで画面イメージ作ったりしてました(もう使い方わすれた。。)</p> <h5 id="CSSフレームワーク"><a href="#CSS%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF">CSSフレームワーク</a></h5> <p>CSSもフレームワークは使ってなくて、完全に手探りでフルスクラッチです。<br /> ちょうどこの頃にBootstrapが登場して話題になり始めてたような気がするけど、このときはまだ使ってませんでした。</p> <p><a target="_blank" rel="nofollow noopener" href="https://getbootstrap.com">https://getbootstrap.com</a></p> <p>次のプロダクトで使ってみて、あまりの便利さに衝撃を受けたのを今でも覚えてます。<br /> 最近はずっと<a target="_blank" rel="nofollow noopener" href="https://semantic-ui.com/">Semantic UI</a>がお気に入りです。</p> <h5 id="レスポンシブ対応"><a href="#%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E5%AF%BE%E5%BF%9C">レスポンシブ対応</a></h5> <p>当時はまだまだガラケーも残ってたけど、スマホも普及期に入ってたはず。(仕事でガラケーの公式サイトも大量に作ってたな。。)</p> <p>仕事ではPCとスマホで完全にviewを分けることが多かったけど、ぼちぼちレスポンシブデザインなんてことも言われ始めてた気がします。</p> <p>が、booklovesmusicは完全にPCオンリー。スマホ対応を後回しにして、その「後」が永遠に来なかったパターンですね。<br /> あるある。</p> <p>仕事ではもちろんスマホ対応もしてたのですが、この頃はまだ全体的にPCファーストで作って、それをスマホ対応するっていう空気感だったような気がします。今では完全に逆のことが多いですね。</p> <h5 id="アイコンとか"><a href="#%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%A8%E3%81%8B">アイコンとか</a></h5> <p>あと個人的に今と大きく違うのは、ちょっとしたアイコンとかもこの頃は全部Photoshopで自作してました。えらい。まぁ他に選択肢を知らなかったんですが。。<br /> 今だと良くも悪くもfontawesomeとかで済ましちゃってますね。</p> <p><a target="_blank" rel="nofollow noopener" href="https://fontawesome.com/">https://fontawesome.com/</a></p> <p>自作のアイコンが全部微妙にいびつで歪んでるのが、いま見ると非常にほほえましいw</p> <hr /> <h3 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h3> <p>という感じで、いま振り返っても何で作りきれたのか不思議なくらい、初めて尽くしの開発でした。しかし楽しかった…!</p> <p>さすがに7年もやってると当時よりは技術も上がって(そしてそれ以上に環境がよくなって)作りたいものを思い通りにつくれるようになってきました。<br /> でも一方で、中途半端に技術と知識がついてリリースまでの動きが遅くなってるのも年々感じます。</p> <p>バージョン管理もしてないのにライブラリの中身を手動で書き換えて強引に動かしていたあの頃の情熱を思い出して、来年はもっと個人開発もバリバリやっていきたい所存です。<br /> まぁそのライブラリのバージョンが上がった瞬間に追従できなくて死んだので、やっぱり最低限の知識はあった方がいいと思いますけど😇</p> <hr /> <p>ちなみに、booklovesmusicはこれでサービス終了しますが、もしコンセプトに共感してリメイクしたいという方がいたらぜひ<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kame_f_no7">@kame_f_no7</a>まで連絡もらえるとうれしいです。</p> <p>そこまで好きなら自分で作れよって感じなんですが、残念ながらぼくは本読むときに音楽聞かないんですよね(なんで作ったw)</p> <p><a target="_blank" rel="nofollow noopener" href="https://blog.notsobad.jp/entry/2017/12/05/101957">個人開発はドッグフーディングが一番</a>なので、ぜひ本と音楽が好きな方に引き継いでもらえるとうれしいです。</p> <p>おしまい。</p> ほげにし