WEB拍手ぱちぱちっと
Clap/拍手

01.MENU
Blog  / ブログ
Videos  / 動画
Pictures  / 絵
Game Materials  / 素材
SS(ShortStory)  / 小ネタ

02.MENU
Novels  / 小説
Chat  / チャット
BBS  / 掲示板
Others  / その他
Old Top  / 旧Top

Traffic Jam Products


【お絵かき講座】私がやった絵がうまくなる方法

ごきげんよう。

駆けつけ一杯はカルーアミルクか日本酒のmです!(ぉ

mはビールが苦手なのでお酒を飲めないと思われがちですが、そうでもないですw

 

さて、今日は絵の話をしようと思います。

よく「どうすれば絵がうまくなりますか!?」と聞かれますので、今回はmが通った道をお話してみましょう。

 

私がやった絵がうまくなる方法

私が今日描いた絵はこんな感じです。

ラフから完成まで2時間30分ちょっとです。

(新しくopenCanvas6というお絵かきソフトを買ったのでそれで描いてみました)

動画は描き方動画(約3分)です。ラフから完成まで一通り見られます。

f:id:m_training:20160430230215p:plain

youtu.be

だらだらくまみこのまちちゃんですw

 

私が描く絵はこのような感じです。

そんな私がお絵かきでやっていた方法の紹介です。

 

好きな絵を模写していました。

よく「オリジナル描かなきゃ!」とか「イラストの学校に行かないと!」とおっしゃる方がいらっしゃいますが、mは単純に自分が好きな絵を模写していましたw

人まねなんて……と考える方もいます。

ですが「学ぶ」という言葉は「まねる」から来ています。

絵はオリジナルを描いてもいきなり技術が身につくわけでもなく、本で読んだらわかるわけでもありません。

まずは人の絵を実際に自分の手を動かして描いてみて「あ、こう描けばいいのか」と体で理解するのが早いのです(体育会系でごめんなさい><

 

模写のメリット

  • 好きな作家さんの絵柄を吸収できる
  • 髪の毛の描き方や服のしわの描き方といった、本を読んでもピンとこない場所がなんとなく描き方がわかってくる
  • 全体構図の描き方になれてくる
  • 絵のバランス感覚が身についてくる

 

模写の仕方ですがトレース(下に絵を置いて写すみたいなの)はダメ、見て描いてみましょう。

意外と見て描くのは難しくて、バランスのとり方や、描き方を自分で考えながら描くことになります。

(すべての事柄において「少し自分で考える」を挟むと能力の伸び率が非常に上がります)

 

mはというと、当時好きだったピースメイカーや幽遊白書の絵を描いていました。

当時の絵がこんな感じです。

f:id:m_training:20160501001629j:plain

f:id:m_training:20160501001721j:plain

f:id:m_training:20160501001758j:plain

f:id:m_training:20160501001828j:plain

こうして昔の絵を見ていると……どうして今の絵柄になったのか自分でも果てしなく謎です(イベント時代からmを知っている人には「変わった」とはっきり言われますw)

最初からオリジナルは果てしなく難易度が高い

先述の通りオリジナル信仰の初心者さんがいらっしゃいます。

(オリジナルの絵が最高で、模写はダメダメ、といった考え)

ですが実はオリジナルは難易度がハンパなく高いのです!!

それは当たり前です。

基本を知らずに応用から入ろうとしている、と同じ行為です。

料理に例えると、カレーの作り方を知らないのに見様見真似でグリーンカレー作成に挑むような感じです。

 

ちなみに、いきなりオリジナルを描くと大体は斜め45度左向きのバストアップ(胸から上の絵)だけになってきます……。

f:id:m_training:20160501013254j:plain

↑みたいな感じ

 

自分が好きな絵をいっぱい見てオリジナルに活かす!とおっしゃる方もいますが、やっぱり見るだけだと「わかった気分になる」だけで実際に描くときは「……?」となることが多いです。(経験上w

 

どんどん自画自賛しよう

絵を描いた!なんかすごくうまく描けた!うれしい!!

これがもう絵を描く原動力……いや、これが全てといっても過言ではありません!

描いた→うまく描けてすんごいうれしい→また描いた→いい感じ!→また描いた……この連続がよかったりします。

ちなみにmは未だに絵を描いた後は見直して(今日もいい感じ……♪)みたいに自画自賛しまくっていますw

 

少し難しいことを言うと、評価基準を自分の中に持つことが良いです。

他者評価を基準にすると自分の成長が見えにくくなります。(自分の成長が人依存になる。基準が評価する人それぞれのため自分の成長が見えにくい)

 

友達に絵を見せて評価をもらおう、というのはバッドアイディア

mが絵の描き始めの時にやったのが「友達に絵を見せて評価してもらう」です。

ですがこれ、実は微妙です……。

相手から返ってくる評価は「いいじゃん」とか「すごいね」といった当たりさわりない評価や褒め言葉となります。

自分が評価を聞かれたときにどう答えるかを想像すればよいと思います。

かと言って、はっきり言われるとかな~~~りヘコみます……。

へこみまくって絵を描く手が1週間くらい止まります……。

人に見せるということは自信がある絵ですからね><

 

pixivといったコミュニティに絵をあげたりするのは良いです。

星がついていく様子を見ているのはとてもうれしいものですw

 

絵がうまく見えるコツ

少し話が変わって、絵がうまく見えるコツの話をします。

絵のうまい下手は一定基準を超えたら後は好みの問題になるかと思います。

で、その一定基準。

 

  • バランスを意識して描く
  • 細かいところ(手、小物)こそ丁寧に描く

 

ようは違和感がなければうまく見えます!(ぉぃ

 

もう少し言うと『バランス』です。

例えば顔のサイズと体のサイズとか、腕の長さ、構図にしたときの全体のバランスなどです。

もう少し例えば。

斜め45度の顔は上手に描きやすいです。

斜めだと左右の目のサイズが違うので少しくらいバランスが崩れても、なんとなく「よいバランス」に見えます。

ですが正面になると、左右の目や幅を同じにしないいけないため、しっかりバランスをとらないと「よいバランス」に見えないのです。

 

あとは、細かいところをしっかりと描くとうまく見えます。

例えば平行である線は平行に描いたり。

よくあるのが手を丁寧に描くと絵に説得力が出るといわれたり。

小物をしっかり描くとかですね。

小物は何も資料を見ないで描く人がいらっしゃいますが、ネットで資料を検索して、それを見つつ描くと絵の説得力が生まれます。

 

まとめ

  • 私がやった方法は模写。模写で髪やしわの描き方を体得した
  • 描いた絵はどんどん自画自賛しちゃおう
  • 絵をうまく見せるにはバランスを意識する、細かいところにこだわる

 

WEB拍手レス

>おっちゃんさん

おっちゃんさんはゴールデンウィークは部活なのですね!

がんばってくださいね!

最近は暑くなってきましたので、水分補給は忘れないでくださいね。

 

ほのぼの系の癒しはいいですよね~w

mもお仕事が終わった後にくまみこなどをみてほわほわしております♪

5分アニメはあまり見たことがありません……。

5分アニメだったら空いたかるい時間に見て癒されそうですね~。

今度見てみようかと思いますw

2016年春アニメ紹介続き!(見たアニメのみw)

ごきげんよう。

アイスコーヒーは無糖コーヒー派のmです。(何

 

そろそろゴールデンウィークですが、皆様はご予定はあるでしょうか?

mは実家に帰りたかったのですが帰省費が結構かかりますので、今年は部屋でのんびりゲーム三昧する予定ですw

百合ゲーを2本くらい買おうか考え中です(爆

 

『くまみこ』のまちちゃんがカワイイ!

今期、ふらいんぐうぃっちと並んでオススメなのが『くまみこ』です。

とにかくカワイイ!

可愛いは正義!(ぉ

そんなわけでお絵かきですw

f:id:m_training:20160424182204p:plain

www.youtube.com

萌え萌えしながら見ておりますw

では、あらすじ!

 

あらすじ

主人公、雨宿まちは田舎で巫女さんをしている女の子。

都会の高校に進学したいと思ってはいるが、機械音痴だしユニクロも知らない生粋の田舎っ娘なのだった。

なので一緒に暮らしているナツ(熊)に止められてしまうのであった。

 

***

 

『ふらいんぐうぃっち』に続き、こちらものんのんびより枠ですw

ほのぼの系です。

まちちゃんの可愛さをみて癒されるアニメと言っても過言ではないでしょうw

www.nicovideo.jp

 

僕のヒーローアカデミア

私はジャンプのノリが昔から大好きです!

このアニメも好きなアニメの一つです。

ヒーローになりたい人必見です!

 

あらすじ

超能力を持っていることが普通になった世界の話。

主人公の緑谷出久(みどりやいずく)は昔からヒーローに憧れていた。

特に笑いながら人々を助けるオールマイトにあこがれていた。

だが現実は非常で、出久はこの世界には珍しい無個性だと言われてしまう。

そんなある日、彼の前に敵が現れオールマイトに助けられた。

出久はオールマイトに無個性でもヒーローになれるかと聞くが……。

 

***

 

ジャンプ系ですので、努力友情勝利です!

落ちこぼれの少年が最高のヒーローを目指して成長していくお話です。

私は2話で泣きました><(ぉ

涙腺ゆるくて(^-^;

 

ジャンプ系は夢と希望にあふれていて私は大好きです。

ちなみに私はずっと前からヒーローに憧れていますよw

「私がみんなを守るっ!」

なんていつか言ってみたいですっw

 

www.nicovideo.jp

 

 

2016年春アニメ紹介(見たアニメのみw)

ごきげんよう。

ココアはお湯で溶いて飲む派のmです(何

前まで牛乳だったのですけれど、近頃は色々気にするところがあってお湯で解いていますw

 

4月です。

新入生、新社会人、新しい会社に移った方のデビューの季節です。

今くらいの時期ですと少しずつ勝手がわかってきた頃でしょうかw

環境が変わると目新しく楽しいことも多いと思います。

同じくらい大変なことも、そして失敗も多いでしょう。

けれど、それら一つ一つが自分の思い出、自分の力となっています。

今はしっかりと足を踏ん張って、自分の速度でいいので前へ前へ進んでいきましょうね!

 

では……

4月なので2016年春アニメで私が見たアニメの紹介と行きましょうw(ぅぉぃ!

 

2016年春アニメ紹介(見たアニメのみw)

ふらいんぐうぃっち

ついにっ!

ついに青森がご当地のアニメが放映されましたっ><

以前にもシャーマンキングで青森の恐山がでましたが、もっと身近な感じですw

 

あらすじ

主人公の名前は真琴。

連れの猫の名前はチトさん。

ごく普通の彼女は、ごく普通に弘前に引っ越し、ごく普通の学校に通うことになりました。

でもただひとつ違っていたのは、真琴は魔女だったのです!

 

***

 

この語りを知っている人がいるかどうか怪しいです(爆

ひとことでいうと、日常系ほんわか系アニメです。

のんのんびより枠ですw

主人公が魔女だからといって、3話で突然首がもげたりとか核兵器真っ青の砲撃をするとか、女の子同士で魔力を分け合うためにチュッチュするわけではなく、田舎で普通に暮らす女の子ですw

ふらいんぐうぃっちはお気に入りで、マンガ本だってもちろん全巻持っています。

ゆるふわ~な雰囲気が楽しめる漫画となっておりますw

 

何よりやはり青森県民としては自分が住んでいた土地が取り上げられるというのが嬉しかったですw

弘前には大学の頃に住んでいたのです~!(毎週実家には帰っていましたけれど)

1話はもう懐かしい光景が広がっていまして青森に帰りたくなってしまいました。

 

弘前駅なんて完全再現でしたねw

f:id:m_training:20160417172321p:plain

f:id:m_training:20160417172351p:plain

他、真琴が着くまでの道は実際にある場所です。

下湯口の降り口はこの辺でしょう。

f:id:m_training:20160417172536p:plain

 

f:id:m_training:20160417172615p:plain

 

今年の冬に青森に帰った時は、どこの本屋さんでも『ふらいんぐうぃっち』は平積みされて大々的に販売されていましたw

 

男の子のボイスが癒やしですw

あと妹がとにかく可愛いです!!

 

www.nicovideo.jp

 

ビッグオーダー

あらすじ

10年前、主人公エイジの前に「なんでも願いを叶える」という不思議な少女が現れた。

エイジが願ったのは……。

世界は滅亡した。

この頃から世界には『オーダー』と呼ばれる特殊能力者が現れ始めた。

10年後。

エイジが通う高校に一人の可愛い女の子・鈴が転校してきた。

マンションも同じ!

ブコメ展開か……!

と、思った矢先、縛られた上に刀で刺されてしまう。

10年前、親を殺され、その復讐に来たのだった。

エイジは能力を発動させ、鈴を殺してしまった……。

たしかに死んだ鈴だが能力により蘇り、エイジの妹をさらう。

エイジは葛藤の末自分の能力「支配者(ドミネイター)」を受け入れ、手始めに福岡から支配を開始した。

ついでに鈴を支配し「服従しろ」みたいなこともやってしまった。

 

***

 

幽波紋使いは幽波紋使いを引き寄せるッ!!

はいw

ずばり、スタンドバトルでしたw(ぉぃ

内容もジョジョを思い浮かべれば大体それです(ぉぃ

 

作者さんが「未来日記」の作者さんです。

そのせいか、鈴がもう由乃っぽいです。

もうね。

途中ね。

ヒロインの顔じゃないです(核爆

今期ヤンデレ枠確定です(ぉぃ

ベジータ系女子です(何 

 

あと妹がとにかく可愛いです!!

www.nicovideo.jp

 

迷家−マヨイガ

あらすじ

幾重にもガードされたネット募集。

それらをかい潜り「人生やり直しツアー」に参加した30名のメンバー。

彼らは人生をやり直すため、都市伝説として知られる「納鳴村(ななきむら)」に向かう。

アーバスの中で、それぞれハンドルネームで自己紹介をはじめるメンバー。

ゲームで負けた主人公が遺書を読み上げた際、運転手がメンバーに対して説教をはじめた。

雰囲気が悪くなるバス。

さらに車に酔ってしまってうっかり運転手さんに向かって直に吐いてしまうヒロイン!

そのまま進んでいたバスだが……遂にはバスは崖下に落下してしまった。

運転手を残し納鳴村に一同向かい、ついに納鳴村に到着するがそこは無人となった村だった……。

 

***

 

オリジナルアニメとのことです。

都市伝説にある村に行き、そこで人生をやり直そう……という企画に賛同した若者の話です。

ミステリーな雰囲気がプンプンですw

 

ヒロインが吐いてしまうという衝撃の1話でしたが、今後どうなっていくのかきになりますw

 

坂本ですが?

あらすじ

とにかくCoolCoolerCoolestな坂本くんの日常。

 

***

 

一言。

カッコイイ!!

とにかくカッコイイ坂本くんですw

火事を消す時なんて反復横跳びで風を起こして消そうとするのですからカッコイイです!(ぉぃ

ハチの針攻撃をコンパスで止めるのも坂本くんならでわですね!(ぉぃ

声も緑川さんでパーフェクトです(爆

継続視聴したいですw

www.nicovideo.jp

 

 

今のところこれくらいですw

気になってまだ見ていないのは「はいふり」あらため「ハイスクールフリート」でしょうか。

1話放送と同時にタイトル変更、貼られているポスターを変更した当たり本気を伺えます。

ネット界隈では「血だまりスケッチの再来」とか「結城友奈のような展開が……」と言われています(^-^;

 

愛すればこそiあればこそ

ごきげんよう。

おせんべいは南部せんべい派のmです。(何

おせんべいを食べたいのですが九州ですと南部せんべいがないのが難点です…。

(青森のせんべい)

 

今日は天気も良かったですし、観葉植物の土を買ってきて土いじりしてました。

パキラを育てていますが、虫もつきませんしてもかかりませんしとても良いですw

 

カラオケ9時間の代償は大きかった

先週、ひょんなことから9時間カラオケでI wanna be a 最強ヒーローしたりとか幾億の星が消え去っていくのを見送ったり手を振ったりよかったねしたりと休み無しでみんなで歌いまくっていました。

仕事で声が出なかったらどうしよう、なんて冗談めかしていたのですが……

なんと!!

まさかの日曜日~木曜日あたりまで声がヘロッヘロでした(爆

会社の皆さんには「風邪ひいてしまいまして……」と説明しましたが……。

本当はサヨナラを抱きしめたりヒラリヒラリ飛んでったりしてたせいですっ(核爆

ちなみにメンバー全員同じ感じでした(^-^;

 

BBSで紹介してもらった「It's my life」が面白かった

BBSにて「It's my life」というマンガを紹介していただきまして読んでいました。

ファンタジーほのぼの系マンガです。

35歳、騎士団退役した隊長が夢のマイホームを購入しのほほーんと生活する話です。

そこに幼女がやってきて家を壊したり、幼女を襲いに竜人がやってきて家を壊そうとしたり、幼女を取り返しにお姉ちゃんが来て家を壊そうしたりとします。

このあらすじを読んで分かる通り、全て物語の中心を握っているのが家のマンガです!!(ぅぉぃ

 

この漫画を読んでいると、オジサマ萌えに目覚めますw

30半ばの主人公ですが、これまたおちゃめなのです。

おちゃめなんだけどやるときはカッコイイ!! これぞクールなオジサマですねw

 

そして、カラーは絵に目を奪われます。本当に目を奪われます。

厚塗りの神様ですっ><

 

金曜日は肉食の会に行っていた

金曜日は肉肉していましたw

最初はみんなでダーツ&ビリヤードバーに行こうとなっていたのですが、なぜかみんな肉肉言い始めてお肉のお店へ。

がっつりいただいてきました~!

f:id:m_training:20160410184928j:plain

 

みんなで食べたのですが、じゃんけんで一番勝ったmが一番大きなお肉をいただきました!

これはおいしい~っ!

モグモグ~っ!

これはおいしい

モグモグ

これは……おいしい……

モグ……モグ……

これは……

モグ……

こ……こ……

モ……ぐぐ……

 

これ無理っ!(ぉ

大きすぎて例のごとく食べきれなかったという(^-^;

4人以上くらいでじゃんけんをするときは、グー、パー、グー、チョキな順番で出すと何故か勝つことが多いですw

 

WEB拍手レス!

>おっちゃんさん

おっちゃんさん、こんにちは~!

「このすば」も終わってしまいましたね。

mはやっぱりめぐみん派でしたw 可愛いったらありゃしませんw

 

4人で9時間は、歌っていた時はまだいける、まだいけると思っていたのですが、翌日以降死んでいました(^-^;

しかもみんな持ち歌が多すぎて9時間でもまだまだ入りましたからね~。

喉はもうずーっとヘロヘロでございました><

 

おっちゃんさんもカラオケに行った時は9時間歌わないように注意です!(爆

 

 

LINE BOT APIで英単語の翻訳を教えてくれるBOTを実装した話

ごきげんよう。スパゲティはスプーンの上で巻かない派、mです!(何

 

先日は『LINE Loginを実装』しました。

今日はLINE BOT API Trial Accountの実装のお話ですw

【LINE】メッセージングAPIのオープン化に先駆け、先着1万名限定でBOTアカウントを自由に開発できる「BOT API Trial Account」の無償提供を開始 | LINE Corporation | ニュース

 

LINE BOT APIとは、いわゆるBOTです。

例えば、LINEでお天気を聞いたらお天気を返してくれるとか、喫茶店を聞くと近くの喫茶店を教えてくれるアカウントです。

私はお仕事でよく英単語を調べたりしますので、今回はLINE BOT APIで英単語を聞いたら英語を教えてくれるBOTを作ってみましたw

 

そんなわけで『教えて!英単語!』リリースです!

英語→日本語のみです。

英語の語尾変換にもある程度対応しています。

 

QRコード

f:id:m_training:20160409211404p:plain

↓こんな感じ

f:id:m_training:20160409211320p:plain

画像は描き下ろしましたw あ!中学校の英語の教科書『New Horizon』よりエレン先生ですw

f:id:m_training:20160409211431p:plain


How to draw an anime character 180【アニメ絵の描き方】

 

ではでは!

早速LINE BOT APIの作り方にいってみましょう!

 

LINE BOT API Trial Accountを実装した

まずはBusiness Centerにアカウントを作らなければなりません。

作り方は、先日の私の『LINE Loginを実装してみた - Traffic Jam』の記事が参考になるかと思います。

  1. ログイン
  2. Business Centerの認証メールを完了させる
  3. アカウント、企業情報を入力する
  4. ビジネスアカウントを作成する(ここの画像と名前がBOTのそれになります)
  5. ビジネスセンター作成後にBOT API Trial accountを作成する

簡単に書くとこうなりますw

BOT APIは先着1万名なので早めが良さそうです。

 

作るとこんな感じになっています。

では、BOT APIの設定に入ります。

この設定で大大大苦戦しましたっ(滝涙

f:id:m_training:20160409212512p:plain

 

LINE BOT APIを設定しよう

BOT APIの「使う」をクリックすると設定画面に移動できます。

 

 

f:id:m_training:20160409212955p:plain

こんな感じになります。

ビジネスアカウントの画像と名前が設定されています。

 

そして恐らく最大の難所!!

Callback URLです!!

私の周り、何人が個々で阿鼻叫喚のうめきをあげたことでしょうか……

 

LINE BOTのCallback URLを設定しよう

LINE BOTのCallback URLの第一の難所

https』でなければなりません!

なのでhttpsを使える場所がないといけません。

そして……『FreeSSLは蹴られる』

ここが阿鼻叫喚ポイントですね……。

Lets encryptなどはアウトだったとのことです(^-^;

こちら、OKになったようです。(2016/4/26現在)

以下プレスリリースより

4月15日より、LINE BOT API Trial Accountで利用できる SSL 認証局に StartSSL と Let's Encrypt を追加しております。詳細情報は、以下URLにて、公開しております。

https://developers.line.me/bot-api/getting-started-with-bot-api-trial#register_callback_url

 

もしお手軽に試すのでしたら、フリーでhttpsが使えるwebscript.ioが良いかもしれません。

私も試しましたがwebscript.ioで簡単にオウム返しbotが作れました。

この方のページが参考となるでしょう。

yamamotomanabu.hatenablog.com

LINE BOTのCallback URLの第ニの難所

https://milk0824.sakura.ne.jp:443/linebot

なぜかポート番号を書かないといけません(^-^;

マニュアルに目を通す方だと書いているので気づきますが、「httpsだろぅ」で進めてしまう人は混乱しますw

……そしてエラーメッセージで「specified」を「sepcified」とスペルミスしていることに気づいてしまうmだったのでしたw(ここ、何回も見ることになったので…)

 

LINE BOTのCallback URLの第三の難所にして最大の難所!

LINE BOTを作ったのは良いんだけど、反応がない!

ログを見てもアクセスされている様子がない!

レスポンスが全く帰ってこない!!

 

今日、mも体験しましたし、私の周りも「私のワンちゃんボットから反応がないっ」とか「独り言いってるだけなんだけど」といった感じになっていました。

 

私も苦戦してたのですが……

Callback URLを設定してから反映されるまでとても遅いのです!!

これでした(^-^;

少し放っておいて30分後くらいに「こんにちは」といったら反応が返ってきましたw

プログラマーの皆さんは基本一秒単位でコールしちゃいますので、設定後は珈琲を飲んでアニメを見てから話しかけてみましょう。

 

Server IP WhitelistにCallback URLのIPを設定しよう

あと、ボットが呼び出すプログラム(Callback urlで設定した場所)のIPをwhite listに登録しなければなりません。

white listとは、決められたIPにしかアクセス出来ない仕組みです。

左側のメニューから『Server IP Whitelist』を選んでください。

f:id:m_training:20160409215040p:plain

ここに、Callbackで使用するサーバーのIPアドレスを追加しましょう。

最後の「24」はサブネットマスクと呼ばれるものです。

24の場合は先頭から3箇所は固定で、最後の場所が0~254まで使用できます。

まぁ、最低24から設定してくれ、と書いていますのでおとなしく24にしておきましょうw

使うサーバーのアドレスがわからない場合は、ネットで調べることも出来ますし、コマンドプロンプトで「nslookup ドメイン名」で検索できるかと思います。

 

これで難しい設定は終わりです!

callback urlの件がありますので、設定後はお茶でも飲んでくつろいでいれば良さそうです。

 

callbackをphpで実装しました

実装は大体こんな感じです。

  1. メッセージを取得する。
  2. メッセージから送り主とテキストを取得する
  3. 送信データを設定する
  4. ヘッダを設定する
  5. 送信する

みなさん苦戦するのはSSLとCallbackで、そこを抜けたら何とかなりますw

では私がかいた『教えて!英単語!』のプログラムをベッタリ貼り付けておきますw

アマチュアですのでコードの汚さはちょっとだけ勘弁して下さいねっ(ぉ

require("english12000.php");
function searchWord($word, $englishDB){	
	$word = mb_strtolower($word);
	$changedWord = exchangeWord($word);
	//完全一致で検索
	$returnValue = findWord($word, $englishDB);
	//なかったら変更後のワードで検索
	if(!$returnValue){
		$returnValue = findWord($changedWord, $englishDB);
	}
	//それでも無かったら部分一致
	if(!$returnValue){
		$returnValue = stristrWord($changedWord, $englishDB);
	}
	//それでも無かったら謝る
	if(!$returnValue){
		$returnValue = cantFind();
	}
	return $returnValue;
}

//語句判定
function findWord($word, $englishDB){
	if(isset($englishDB[$word])){
		return makeFindTalk($word, $englishDB[$word]);
	}
	return null;
}

//見つけた時のトーク作成
function makeFindTalk($word, $value){
	$serifu = array(
		$word . "ね\n" . $value,
		$word . "かしら\n" . $value,
		$word . "ですね\n" . $value,
		$word . "…" . $word . "と\n" . $value,
		$word . "かぁ…たしか…\n" . $value,
		$word . "はこんな感じね\n" . $value
		);
	return $serifu[rand(0, count($serifu) - 1)];
}

//部分一致検索
function stristrWord($word, $englishDB){
	$returnValue = null;
	while(list($key,$value) = each($englishDB)){
		if(stristr($key, $word)){
			$returnValue = makeFindTalk($key, $value);
			break;
		}
	}
	return $returnValue;
}

//いじめられた時の先生の反応
function cantFind(){
	$serifu = array(
		"ごめんなさい、先生その英語がわからないの…\n勉強不足かしら…",
		"どういう意味かしら……\nちょっとわからないわね",
		"えと、えと、調べてるけど出てこなくて……",
		"わ、わたしの辞書にその字はないかも……",
		"な、なにかしらね、その単語……\nごめんなさい、パソコンで調べて><",
		"え!?\nええと……ちょっとわからないわね……",
		"うーん、これでもないし…それでもないし…な、なんでしょうね。あは、あはは……ごめんね><",
		"その単語は昔聞いたんだけど……ごめんなさい……。",
		"あうう……わたしの辞書に載ってなくて……ごめんなさい",
		"えと、えと、調べてるけど出てこなくて……"
		);
	return $serifu[rand(0, count($serifu) - 1)];
}

//単語をルールにそって変更
function exchangeWord($word){
	if(preg_match('/ies\z/', $word)){
		return str_replace('ies', 'y', $word);
	}
	else if(preg_match('/es\z/', $word)){
		return str_replace('es', '', $word);
	}
	else if(preg_match('/ed\z/', $word)){
		return str_replace('ed', '', $word);
	}
	else if(preg_match('/ing\z/', $word)){
		return str_replace('ing', '', $word);
	}
}

////////////////////////////////////ここから本体

//ユーザーからのメッセージ取得
$json_string = file_get_contents('php://input');
$jsonObj = json_decode($json_string);
//送ってきた相手のmid取得
$to = $jsonObj->{"result"}[0]->{"content"}->{"from"};
//メッセージ取得
$text = $jsonObj->{"result"}[0]->{"content"}->{"text"};
//辞書検索
$text = searchWord($text, $englishDB);

//返信データ作成
$response_format_text = [
	'contentType' => 1,
	"toType" => 1,
	"text" => $text
	];
//このへんは固定データです。
//toは配列型じゃないとうまくいきません><
$post_data = [
	"to" => [$to],
	"toChannel" => "1383378250",
	"eventType" => "138311608800106203",
	"content" => $response_format_text
	];

$ch = curl_init("https://trialbot-api.line.me/v1/events");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json; charser=UTF-8',
    'X-Line-ChannelID: ご自分のチャンネルID',
    'X-Line-ChannelSecret: ご自分のチャンネルシークレット',
    'X-Line-Trusted-User-With-ACL: ご自分のmid'
    ));
$result = curl_exec($ch);
curl_close($ch);
    

こんな感じです。

メッセージの受信と送信本体は下のちょっとした部分だけですw

データの受信

$json_string = file_get_contents('php://input');
$jsonObj = json_decode($json_string);
$to = $jsonObj->{"result"}[0]->{"content"}->{"from"};
$text = $jsonObj->{"result"}[0]->{"content"}->{"text"};

 

***

 

file_get_contentsで取得です。

そこからfromでメッセージを送ってきた人のmidを取得します。

またtextで送信されたメッセージを取得します。

 

相手に送るメッセージを作成

$response_format_text = [
'contentType' => 1,
"toType" => 1,
"text" => $text
];


$post_data = [
"to" => [$to],
"toChannel" => "1383378250",
"eventType" => "138311608800106203",
"content" => $response_format_text
];

 

***

 

どの値も固定なのであまり気にする必要はありませんw

まずは上の部分。

LINEにメッセージを送信するときは……

contentTypeは1

toTypeもuserですので1

textは送信したいテキストです。

公式マニュアルをぺたり。

f:id:m_training:20160409221422p:plain

https://developers.line.me/bot-api/api-reference

 

***

 

続いて下の方。送る相手についての設定です。

toの部分は送る相手のmidです。

ここ、ただの"to" => $toにするとコケます><

配列の形(最大は150人みたい)でなければダメそうです。

"toChannel" => "1383378250",
"eventType" => "138311608800106203",

ここも固定の数字です。

contentに関しては上の方で設定したメッセージを使いましょう。

f:id:m_training:20160409221828p:plain

メッセージの送信

$ch = curl_init("https://trialbot-api.line.me/v1/events");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charser=UTF-8',
'X-Line-ChannelID: ご自分のチャンネルID',
'X-Line-ChannelSecret: ご自分のチャンネルシークレット',
'X-Line-Trusted-User-With-ACL: ご自分のmid'
));
$result = curl_exec($ch);
curl_close($ch);

 

***

 

この辺は色々なページを参照して作成していますので悪しからずです(^-^;

皆さんの真似でcurlを使用します。

curlは……ヘッダとか色々つけてhttpで色々できるよ!という代物……だと思います!

たぶん!(ぉ

 

さて。送る先はこのAPIです。

URL

https://trialbot-api.line.me/v1/events

 

メソッド

POST

 

ヘッダ

 

  • Content-Type: application/json; charser=UTF-8
  • X-Line-ChannelID: ご自分のチャンネルID
  • X-Line-ChannelSecret: ご自分のチャンネルシークレット
  • X-Line-Trusted-User-With-ACL: ご自分のmid

 

これらを設定しましょう。

全部LINE BOT APIの設定部分に書かれている情報です。

 

f:id:m_training:20160409220758p:plain

 

 

これで無事、メッセージを送ったら先生がお言葉を返してくれるBOTの出来上がりですw

f:id:m_training:20160409171415j:plain

f:id:m_training:20160409222520p:plain

デバッグが面倒くさいけれどどうすればいいの?

エラーログなどがないので、デバッグがつらいです……。

なので私は、まず自分のLINEのmidの取得をしました。

これは先日の『LINE Loginを実装』の副産物ですw

ログインすることでmidがとれましたのでw

それを送信の際の「to」に設定して、直接phpを実行しました。

callbackで呼ばず直接プログラムを叩く場合、whitelistも関係なしに呼び出すことができます。

叩くだけで「ぴろろん」とLINEが飛んできますw

 

実際にcallbackが反応するのはサーバーのログが取れなかったので、webscript.ioでcallbackが呼ばれているか確認していました。

ぜんぜん呼ばれず悪戦苦闘してました><

 

LINE Loginを実装してみた

 

ごきげんよう。たらこは焼きタラコ派のmです(何

 

Twitterログイン、Facebookログインにつづいて「LINEログイン」が現れましたねw

今日は早速それを使ってみましたのでご紹介したいと思いますw

 

 ↓自分のサービスに実装を反映しました

アイコレ! コレクション共有SNS

いったん取り下げますmm

 

LINE Loginを実装してみた

アカウントを作ろう

まずはアカウント作成です。

Business Centerというところからできるようです。

business.line.me

1. ログインボタン

f:id:m_training:20160408012521p:plain

 

このあと、

2.ログイン画面が表示されます。

3.そのあとにアカウント情報と企業情報を埋めます。

……キャプチャ撮り忘れました><

 

4.そしたら次はお目当てのLINE Loginを選択!

f:id:m_training:20160408012740p:plain

5.LINE Loginの説明をよんで、利用開始を押すと……今度は『ビジネスアカウント』なるものの作成が始まります。これは……なんだろうw

ここに設定した画像と名前が、LINE Loginの認証表示の時の絵と名前になるようです。

 

f:id:m_training:20160408012911p:plain

f:id:m_training:20160408013141p:plain

 

6.完了すると、また選択ですっ! はい、LINE Loginを選びますw

f:id:m_training:20160408013233p:plain

 

7.そして利用開始ボタンをポチります。

f:id:m_training:20160408013339p:plain

 

LINE Login Channelを作ろう

8.ここからLINE Loginの設定のようです。

空白を埋めていきます。

Application Typeは、今回はWebでのログインなので『WEB』を選びました。

Contact mailing list addressは、連絡用メールかと思われます。

終わったらCreateを押しましょう。

f:id:m_training:20160408013418p:plain

9.続いてTechnical configurationを選択します。

 

f:id:m_training:20160408013702p:plain

 

10.そこで、callbackのURLを指定します。

f:id:m_training:20160408013806p:plain

注意!!

ここは『https』でなければなりません!

あと、プログラム内の『redirect_uri』と一致していなければなりません!

ここで凄く苦戦していたのです……。

 

これでLINE Loginを使うための準備は完了です!

 

プログラムを実装しよう

では早速実装です!

Login画面呼び出し

LINE Loginの呼び出しをするときは簡単です。

テストなので、簡単にhtmlを書いてみました。

f:id:m_training:20160408014149p:plain

 

URLはこれです

https://access.line.me/dialog/oauth/weblogin

 

response_type

"code"で固定のようです。

 

client_id

channel IDが入ります。これは先程のチャンネル作成画面に書かれています。

 

redirect_uri

ログインした後戻ってくるURLです。

URLエンコードしましょう!

https必須です!

チャンネルの時のTechnical configurationのところと同じ場所にしましょう!

 

state

オプションらしいです。何か値を引き継ぎたい時に使うのが良いでしょう。

ここはURLエンコードしてはいけないとのことです。

 

ドキュメントはこんな感じです。

f:id:m_training:20160408014710p:plain

https://developers.line.me/web-login/integrating-web-login

 

callback.php

では、ログインした後に戻ってくるページです。

構成的には以下です。

1.ログインに成功すると『code』が戻ってきます。(errorならerrorCodeが帰ってきます)

2.戻ってきた『code』を使って、APIを呼び出す。

3.APIから戻ってきた値を見て煮るなり焼くなり好きにする。

 

私はこんなかんじで書いてみました。phpです。

	session_start();
	$code = $_GET['code'];
	echo "Code= " . $code;

	$url = "https://api.line.me/v1/oauth/accessToken";
	// POSTデータ
    $data = array(
        "grant_type" => "authorization_code",
        "client_id" => "チャンネルID",
        "client_secret" => "チャンネルシークレット",
        "code" => $code,
        "redirect_uri" => "リダイレクトする場所(使わなくてもよさ気…?)"
    );
    $data = http_build_query($data, "", "&");
    $header = array(
		"Content-Type: application/x-www-form-urlencoded",
		"Content-Length: ".strlen($data)
	);
	$context = array(
        "http" => array(
                "method"  => "POST",
                "header"  => implode("\r\n", $header),
                "content" => $data
        )
     );
	$res = file_get_contents($url, false, stream_context_create($context));

	$token = json_decode($res, true);
	if(isset($token['error'])){
		echo 'ログインエラーが発生しました。';
		echo "error" . $token['error'];
		echo $token['error_description'];
		exit;
	}

	while(list($key,$value) = each($token)){
		echo $key.' -> '.$value;
	}

こんな感じです~

 

URL

https://api.line.me/v1/oauth/accessToken

メソッド
POST

header

Content-Type: application/x-www-form-urlencoded

データは……

f:id:m_training:20160408020733p:plain

公式よりw

codeのところで、ログインした時に帰ってきた値をつかいます。

redirect_uriはこのときは使わないかもしれません。

 

実行!

では実行です!!

f:id:m_training:20160408015844p:plain

ボタンはこんな感じに。(私が描きましたw)

それを……

ポチッとな!

f:id:m_training:20160408020001p:plain

そうすると、LINEのログインページに移動します。

LINEに設定したメールアドレスとパスワードを入力です。

ログイン!

f:id:m_training:20160408020056p:plain

すると規約がでました!

なお、絵はゲーム系に使うと怒られる系の絵だったのでこまりんに変更ですw

そして『同意する』

すると……

f:id:m_training:20160408020420p:plain

しっかり値が戻ってきましたねw

モザイクだらけでゴメンナサイw

 

返ってきたデータの意味は……

f:id:m_training:20160408020913p:plain

こんな感じですね。

『mid』でユーザー識別が出来そうです。

なのでこれを使って登録などすれば良さそうです。

 

ここから更にいっぱいデータがほしい時はREST APIになるらしいです。

 

2016/4/9追記

LINEの名前(displayName)とLINEのプロフィール画像を取得

 LINEの名前と画像は取得できないの?という意見をいただきましたので、その取得も書いておきます~。

 

名前と画像の取得は簡単で、headerにアクセストークンを設定して

https://api.line.me/v1/profileにアクセスするだけですw

URL

https://api.line.me/v1/profile

メソッド

GET

header

Authorization: Bearer アクセストークン

コードはこんな感じでしょうか。

 

    function getProfile($access_token){
		$url = "https://api.line.me/v1/profile";
		$context = array(
	        "http" => array(
	                "method"  => "GET",
	                "header"  => "Authorization: Bearer ". $access_token
	        )
	     );
		$res = file_get_contents($url, false, stream_context_create($context));
		return json_decode($res, true);
	}

	session_start();
	$code = $_GET['code'];

	
	$url = "https://api.line.me/v1/oauth/accessToken";
	// POSTデータ
    $data = array(
        "grant_type" => "authorization_code",
        "client_id" => "チャンネルID",
        "client_secret" => "チャンネルシークレット",
        "code" => $code,
        "redirect_uri" => "リダイレクトするURL(いらな気…?)"
    );
    $data = http_build_query($data, "", "&");
    $header = array(
		"Content-Type: application/x-www-form-urlencoded",
		"Content-Length: ".strlen($data)
	);
	$context = array(
        "http" => array(
                "method"  => "POST",
                "header"  => implode("\r\n", $header),
                "content" => $data
        )
     );
	$res = file_get_contents($url, false, stream_context_create($context));

	$token = json_decode($res, true);
	if(isset($token['error'])){
		echo 'ログインエラーが発生しました。';
		echo "error" . $token['error'];
		echo $token['error_description'];
		exit;
	}

	$profile = getProfile($token['access_token']);
	echo "profile:" . $profile['displayName'] ;
	echo "status message:" . $profile['statusMessage'] ;
	echo 'image: <img src="' . $profile['pictureUrl'] . '/large" alt="" /> .';
    

 

そうすると、以下のものが返ってきます。

f:id:m_training:20160409011327p:plain

https://developers.line.me/restful-api/api-reference

displayNameがLINEに表示される名前です。

midは識別IDみたいなものです。

statusMessageは、あのリストに表示される時の文字ですw

pictureUrlはプロフィールの画像です。

largeとsmallがあるようですね。

f:id:m_training:20160409011507p:plain

 

 実行してみると……

f:id:m_training:20160409011609p:plain

こんな感じでLINEの名前とプロフィール画像、そしてステータスメッセージが取得できましたw

 

 

ガイナ立ちの金剛さん【艦これ】【厚塗り】

ごきげんよう。

近頃パンには「ハチミツミソ」を塗って食べているmです!(何

門司港のはちみつ屋さんで見つけて買ったんですよw

味は……甘いようなしょっぱいようなですw(まんま

 

金剛デースッ!【ガイナ立ち】【厚塗り】

mはアニメ塗りの人というのが定着しています。

ですが!

それを打ち破るべく厚塗りをしてみましたw

……そんな崇高な思いがあるわけではなく、不意に「やってみよっと」と思っただけですw(ぉ

 

ちなみに厚塗りとは。

色を何度も塗り重ねてゆく手法かな、と。

アニメ塗りの場合は最初から線画を完成させてから色を載せます。

厚塗りでは色を乗せながら線を引いたりと、塗りながら絵を整えていき完成させていきます。

 

厚塗りは重厚感あふれる塗り方。

どのような絵を描きましょう……と思った所でmの頭にはすでにロボットソングが流れていましたw(グレンラガンあたりです)

ならばこう「バーンッ!!」と来る構図だとモヤモヤ妄想。

で、構想を固めましたがmは、ずーーーっとアニメ塗りの人で他の塗り方をしたことがありません。

どう塗ればいいかよくわかっていませんがお絵かき講座や好きな人の絵をしばらく眺めてイメージイメージです。

 

それから気合い一発絵をカキカキですw

うららかな春の日差し、窓辺から見える桜を優雅に楽しみつつ

 

f:id:m_training:20160404074041p:plain

 

金剛デースッ!!

 

全身はこんなかんじ。

f:id:m_training:20160404074950p:plain

 

出てきた途端「勝ったな……」くらいな感じの絵を描きたかったんです(爆

もちろん出てきた時は主題歌が流れるかデンドンデンドンに決まっています(核爆

 

もうすこし慣れたらイメージする迫力を絵に落とせる……ようになったらいいなですw

 

で、こんな変遷を経て描いてます

f:id:m_training:20160404075455p:plain

f:id:m_training:20160404075527p:plain

f:id:m_training:20160404075549p:plain

 

レイヤー1枚に色を載せて描いたのですが、やっぱりレイヤー分けはしたほうが書きやすいです(^-^;

 

カラオケオールした

mが金剛さんを描いている時。

「mさんカラオケいこー」

となったので……夜6時から朝3時過ぎまで、9時間歌ってきましたw

4人でしたが、みんなアニソン好きですので安心なカラオケです(一般な方とは気を使いますからね~

もちろんmは腕を組んで仁王立ち気分ですので、最初からJam Projectを入れて絶叫しまくりです(爆

年代故か、サイレントメビウスとかウテナとかYou get burningとか懐かし曲がw

友達の寝起きでリセット(懐かしきらき☆すた)が可愛かったです(爆

そこにmがW-infinityを入れたりして場が大混乱ですw

今回はカラオケ好きな人が多かったせいか、曲を予約しようとしたら

「予約がいっぱいで予約できません」

の表示が!(何曲入れてるんだ

後半に僕だけがいない街とか入れていましたが、夜2時位だとさすがに本気で酸欠でした><

 

さて。

今日も声がでないのです(^-^;

お仕事にこの声でいくとはっ(滝汗

 

 

 

 

Official LINE Account
友だち追加
@hgf7288s