Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

公開日 : 2018-01-21

FlaskとAngular JSで{{}}がかぶってエラーが起こるときの対処法

このエントリーをはてなブックマークに追加

FlaskとAngular JSを利用している際に、エラーが起こる


FlaskでAngular JSを利用して以下のようなHTMLコードを書いているときに、エラーが表示される。


<html ng-app>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>
</head>
<body>
  <h1>リダイレクトURL</h1>
  <p>OAuth Providerで登録した、Client IDと、リダイレクトURLを入力してください。</p>
  <form>
    <label for="client_id">クライアントID</label>
    <input type="textfield" name="client_id" id="client_id" ng-model="client_id" placeholder="クライアントID"></input>
    <label for="redirect_uri">リダイレクトURL</input>
    <input type="textfield" name="redirect_uri" id="redirect_uri" ng-model="redirect_uri" placeholder="リダイレクトURL"></input>
    <label for="textfield">スコープ</label>
    <input type="textfield" name="scope" id="scope" ng-model="scope" placeholder="scope"></input>
  </form>
  <p>生成されたURL</p>
    <a href="https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=263680507619-6sm2e6jv584ilmd7h6jrn5dstk6magke.apps.googleusercontent.com&redirect_uri=http://127.0.0.1:5000/callback.html/&scope=https://www.googleapis.com/auth/calendar
">これじゃ</a>
    <p>{{client_id + redirect_uri + scope}} </p>
  {% if result %}
  <h1>アクセストークン</h1>
    <form method="post">
      <label>Access Token</label>
      <blockquote>{{ result }}</blockquote>
      <input type="textfield" name="access_token" value="{{result}}">
      <input type="submit"></input>
  </form>
  {% endif %}

  {% if schedule %}
  <h1>スケジュール一覧</h1>
  <blockquote>{{ schedule }}</blockquote>
  {% endif %}

<!-- javascript-->
<script>
</script>
</body>
</html>


jinja2.exceptions.UndefinedError
jinja2.exceptions.UndefinedError: 'client_id' is undefined



スポンサーリンク

公開日 : 2018-01-20

【TwitterのAPIを利用するときに確認!】TwitterのOAuth認証はOAuth1.0を使っていた

このエントリーをはてなブックマークに追加
ツイッターのOAuth認証(オーオース)を利用しようと思って、クライアントアプリを作ろうと思っていた時に、リクエストトークンを使うことが前提となっていた。


OAuth認証では、リクエストトークンを使うなんてことはRFCの規定に書いていないので、なんじゃこりゃっとなった。


よくわからないので、「リクエストトークン」でいろいろググってみても、全然見つからなかった。出てくるのは基本ツイッターのOAuthに関することだけ。


なので、OAuth認証についていろいろ調べていく過程で、理解できたことをまとめる。




スポンサーリンク

プログラミング初心者がエラーが出たときに心がけること10つのこと

このエントリーをはてなブックマークに追加




プログラミング初心者だと、質問するのはとても難しいです。最初は何がわからないのか、わからない状態なので、どう質問していいかすらわかりませんよね。プログラミングを学習し始めた段階だと、ほとんどの人がみな同じ感情を抱きます。


特に初心者だと、とにかくエラーだらけになるので、「できないフィルター」にかかりがちです。実はほんの些細なタイプミスでも、わけわからないエラーが出てくるので、無条件でプログラミングが難しいと感じてしまうことが多々あります。


プログラミングのメンターを趣味でさせていただいているのですが、やっぱり初心者だと、できないフィルターにかかってしまい、本来であれば自分で解決できることに関しても調べる方法がわからず、また質問の仕方がわからず、非効率的な質問をしてしまっているんだろうなぁと最近感じます。(いうて自分も人のこと言える立場ではないのですが・・・・)


さすがに独学とは言え、2年書いていると、なんとなくエラーの解決方法がわかってくるのですが、もっと最初のうちにエラー解決のために知っておけることもあるなぁと感じました。


そこで、プログラミング初心者がエラーにぶちあった時に、質問する前にやることと、質問するときにやることに分けて、具体的に何をすべきかまとめてみたいと思います。



スポンサーリンク

公開日 : 2018-01-15

お金のために趣味を副業にするなって話

このエントリーをはてなブックマークに追加
自分の趣味を副業にしてお金を稼ぎたいと思う人が多いと思うんだけど、これをやる上でものすごく注意することがある。(自分がやってきて失敗したことの単なるまとめ)


それは、お金を稼ぐことを目的に趣味を副業にするのはやめておいた方がいいって話。外発的動機付けに内発的動機が消されて、つまらなくなるから。


そうではなく、趣味を楽しむ延長線上にお金が入る仕組みづくりをする必要がある。


昔僕はブログをひょんなきっかけで書き始めていて、最初は誰も見ないようなマニアックな教育社会学系の記事を書いていたんだけど(母校300人くらいの大学生の親の学歴調査したりとか)、広告入れてたら少しお金が入ることに気付いた。


なので、いわゆる稼げる記事を書き始めるようになったんだが、それはほとんど見られない。そしてやる気がなくなってブログを書くこと自体やめた。



で、社会人になって少しまた時間ができたので、スキルアップのための書評やらエンジニア系の記事を書いてたんだけど、そっちの方がモチベーション続くし、人に役に立つものが記事がすらすら書けるのよね。


そんなこんなで金稼ぎのために書いてた記事はほとんど読まれなかったけど、自分が面白いと思って書いた記事はやっぱり読まれるし、月諭吉くらいは入るようになった。


外発的動機付けでやろうとすると、もともとあった内発的な動機が消えてしまうらしいのだ。


楽しくてやってたのに、気付いたらお金のためにやってるみたいなことに、気付いたらなってて、モチベーション落ちてるみたいな。


なので、お金を稼ぐために趣味を副業化させるのはやめたほうがよい。てか冷静に考えると金稼ぐためにやってるなら、普通に土日パートやった方が全然コスパいいはず。


趣味を副業にするときは、何かしらお金以外にモチベーションになるものがない場合、引き受けると本業と違っていつでもやめられてしまうので、


・それをやって心から楽しいか
・それが自らのスキルアップになるか


というその二つの条件が満たせるものでモチベーションを維持できることを副業にするのがよいのかなぁと。

スポンサーリンク

公開日 : 2018-01-14

Python3 データをMySQLに挿入する

このエントリーをはてなブックマークに追加

目的

・自動更新サイトを作るときに、PythonでMySQLに外部サイトからスクレイピングしたデータを利用して、記事を自動生成したい


スポンサーリンク

公開日 : 2018-01-13

TypeError: numpy boolean subtract, the `-` operator, is deprecated, use the bitwise_xor, the `^` operator, or the logical_xor function instead. の解決方法

このエントリーをはてなブックマークに追加
TypeError: numpy boolean subtract, the `-` operator, is deprecated, use the bitwise_xor, the `^` operator, or the logical_xor function instead. の解決方法

結論から言うと、numpyのバージョン依存の問題らしい。
numpyをディグレードして、再度インストールしたら治った。



スポンサーリンク

Ubutnu PythonでChromedriverがインストールできないときの対処法

このエントリーをはてなブックマークに追加
Ubutnu PythonでChromedriverがインストールできないときの対処法のメモ。
結論から言うと、最新バージョンのChromedriver入れれば治る。


selenium.common.exceptions.SessionNotCreatedException: Message: session not created exception chromedriver

とか

selenium.common.exceptions.WebDriverException: Message: unknown error: missing or invalid 'entry.level'

とか、だいたいChromedriverのバージョンの問題らしいですぜ。







普通にChromedriver Ubuntuみたいに調べると、過去のQiitaの記事とかが上位に出るので、Chromedriver latestとかで調べるとよさそう。

































スポンサーリンク

Python SeleniumでJQueryを利用してテキスト検索を行う

このエントリーをはてなブックマークに追加
PythonでSeleniumを利用して、テキストを検索する際にjQueryを利用しようと思ってやって詰まった時のメモ



スポンサーリンク

公開日 : 2018-01-09

【認証】OAuth認証をBasic認証と比較して何がよいのか調べてみた

このエントリーをはてなブックマークに追加

# OAuth認証とはなにか 

OAuth認証に仕組みがわからなかったので調べたことのまとめ。
Basic認証と何が違うのか、どんなメリットがあるのか書いてみた。


  • あるWebサービスに別の外部サービスを利用して認証の仕組み
    • News Picksにログインするときにツイッターのアカウントを利用してログインするのはOAuth
    • Webサービスが別の外部サービスに「そのサービスでユーザーが使っているこの情報の提供を許可してくれない?」と聞いて、ユーザーが許可したら、その別の外部サービスからデータをとる許可証をWebサービスに提供するって仕組み

スポンサーリンク

公開日 : 2018-01-08

Rails text_area_tagのsize指定の方法

このエントリーをはてなブックマークに追加
Railsでtext_area_tagのsize指定方法が見つからなかったのでメモ。
今回書いたのがform_tagで実装したフォームなんだけど、フォームのメッセージを入力するところのサイズを指定したかった。実際に使ったコードはこんな感じ。

  <%= form_tag conversations_path, method: :post do %>
    <%= hidden_field_tag :user_id, @user.id %>
    <%= text_field_tag :subject, @user.username, placeholder: "Subject", class:"hidden" %>
    <div><%= text_area_tag :body, nil, placeholder: "メッセージ", class:"", size: "30x10" %></div>
    <div><%= submit_tag "送信", class:"send-message-button" %></div>
  <% end %>

この太字にしている

<%= text_area_tag :body, nil, placeholder: "メッセージ", class:"", size: "30x10" %>

のところなんだけど、sizeをシンボルで指定できるっぽい。

指定方法は2つあって、

size: "30x10"

みたいに指定する方法と、

cols: "30", rows: "10"

みたいにする方法があるらしい。

この辺を参考にした。

スポンサーリンク

公開日 : 2018-01-03

個人で片手間サービス開発日記③Tech Mentorsの実装面もろもろの要件定義

このエントリーをはてなブックマークに追加
続き。実装面の話。今までの話はここにまとめておく。


実装

  • 言語:Ruby | Ruby on Rails ,jQuery
    • 認証
      • devise:ログインを扱うgem
    • 投稿
      • redcarpet:マークダウンに対応させる
    • 検索
      • ransack:スキル検索(BY skill = ? AND teachable=? AND needMentor = ?みたいな感じになりそう)
    • スキルのタグ管理
    • ダイレクトメッセージ
      • ActionCable:
      • もしくは普通に一個ダイレクトメッセージのmodel作る
    • テスト
      • RSpec:単体テスト
      • Turnip:これはできたら。統合テスト
    • ウェブサーバー
      • 未定
    • アプリケーションサーバー
      • 未定
    • DB
      • sqlite:開発環境
      • MySQL:本番環境(未定)
    • SaaS
      • モックアップ:Heroku
      • ベータ版:どっかのVPS or AWS
      • 本リリース:AWS
  • DBの構造
    • User
      • id
      • username:string
      • password:string
      • profile:text
      • twitter:text
      • facebook:text
      • github:text
      • created_at:datetime
    • Skill(Act as Taggableになるかも)
      • id
      • skill:string
      • title:string
      • content:text
      • teachable:boolean
      • needhelp:boolean
    • Message
      • id
      • userid:int
      • userid:int
      • content:text
      • created_at:datetime
    • Reply
      • id
      • userid
      • title
      • content


開発工程


以前CtoCのサービス、いわゆるマッチングサイトやった時の失敗談はここにまとめておくけど、サービスを提供する側と供給と、サービスを欲している人の需要のバランスが取れず死んだ。なので、メンターをやりたい人と、メンティーになりたい人が両方存在するかどうかを検証する必要がある。


ただ、これに関してはあると考えていいとおもう。というのも、すでにクラウドソーシングで両方の案件が十分に存在するから。


サーバー


マネタイズとサーバー運用はフェーズによって分ける。
前回はリリースした後にherokuのfreeプラン使っていたので落ちまくりだった。
どのくらいスケールするかわからないけど、そこまで増えるかわからないので、AWSで基本運用しようと思う。

  • 集客フェーズ
    • マネタイズ:IT系の広告費用、マッチング自体が外部CtoCに誘導
    • サーバー:VPSもしくはAWS
  • アクティブユーザー増加フェーズ
    • マネタイズ:IT系の広告費用or転職アフィリエイト
    • サーバー:AWS
  • 仲介手数料フェイズ
    • マネタイズ:就活エージェントと仲介手数料
    • サーバー:AWS

集客


副業で稼いだお金で全部つぎ込む。
Facebook広告、News Picks、ツイッター広告に投資して集客する。
Facebookは前に実験で利用してなんとなく分かった。クラウドワークス、ランサーズ、ココナラあたりをフォローしている人ならいけそうな気がする。あとフリーランス事業者も対象者になりそう。そうするとLevatechとかもいけそうかな。


あとは、プログラミング初心者を支援している企業に声をかけてみる。TechCampとかその辺。


  • Facebook広告効果を数字で検証してみた|Review of My Life 
https://review-of-my-life.blogspot.jp/2017/09/facebook-pr-for-individual-blog.html


QiitaはAPIがあって、そこからツイッターのアカウントが取得できるはずだから、そこでも営業をしかけてみる。クラウドソーシング系は全部顧客データスクレイピングして、データを紐づける。


オウンドメディアをやる。これもスキルシェア系のページを自動生成するコンテンツつくって、ドメイン力上げる。これはアウトソースして作る。


UI


会社の人に頼む。お金払ってでもいいからやってもらう。


スポンサーリンク

公開日 : 2018-01-02

個人で片手間サービス開発日記②ワイヤーフレーム書いてみた

このエントリーをはてなブックマークに追加
前回の続き。


個人で片手間サービス開発日記①プログラミングメンターサービスの要件定義|Review of My Life https://review-of-my-life.blogspot.jp/2017/12/blog-post.html


プログラミングメンターサービスのモックアップを作ってみたって話。
とりあえずモックアップはcacooで作成し、実際に動かしてみるのはprottを使いました。
で、それを公開するのもわかりにくいと思ったので、動画にしました。


どういう仕様なのかは置いておいて、こんな感じになります。
サービスの概要は前のページを参照していただけると嬉しいのですが、基本的には


・プログラミングを学びたい人と、プログラミングを教えたい人のマッチングサイト
・プログラミングを教えたい人は、メンターという役割になる
・プログラミングを教わりたい人は、メンティーという役割になる
・メンターとメンティーがマッチングすると仲介手数料が発生するというビジネスモデル
・また、エンジニアのリクルーティング企業と今後スケールしたら提携したい



ってな感じになっています。


ほんでもって機能。まずはメンティー側の話。
メンティーはまずログインすると、自分の勉強してきたスキルを登録。そしてそのスキルうをメンターを設けて勉強したいかまで選択。そうすると、メンターからのメンターオファーがくるのである。また、新着のメンタ-のレコメンドがくるようになる。




メンティーは習いたいスキルを検索することができる。そして、いろいろなメンター候補を持っているスキルに応じて比較し、もっとも気に入ったメンターにダイレクトメッセージを送ることができる。メンターとの相談の結果、メンターを引き受けてもいいよって場合は、メンティー申請を送ることができる。





同じように、メンターもこのサービスに登録することができる。
メンターは教えられるスキルを登録することができる。また、メンティーを検索して、顧客を検索することができる。





ということで、本当はモックアップのユーザーテストをしたい。これに登録したいって人がいるのか、本当に欲されているユーザーがいるのか調べたい。



静的なページについても。

・説明ページ about
・利用規約ページ user_terms
・ご利用ガイド guide_top
・採用 recruit


スポンサーリンク

残業するくらいなら副業した方がずっとよい理由

このエントリーをはてなブックマークに追加

​残業するより副業したほうがよい理由



無理して残業してお金貰うよりも、副業した方が得です。


なぜ、残業するくらいなら副業した方がよいのでしょうか。それは、残業で使う時間は、時間を投資して時間給を得られますが、副業で使う時間は時間を投資して知識と成果に応じた報酬が得られるようになるからです。


ちなみにここでいう残業を、特に仕事がないのにだらだら会社に残って時間給をもらっている人と定義します。(仕事が終わらなくて残業している人は除外します)



スポンサーリンク

2017年振り返りと2018年の目標

このエントリーをはてなブックマークに追加

目次

  • 2017年は何をやっていたか
    • 大学の除籍勧告を受ける(2017/1)
    • 研修中にGithubのコミットメッセージに「fuck」と書いて怒られる(2017/5)
    • IT企業に入社し品質保証チームへ配属(2017/8)
    • 地元の友人と千葉で酒飲んでいたら翌日病院で目が覚める(2017/8)
    • 引っ越す(2017/09)
    • 「VR彼女」に感銘を受け、VRを購入する(2017/09)
    • 打刻を忘れすぎて試用雇用期間延長(2017/9)
    • クレジットカードが止まる(2017/9)
    • VRでくそげーをつくる(2017/11)
    • 晴れて正規雇用になる(2017/12)
  • 2017年の目標
    • 月30万円副業で稼ぐ → 月7万円で未達
  • 2018年の目標
    • 月30万円副業で稼ぐ
  • 2018年は何をしたいか
    • 仕事
      • 品質保証とは何かの基礎を付ける
      • QAエンジニアとして、テスト自動化にかかわる
      • テストエンジニアの本をたくさん読む
      • インフラ・ネットワーク周りの知識をつける
      • 社外勉強会にたくさん顔を出す
    • 趣味開発
      • Webアプリケーションを開発し、プログラミングの学習障壁を下げるTech Mentorsのリリース
    • ブログ
      • 自動更新サイトの収益化
      • プログラミング初心者に有益な情報をたくさん書く
    • 副業
      • 3-10万円の案件をこなせるようになる
      • 外部プロジェクトで力をつける
      • 外部プロジェクトで個人を売る


スポンサーリンク

あの時、自分は何を考えていたんだろう? ツイッターで1年を振り返れる、Tweet Reflectorを作りました

このエントリーをはてなブックマークに追加
Tweet Reflectorという簡単なWEBアプリを作りました。もちろん無料で使えます
ツイッターのIDと、ツイートを取得する期間を指定すると、その期間のツイートが表示されるURLを取得できます。







過去の投稿見ていると、けっこうエモい!去年の就職前の3月とか、何考えていたんだろうと思ってみたら、すげぇ調子乗ってたり、今年の研修で一番つらい時とか調べてみると、こんな思いしながら頑張ってたなぁなんて感慨深くなります。


ということで、Tweet Reflectorを使って去年を振り返ってみてください。

https://kdmgs110.github.io/tweet-reflection/

スポンサーリンク

公開日 : 2018-01-01

2017年12月ブログ運営報告:クラウドソーシングで稼げるようになってきました

このエントリーをはてなブックマークに追加
12月のブログ運営報告です。

先月の目標


先月はこんな目標を立てておりました。が、これは定量化されていない目標なので達成したか検証できませんね。目標とやりたいことがまざっているので、今月はまともな目標を立てます。

今までかなり適当にブログを書いていたのですが、ふざけたことやって収益化する実験が面白いので、もう少し単価の高い収益化をしてみようかと思います。新卒向けのエンジニア・採用関係で狙ってみようかなぁ。
ふざけたことして、IT版のヨッピーになりたい。

今月書きたい記事とか施策とか
  • Tinder APIを使って、プロフィール画像が地蔵でも東大出身だったらマッチングするのか検証する
  • DMMのAPI使って、AV女優の画像認識を行い、AV女優通のオタクを作る
  • MM号のまとめサイトかbot作る
  • データサイエンティストの採用要件スクレイピングする
  • ココナラもう少しちゃんとマーケする
  • コンバージョン用の記事の作成
  • コンバージョン用の経路作成
  • Google Analytics使ってしっかり導線の検証してみたい
  • Goolgle Analyticsと、Rで勉強した知識を使って記事書きたい

収益・PV数


先月17915円でしたが、今月は66003円となりました。ブログは全然更新していなかったので、PV数は4000PVくらい下がりましたが、それでも8000円くらいは稼いでくれているので、よいですね。クリック率もクリック単価も安定して高くなってきたので、あとはPV数を稼げばこちらも安定して入りそうです。


収益:合計66003円


  • Adsense収益:8302円
  • Amazon収益:518円
  • ココナラ収益:39750円
  • note収益:1296円
  • A8収益:100円
  • クラウドワークス:6480円

PV数:22355PV
ページCTR:0.98%

今月やったこと


完全に受託にフォーカスしました。クラウドソーシングを利用して、いろいろな案件に提案してアプリを開発したり、導入したりしました。
スクレイピングツールの開発案件やプログラミングの困ったところ教える系の案件で稼げるようになってきました。


来月の目標

  • 月15万円目指します
    • 単価が3-5万円くらいの案件2個ほど
    • 既存システムの販売で1万円くらいのを3件ほど
    • 外部プロジェクト X 2
  • Webアプリのプロトタイプ作ります
    • Ruby on Railsでプログラミングのメンターマッチングサイト


来月やりたいこと


ツール系は単価低いので、開発優先順位下げます。Webアプリ開発、もしくはワードプレスで稼げるようになれば単価が高そうなので、そっちの路線でやってみます。あとはインフラやLinux系の知識、あと副業の法律的な知識をつけたいと思っています。

    • 自分のGithubページの作成
      • 今までの実績や作成物等の公開したポートフォリオ
    • SEO対策ツールの作成+販売
    • Tech Mentorsリリース(プロトタイプ)
    • Tech Mentorsの自動生成ワードプレスブログ
      • rails メンターみたいなキーワードから検索結果を自動更新
    • 年始に買った2冊の本読み切る
    • インフラ周りの知識をつけて、VPSかSaaSにディプロイ(脱Heroku)
    • QAの勉強会の2回出る



    スポンサーリンク

    公開日 : 2017-12-24

    個人で片手間サービス開発日記①プログラミングメンターサービスの要件定義

    このエントリーをはてなブックマークに追加

    今までのプログラミング教育サービスの概要


    - 今までのプログラミング教育サービスは、コーディングをWeb上で学べる(1)Web教材型(以下Web教材型)と、企業がプログラミングを教える(2)BtC教育型(BtC教育型)に分かれる

    - Web教材型のサービスは例えばこんなものがある


    Progate


    ・対象:無料で言語ごとのカリキュラムが存在する(フロントエンド~サーバーサイドまで)
    ・料金:課金(980円)払うとすべてのサービスが解放される
    ・対象:初心者むけ
    ・ポイント:あるレベルまでいくと、クラウドワークスから案件を取得できる


    ドットインストール

    ・概要:無料でプログラミング言語を学べる(フロントエンド~サーバーサイドまで)
    ・対象:対象は初心者~中級者向け
    ・料金:月額980円
    ・ポイント:動画解説でかなりバラエティーがある


    PyQ

    ・概要:機械学習、統計分析に特化したPython
    ・対象:初心者~中級者
    ・料金:2,980円 ~ 98,000円
     - PyQの利用:2980円
     - メールサポート込み:7,980円
     - メンター・チャットサポート:29,800円
     ー プレミアムサポート:98,000円
    ・ポイント:チャットで対応サービスが存在する(3万円ほど)



    paiza

    ・概要:プログラミング学習からスキルをもとに転職まで支援してくれるサービス
    ・対象:中級者~上級者
    ・料金:
     ・ 1カ月プラン:880円
     ・ 6カ月プラン:680円
     ・ 12カ月プラン:600円



    Web教材型をまとめると、こんな感じになる。




    - BtC教育型については以下のサービスがある


    TECHCAMP


    ・ 概要:カリキュラムとメンターをそろえたプログラミングスクールサービス
    ・ 料金:入会費用:128,000円、月額12,800円(初月無料)
    ・ 特徴:実際に受託したり、就活で使えるようになるようになる。質問し放題
    ・備考) 一括払い

    TechAcademy


    ・概要:パーソナルメンターがフォローしてくれるプログラミングスクールサービス
    ・対象:初心者~中級者
    ・料金:79,800円から(月額15000円程度)
    ・備考)先生はクラウドソーシングで配置している、一括払い


    CodeCamp

    ・概要:初心者でも一からプログラミングを学び、ECサイト等のwebサービスを開発できるスキルが身につきます。実際にPHPの最終課題ではオリジナルECサイトを制作するため、より実践的な技術習得ができます。



    メンター紹介型サービス


    ランサーズストリート

    ・Lancersがやってるサイト
    ・一般的なスキルシェアサービス

    Pook

    teacha
    ・メルカリのスキル売買サービス


    CoconalaのWebサイトサービス

    ・日本のスキルシェアサービス


    Code Mentor

    ・海外のメンターマッチングサイト(英語)
    ・価格:コースによる(25分3000円みたいな値段の場合もある)
    ・フリーランスエンジニアがメンターしていることがおおい

    今までのプログラミング教育サービスの問題点


    ・ 完全にプログラミング初心者みたいな人が、本当に基礎的な知識をつけるサービスは存在するし、そこの需要と供給は満たされている


    ・しかし、プログラミング中級者(自分でサービスなどの成果物を作れる)になるための中級者向けのサービスは、かなり価格が高い(BtC教育型)

    ・ちなみに、プログラミング技術レベルの定義

    - 定義
     ・プログラミング初心者:Progateで基礎的な学習ができ、プログラミングの基礎的な構文は理解できる
     ・プログラミング中級者:最低限動くものが作成でき、またそれでお金がもらえる成果物を作れる
     ・プログラミング上級者:拡張性やセキュリティ、動作等、大規模なシステム開発にも対応できる


    ・ プログラミング中級者になるためには、第三者のメンターが必要になる

     - 成果物を作成するには、何を学ぶべきか、エラーをどうやって解決するかなどのサポートは、知識がないためググれない

     - 【企業側】しかしそれをマネタイズしようとすると、企業側でも非常に価格が高くなってしまう。
     - 【顧客側】一括払い10万円以上がデフォで、月額1万円以上がデフォで、かつスクールしか存在しないので、始めるのが非常に困難

    - メンターをやってくれる人 => 企業のインターンでは中級者であればよいのだが
     ・そもそも技術力がないとプログラマーとしては採用されず、ただのアルバイトになりかねない(オウンドメディアやら、テスターやら。)
    ・じゃあ安いサービスがあるか
     ・スキルシェア系の一部のサービスではあるが、プログラマーでない人のサービスが多いため、プログラミングにおける商品量が少ない
     ・またプログラミングに特化して作られているわけではないため、必須スキル等のエンジニアが欲しい情報が見られない




    ユーザー想定

    顧客想定

    ・1. 大学生

    ・Progateなどの無料サービスである程度のプログラミング知識はつくった
    ・できればエンジニア採用とかされたいし、そのためにインターンで成果物を見せられるようになればうれしい
    ・しかし実際でサービスを受注したり、インターンで選考を受けられるほどのアウトプットはない。試したけど、何から始めればいいかわからない。
    ・だからと言って数十万円のサービスにお金を支払うほどお金と時間に余裕がない

    ・2. 新卒エンジニア

    ・初級レベルの技術であればもう大丈夫
    ・しかし、もっと発展的なアウトプット(スクレイピング、自動テスト運用とか)
    ・だけどそこまでの業務に基づいた知識は、社内リソースに頼らざるを得ない

    ・3. 個人事業主

    ・初級レベルの技術であればもう大丈夫
    ・たとえば楽天のAPIを使って価格を毎日取得できるようなツールを作成したい
    ・だけどそこに至るまでの技術をどうやって身に着ければよいかがわからない
    ・本を探しても、どういう風にそれができるようになるのかわからない
    ・というかそれをやるために多大な時間をかけられないので、効率よく何を学べばそれができるのか教えてほしい

    ・4. 営業マン

    ・普段の退屈な業務を自動化したい
    ・だけどそこまでのことをすべて自分で勉強してって一からやるのもしんどい
    ・というかプログラミング初心者すぎてどこから始めたらいいかわからない

    ・5. 中級プログラマーの人

    ・Javaエンジニアで転職活動をしたい
    ・ある程度のプログラミングのスキルはある
    ・転職には成果物が必要
    ・今度はWeb系の企業に行きたいと考えている
    ・成果物を作るうえで、メンターが欲しい

    メンター想定

    ・1. フリーランスの人

    ・普段は受託案件で稼いでいる
    ・だけど追加でもうちょっとお金が欲しい
    ・フリーランスになりたい人を応援したい

    ・2. Web系ベンチャーの人


    ・3. 大企業で開発している人

    ・仕事で高級取り
    ・副業したい
    ・普段も趣味でコードを書いている
    ・誰かのために立ちたい

    採用想定(これはやるかわからない)

    ・インターンでエンジニア候補になるような学生のタレントプールが欲しい
    ・成果物が可視化されていれば、オファーも出しやすい

    作りたいもの


    ・プログラミングのメンターとメンティーのマッチングサービス
    ・Code Mentorの日本語版


    メンティーができること


    ・言語、作りたいものごとに検索できる(イメージ)
      ・検索結果は作りたいもの・サービス・技術
      ・プログラミング言語

    ・ユーザーのメンターのプロフィールページを閲覧できる
      ・企業名
      ・ここ最近のレスポンス数(日付で確認)
      ・使用できる言語スキル
      ・自己紹介
      ・関連SNS
      ・受託している案件の数
      ・評価
      ・販売しているサービス

    ・ユーザーはコースを閲覧できる
      ・

    ・ユーザーはコースをリクエストできる
      ・ダイレクトメッセージを送ることができる
      ・リクエストの結果、コースを作成する

    ・ユーザーはメンターに連絡を取ることができる
      ・ダイレクトメッセージを送信できる (Action Cable

    ・ユーザーは商品を購入することができる
      ・メンティーはコースを購入することができる(Web Pay

    メンター


    ・ユーザーはコースを作成できる
      ・タイトル
      ・コースの説明
      ・requisite
      ・お気に入り数
      ・購入にあたってのお願い
      ・評価、感想
      ・ユーザーが制作した成果物(GITHUB)

    ・ユーザーはプロフィールを作成できる


    機能


    • ログイン
      • Google
      • Twitter
      • Facebook
      • 普通のログイン
    • UI
      • Qiitaの色をパクる
      • Techっぽい色って緑だよね(適当)


    ビジネスモデル


    ・仲介手数料(10%くらいかなぁ)
    ・理想的には、メンティーが制作したものから採用できる仕組みにする


    #TODO

    - 実際にフロントエンド作ってみて、気になるところを追加していく。

    スポンサーリンク

    公開日 : 2017-12-23

    プログラマーとして個人で月40万円稼ぐために必要そうなスキルセットを考えてみた

    このエントリーをはてなブックマークに追加

    目的



    今の給与が手取り35万くらいだが、全くスキルが身の丈にあってないと感じるので、なるべく早く身の丈に合うスキルをつけたい(30代になって死ぬから)

    目標


    そのスキルのKPIをとりあえず手取りと計算すると、少なくとも月40万円土日で働くことで稼げなければならない。


    今月は受託開発ではじめて2万円稼いだので、これを来年に20倍にしたい。


    あとこれをやることに対するメリットとして、転職の時の最低限の能力保証を実績で示せる。

    戦略


    ということで、これを実現するための戦略を考える。
    以下の軸で考える

    • 単価:一件当たりの料金
    • 工数:一件当たりの工数
    • 必要なスキルセット:その案件を受託し納品するまでのスキルセット

    案件

    いろいろなクラウドソーシングの案件を見て見て、何を学ぶか決める。


    クローラー系


    【フロントエンド不要!】Airbnbスクレイピングツールの依頼/外注|サイト構築・ウェブ開発の仕事 [ID:1808998] 
    https://crowdworks.jp/public/jobs/1808998?ref=apiv1


    • 1-5万円
    • スクレイピングもしくはAPIを利用して、サイトのデータを更新しつづける技術が必要そう
    • そう考えるとWebアプリケーションの開発経験がないとしんどい。
    • from scratchだったら普通に20日くらいは超える

    アパレルサイトの在庫・画像・価格情報のクローニングツールの開発


    • 1-5万円
    • スクレイピングしてGoogle SpreadSheetにまとめる作業
    • たぶん一回きりなのでそこまで難しくない
    メルカリのアラートツール


    • 1万円
    • スクレイピングしてその結果を何らかに通知するだけなので簡単そう

    Bot開発系


    「LINEBOT開発【ブランド商品への問い合わせ用】【Python】【LINE Message API】」 https://crowdworks.jp/public/jobs/1824195?ref=apiv1


    Web開発系


    家庭教師と生徒のマッチングサイト サイト構築・ウェブ開発の仕事の依頼

    • 5-10万円



    育毛クリニック のホームページの制作 育毛の知識不要 原稿は100%出せますので仕事がやりやすいです。30ページ位 。デザイン能力があればさらに金額アップします。 


    • 20-30万円
    • 静的なページなので、Ruby on Railsでひな形作れば簡単につくれそう。
    • サーバー周りのことが理解できれば、わりと今の実力でできそう


    【要お見積り!】アミューズメント業に特化した人材派遣会社のHP制作(4~5ページ程度)


    • 5-10万円
    • 静的なページなので、Ruby on Railsでひな形作れば簡単につくれそう。
    • サーバー周りのことが理解できれば、わりと今の実力でできそう
    • SEO対策が必要なので、新規に作ったRuby on RailsのSEO対策ができればいけそう

    TODO


    Web開発(特にコーポレート系)が一番よさそう(工数がどれくらいかかるかわからないが)受注のためにも、実際に成果物をつくっていなければならない。
    自分の作ったサービスでマネタイズするのもよさそう。


    Web言語は、日本で一番チュートリアルが充実しているRuby on Railsでとりあえず作ろう。プログラマーのメンターとメンティーのマッチングサイト作る。
    Web案件を月2個くらいのペースで完成させて、かつツール作成で10万円くらいいけばかなり稼げそうではある。それまでの間は実績を稼ぐために、LancersかクラウドワークスでPython案件を高単価で受託しよう。月10万円Pythonで稼ぎながら、Web系の学習。

    • Ruby on Railsで個人サイトの作成
    • 自分のサービスのポートフォリオ作成
    • Pythonでツール販売

    スポンサーリンク

    【Python x Selenium】Instagramでタグ検索し、取得した写真にすべていいねできる自動化ツールを作成しました

    このエントリーをはてなブックマークに追加

    結論から言うと、Instagramで自動でいいねできるツールを作りました。
    実装内容としては


    • ログインページで認証
    • 指定したタグで検索
    • 写真にいいね
    • 次へボタンが存在しなくなるまで永遠に指定したタグのいいねをし続ける

    って感じです。




    そもそもInstagramに何も興味なかった



    普段全然興味なくて使っていないInstagram。
    最後に使ったのは、浴衣姿の女子大生が見れると聞いてインストールしたとき以来でした。しかし実際に使ってみて、インストールした初月は水着美女や浴衣姿をたくさんと、女子大生のクッソどうでもいいスターバックスの投稿やらなんやらで、こんなくそアプリ穴を吹く紙にもならんなと思ったのでした。


    Instagramに興味をもった理由



    しかし、ここ最近再び興味を持ったのは、Instagramの自動ツールが割と需要があるという点でした。例えばLancersとかCloud Worksとか見ていると、ちらほらInstagramの自動化ツールの作成依頼が5-10万円くらいの単価で存在していたりとか。


    あとは知り合いで実際にInstagramの自動化ツールを有料で利用している人がいたので、なるほどぉと思って興味を持ちました。


    Instagramでマーケティングとは?


    Instagramは結構マーケでも注目されているそうで、例えばこの辺の記事とか参考になりそうです




    で、どういう風にInstagramをマーケティングで使っているんだろうなんて調べてみましたが、基本的には特定のタグで写真を投稿している人にいいねをすることで、集客を促進しているようですね。


    例えば、たまたま#よみうりランドというコメントで検索した際に見つけた画像ですが、こんな感じです。




    面白いですよね、よみうりランドに近いところのハッシュタグを利用して、そのように集客につなげるっていう戦法みたいですね。おそらくいいねすると近くにお店があることがわかるので、集客につながるんだと思います。


    確かに、こうすると割と地域に応じたマーケとかもできそうで、よさそうですね。



    商用化されているInstagramマーケティングツールを見ていると、


    • 特定のハッシュタグを選択
    • 定期実行プログラムにて、そのハッシュタグに対して投稿している人にたいしていいねを実行

    というのが大半なようです。例えば、ハッシュライクというサイトでは、いいねを自動化させることができます。30日3600円で、指定したタグを設定し、定期実行でいいねをしてくれるようです。











    ということで、この機能を今回は実装しました。


    実装方法


    この機能を実装するためには、当初二つ方法がありました。一つはInstagramの公式APIを利用してやる方法、もう一つはWebスクレイピングでごり押しする方法です。


    前者を最初に試したのですが、どうやら2016年度にAPIの利用制限がかかり、自分の写真しか見れなくなるという、どうしようもないAPI仕様になってしまったようです。(Sandboxモードという、開発者向けお試し用)


    これを無制限にするための審査が非常に面倒になりました。実際にAPIを利用したプロダクトを作成し、さらにその動画までつくってInstagramに送らなければいけないみたいです。しかもその審査もかなり厳しいようで、普通に利用するにはかなりハードルが高いようです。






    できればこちらを利用したほうがよいのですが、ちょっと難しそうなので安定のSeleniumでごりおし作戦にしてみました。

    環境


    * Windows 10
    * WSL
    * Selenium
    * Chrome Driver

    ソースコード


    usernameとpasswordを入れれば、おそらく動くかと。
    日本語検索で少し困りましたが、URLのエンコーディング周りだったのが原因でした。
    動くのですが、Webelementを複数取得したときに、Webelementの最初だけ取得する方法がわかりませんでした。わかる人がいらっしゃいましたら教えて下さい。

    api.py

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import urllib.parse
    import time
    
    #Webdriver
    browser = webdriver.Chrome(executable_path='/mnt/c/workspace/pydev/chromedriver.exe') #ここには任意のWebdriverを入れる
    
    #URL
    
    loginURL = "https://www.instagram.com/" #ログインする際のページ
    tagSearchURL = "https://www.instagram.com/explore/tags/{}/?hl=ja" #.format()で{}の中の値を入れられるようになっている
    
    #TagSearch
    
    tagName = "よみうりランド" #タグの名前 #よみうりランド
    
    #selectors
    #ここには書くページのSelectorを選ぶ。x-pathもしくはcss selector
    
    loginPath = '//*[@id="react-root"]/section/main/article/div[2]/div[2]/p/a' #xpath @https://www.instagram.com/
    usernamePath = '//*[@id="react-root"]/section/main/article/div[2]/div[1]/div/form/div[1]/div/input' #xpath @https://www.instagram.com/
    passwordPath = '//*[@id="react-root"]/section/main/article/div[2]/div[1]/div/form/div[2]/div/input' #xpath @https://www.instagram.com/
    
    notNowPath = '//*[@id="react-root"]/div/div[2]/a[2]'
    
    mediaSelector = 'div._e3il2' #表示されているメディアのwebelement @https://www.instagram.com/explore/tags/%E3%82%88%E3%81%BF%E3%81%86%E3%82%8A%E3%83%A9%E3%83%B3%E3%83%89/?hl=ja
    likeXpath = '/html/body/div[3]/div/div[2]/div/article/div[2]/section[1]/a[1]'
    nextPagerSelector = 'a.coreSpriteRightPaginationArrow' #次へボタン
    
    #USER INFO
    
    username = ""
    password = "" 
    
    #list
    
    mediaList = []
    
    #counter
    
    likedCounter = 0
    
    if __name__ == '__main__':
    
        #Login 
        browser.get(loginURL)
        time.sleep(3)
        browser.find_element_by_xpath(loginPath).click()
        time.sleep(3)
        usernameField = browser.find_element_by_xpath(usernamePath)
        usernameField.send_keys(username)
        passwordField = browser.find_element_by_xpath(passwordPath)
        passwordField.send_keys(password)
        passwordField.send_keys(Keys.RETURN)
    
        #Finished logging in. now at 
        time.sleep(3)
        encodedTag = urllib.parse.quote(tagName) #普通にURLに日本語は入れられないので、エンコードする
        encodedURL = tagSearchURL.format(encodedTag)
        print("encodedURL:{}".format(encodedURL))
        browser.get(encodedURL)
    
        #Finished tag search. now at https://www.instagram.com/explore/tags/%E8%AA%AD%E5%A3%B2%E3%83%A9%E3%83%B3%E3%83%89/?hl=ja
        time.sleep(3)
        browser.implicitly_wait(10)
    
        #写真を取得してクリックする
    
        mediaList = browser.find_elements_by_css_selector(mediaSelector)
        mediaCounter = len(mediaList)
        print("Found {} media".format(mediaCounter))
    
        for media in mediaList:
            media.click()
    
            # 次へボタンが表示されるまで
            while True:
                try:
                    time.sleep(3)
                    browser.find_element_by_xpath(likeXpath).click()
                    browser.implicitly_wait(10)
                    likedCounter += 1
                    print("liked {} of {}".format(likedCounter,mediaCounter))
                    browser.find_element_by_css_selector(nextPagerSelector).click()
                except:
                    break #もう次へボタンが存在しない場合、エラーをはくのでそこで終了
            break #for文自体も終了させる
    
        print("You liked {} media".format(likedCounter))

    ご依頼について

    スクレイピングツール欲しい方は、@never_be_a_pmにご連絡お願いします。






    スポンサーリンク

    公開日 : 2017-12-22

    Python IndentationError: unindent does not match any outer indentation levelの対処法

    このエントリーをはてなブックマークに追加
    IndentationError: unindent does not match any outer indentation levelの対処法。
    エラーの通り、インデントがそろってないよ!というエラー。


    で、テキストエディタで見ると、「え、高さ揃ってるやん!」と思ってもこのエラーが出ることがあり、なんでかなぁと調べていると、


    タブでインデントしていて、またスペースでインデントしていて、そのインデントの高さが一緒でも、Python上ではそのように認識してくれないよう。


    なので、タブかスペースでインデントを統一してあげると、解決できます。

    スポンサーリンク