My plot.

イントロクイズの話とか、プログラム関係の備忘録だったり。書きたいことを気が向いたときに書きます。

快適なイントロクイズ出題環境に向けてfoobar2000の整備をしていく

イントロクイズをオンラインで出題しようということで多くの方がfoobar2000を導入いただいているようで、こちらの記事が結構見ていただけているようで。

pgdora56.hateblo.jp

結構、foobar2000での出題が増えてきた中、foobar2000のセッティングで質問をいただくことが増えてきたので、foobar2000のComponentsについてまとめてみようかな、と思っています。

続きを読む

オンラインイントロクイズ出題環境の構築方法についての提案

[2021/7/19追記] 現在はDiscord Audio Stream botを使用する方法が簡単で音質等も良いため主流となっています.こちらのページもご参考になさってください.

pgdora56.hateblo.jp


自分自身への備忘録も兼ねて、オンラインクイズの出題環境構築方法を記載しておきます。Windows環境を想定しています。

全体的に他のサイトに頼りがちです。ごめんなさい。おいおい修正してここだけで完結できるようにします。

オンラインでイントロクイズをしていると、時折解答側の声が返ってきてしまっていることがあると思います。 と、言うのも、私自身自分の声がとても嫌いです。なのでこの現象には割と悩まされていたりします。

そこで、物理的にそれが起こらないような構築をどのように行うか、というのをつらつらと書き記したいと思います。

続きを読む

再開カルテット

数年ぶりにこのブログの存在を思い出したのでなんとなく再開しようかなと思ったり。

ただ数年前とは状況があまりに違って。まず大学進学もしたし、イントロクイズに出会ったのもその後。書く内容はきっと変わっていくんだろうな。 昔の記事を見返しながら、「あ~~クソ雑魚技術野郎だなぁ~」なんて思ったりしてた。まあ今もそんなに高いわけではないから……

技術的な話は引き続き書きたい。Qiitaの事件もあったし、よく考えるとブログのほうが好きに書けるし。まあまあ上手く使っていきたいな。

イントロの話なら入手した音源のことは書いて行きたさ。新譜の話が主ですかね。

あとはBOOTHを始めた。有料で売る気はあんまりなくて、自分の制作物を配布する場所として、GithubのReleaseだと慣れてない人がむずめなので、そういう意味でBOOTHを活用させてもらいたい。

Dora's Sail - BOOTH

そんな感じでいい感じに使っていこう、などと。 コロナのせいでだいぶ暇だし。

タイトルは最近『異世界かるてっと』を見ているため。曲は聴いてるけど見てなかったので…原作全部知らないけど、とりあえず楽しめています。

C# Programmer meets Python

最近、Python(3.x)なんかを触ったりしていたのですが、少し変わった言語だな~~と思ったので、C#プログラマ視点からいくつか特徴的な点を紹介してみようかなと思います。

いくつかの他言語(C#,Java等々)からPython使おうとしてる方は多少参考になるかもしれません、

ただし、私はC#大好きです

そのため、多少否定的になってしまうかもしれませんが、それはご愛嬌ということで。


Python 2.x系は微妙に内容が違いますので、そちらをこれから学ぶ、という方は十分にご注意ください。

全体像として

とりあえずHello, World.の比較。

using System;

namespace sample
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Hello, World!");
    }
  }
}


print("Hello, World!")

C#、圧倒的敗北感。

やはりというかなんというか。スマートさではPythonには叶いません。そりゃそうだよ。

かくいう私もpaizaなんかで簡単なコードサクサクやるときはPythonですし。


変数定義

int i = 100;

string player = "SHIZUKA MOGAMI";

bool flag = true;


i = 100

player = "SHIZUKA MOGAMI"

flag = True

型明示しなくていいのか~~なんか気持ち悪いな~~

と私は思ってしまいました。ちなみにC++大好きな先輩にも意見を求めたところ同じ感じでした。

もっとも暗黙的に型宣言してるだけで、型の概念はあります。当たり前です。
初めて入る人にはいいかもしれませんが、ここから明示的な言語に移る時、ちょっと大変な気もしなくもない。まあこの程度ならすぐ慣れますかね~~


条件分岐(=if)

とりあえず簡単に、合格点かどうかなんかを判断させてみます。

int score = 20;

if(score == 100)
{
  Console.WriteLine("満点です!すばらしい!");
}
else if(score >= 80)
{
  Console.WriteLine("合格です。");
}
else
{
  Console.WriteLine("不合格です。");
}


score = 20;

if score == 100:
  print("満点です!すばらしい!")
elif score >= 80:
  print("合格です。")
else:
  print("不合格です。")

括弧で囲わないのか…と、少し最初見にくかったりはしましたが、そこはだんだん慣れてコロン1個が楽になってきました。

そんなことよりelifって。少しは略されたseの気持ちも考えてやれよ!!

はい、茶番です。大体の言語でelse ifのままで略されませんから、少し不思議ではありますよね。


繰り返し構造(=for?)

forの後ろに?がついてるのに気づいた非Pythonプログラマの皆さん。よくぞ気づかれた。

なぜならPythonのforは他言語だとforeach1に当たるのです!!

「おいおい、for使いにくすぎやん!!」

と思われた方、私もそう思いました。

とりあえず "一般的なfor" を使おうとする場面を考えましょう。

for(int i=0;i<10;i++)
{
  Console.WriteLine(i);
}


for i in range(10):
  print(i)

「あれ、思ったより変じゃないのでは?」

ポイントはこのrangeという関数。

これは引数を1つあるいは2つ取りますが、それにより以下のような挙動をします。

list1 = range(5)
# ここでlist1には [0,1,2,3,4] というリスト(配列と似たもの)が代入されるイメージ(正確には違う)

list2 = range(-5,3)
# ここでlist2には [-5,-4,-3,-2,-1,0,1,2] というリストが代入されるイメージ(正確には違う)

つまり、rangeは整数の配列を作る関数と捉えてもらえれば問題ありません2。これをPythonfor(=foreach)と併用したら…

とても強力なのは言うまでもありません。この関数があるため、foreachforを一本化しても問題ないのでしょう。

では、普段のforeachのように使ったときを見てみましょう。

string[] cities = new string[]{"Yokohama", "Nagoya", "Osaka", "Hakata" };
foreach(string c in cities)
{
  Console.WriteLine(c);
}

// (以下出力される値)
// Yokohama
// Nagoya
// Osaka
// Hakata


cities = ["Yokohama", "Nagoya", "Osaka", "Hakata"}
for c in cities:
  print(c)

# (以下出力される値)
# Yokohama
# Nagoya
# Osaka
# Hakata

一つの関数で両方できるのは分かりやすかったりするのかな―と思ったり思わなかったり。他言語やってからやると、慣れれば難しいことはなかったです。

Pythonからプログラミングを始めた方は他をやろうとしたときに「うわっこれいちいち2個に分けてんのかよめんどくさ」とか思うんでしょうかね…

まとめ

とりあえず私がやっていて結構違うな、と思ったところを数点あげてみましたが、とにかくPythonは書きやすいです。

思い立ったらサラッと書ける。

でもやっぱりC#のほうが得意なことはあるわけで……上手に使い分けていければいいんだろうなーということです。どの言語にも言えることですが。

あ、turtleのことを書き損ねた。実用性はどうなのか分かりませんが、手軽にグラフィックが扱えるモジュールのturtleってのがあるので、興味がある方はどうぞ調べてみてください。気が向いたら取り上げます。

そういえばあんまり否定的にならなかったなー(o・∇・o)


  1. (ご存じない方向けの簡単な解説)配列などを指定し、その配列各要素に一度ずつある処理を行わせる、forの姉妹のようなものです。C#の例は繰り返し構造後半で提示するプログラムを参照ください。

  2. range関数、実際にprintしてみるとリストは出ないで、range(10)的なのがそのまま出るんですよね。内部的には遅延評価みたいにしてるんだろうか?その辺は勉強不足。まあ使う上ではリストだと思って使えばほぼ問題ないでしょう。

わかばちゃんと学ぶ、Git使い方入門<GitHub、Bitbucket、Source Tree>

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

買いました!!読み終わりました!!

とりあえずこの本片手にやったGit/GitHub挑戦記的なものを書きます*1

これまでのあらすじ

今までもGitにチャレンジしようとしたことは何度かあったのですが、いまいち分からず挫折してました。

「まーじ?ふぇっち?ぷる?なんだ~~~~~??」

って感じです。カタカナに弱い。

本を買った経緯

まずこの前作に当たる(?)『わかばちゃんとWebサイト制作の基本』を買ったところからです。当時はTwitterで評判が良いのと、電子書籍の使い勝手を見たかったというので、Web制作それなりに分かってはいましたが、kindle版を買いました。

わかばちゃんと学ぶ Webサイト制作の基本

わかばちゃんと学ぶ Webサイト制作の基本

いや~わかりやすいな~~~~~、と。 「自分が初心者のときに欲しかった!!」と自然に口にしてしまうくらいでした。周囲にいるWeb制作学びたい人に片っ端からおすすめしてます(現在進行形)。

そんな中、Git版が出るという話を聞きました。 これは買わない訳がありません。

ちなみに今回は書籍で買いました。基本的に電子書籍スマートフォンで見るので少し文字が小さく、ガッツリ学ぶなら書籍かな、と。 こればっかりはkindleなりタブレットなりほしいですね。

まずGitから

本の最初はSource TreeをダウンロードしてGitです。「さあ~はじめるぞ~」というところにSource Treeを作っているAtlassianのサーバー不具合か何かでGoogleもAtlassianもログインできないというトラブル。わかばちゃん流行り過ぎかよ~とか思いつつ、一旦本を置いて翌日にやりました。
UIが多少変わっていたりはしましたが、大した支障はありません。

この項ではGitの基本、ステージング・コミット・チェックアウトなんかをやり、以前触ったときにつっかかってたのがウソのようにすぐ理解できました。
しばらく自分の既に作ってあったプログラム何かを使って実験してみる。便利。ほんとに。

以前CSS等々のバージョン管理で苦労したのもあったので、その便利さは一入でした。

そんなこんなでLet’s コミット~とGitをエンジョイしつつ、痩せなきゃなーと思う序盤(違うコミット)。
ライザップは高い。チェックアウト(リバウンド)したくないので向いてるのかもしれませんが。

…………話がそれた。 とりあえずWeb制作でバージョン管理に四苦八苦してた私は使うべきだったツールだな~と思ってました。

続いてGitHub

要するにみんなでGitしよう!のコーナーです。なので友人を一人巻き込みました(後述)。

そもそもとして以前Gitをやろうと思ったときの理由がGitHubだったので、アカウントだけはあったんですよね。プッシュもフォークもできなくて空っぽの悲しい感じになってましたが。 というわけでアカウント作成は飛ばして、フォークから。

私みたいに友人が少ない人にはフォークする練習場所があるのはとても嬉しかったです。そしてそこを色々見てたらビタワンさん*2がいて驚いたり。以前触ったときよりすごく楽しめてます。

その後、同じく用意されてるところからプルリクエストしてくるのが本筋のルートなんですが、ここで友人を巻き込み、とりあえず私が即興で作った適当なPythonリポジトリを友人にフォーク&クローンさせたりなんだりして、互いにプルリクエストを送ったりしました。

ここで分からなくなったのが、フォークした後、フォーク元のリポジトリが更新され、それを追いかける方法。

グーグル先生に頼って色々やってみた結果、Source Treeのほうでリモートブランチ的なところにフォーク元のmasterブランチを適当な名前をつけて、それを追跡(?)する方法です。実際自分でも何やったのかイマイチ理解できていません。発展的な内容な感じはしたので、もう少し慣れてから再チャレンジします。

その他にも、この項ではコンフリクトの対応だったり、ブランチの作成だったり、GitHubを使う上で必要になるSource Treeの使い方も学びました。ここまで学んで「お~使えてる~~」っていう実感が一気に増してきます。楽しい。

実用Git

ここではここまでに触れてこられなかったGitの機能等について、解説されています。一つ一つ実践して「ほぇ~便利~」っていう小学生みたいな感想を口にしたりしてました。
扱った内容はこんな感じ。

  • リバート
  • リベース
  • スカッシュ
  • フェッチ
  • マージ
  • スタッシュ
  • チェリーピック

果たして何を言っているのか。そんなことを思った昔の私みたいな方はぜひ読んで下さい。

その後

Git&GitHubの入門を果たした私は、とりあえず毎日GitHubを触っていこうかな、って感じのチャレンジをしています。やっぱりコードに毎日触るのは大事かな、と思ったのと、GitHubのcontributionsの存在です。モチベーションになる。

f:id:pgDora56:20170430010456p:plain GitHubのcontributions。活動に応じて1日1マスで緑色に塗られていきます。全部埋まったら達成感すごそう。

本当にこの本を買ってよかったと心から思える本でした。前回のWeb制作はもともと知っていたのでここまでは感じませんでしたが、全く知らないところからここまでスッキリ理解できると本当にうれしいです。この本を出版してくださって本当にありがとうございました。

そしてGit触ったことない方はぜひおすすめです。どんな言語使ってる方も、世界が広がる気がします。
まだ大した使い方はできていませんが、今後どんどん活用していきたいと思います。

*1:今回Bitbucketは目を通すだけにしてGitHubに重点を置きました。GitHubに慣れてくるor非公開リポジトリを使わなきゃいけなくなったらチャレンジします。

*2:社畜ちゃんを描いてる方 (https://syachiku-chan.com/)。いつも読ませていただいてます。

ガジェットとか

久しぶりに筆を執ります。

なんだか最近いろいろなことがあり、何を書こうかな、となったとき、とりあえず生活が変わって増えたPC周りの物品を書いていこうかなと思います。


PC

新しいのを入手しました。Windowsなので結局C#をいじるのから離れられなそうです。*1

ec-club.panasonic.jp

Amazonでいい感じのが見つからなかったのでPanasonic公式を。Win10Pro+Corei7-7500Uみたいな感じで今までのPCからのグレードアップがすごいっす。何もかもがサックサク。


トラックボール

今まで通りLOGICOOLのM570tは使い続けていますが、少し大きめで持ち運びに不便だったので小さめのを新たに買いました。

持ち運びには便利ですが、クリック音が小さい静音タイプなのが少し慣れない。そのうち慣れる(自戒)。それ以外はとてもいいですが、数百円足せば無線モデルにできたのでそっちにすればよかったかなーという若干の後悔はあります。


ガジェットケース

生活環境が変わり、PCを持ち運ぶ機会が増えたので、「ACアダプタからトラックボールから色々持ち運べるケースが欲しい!!」ってことでケースを購入。

「出張に最適!」とありますが、普段使いするのにもいい感じです。Amazonの割引でSサイズより値段が低いパラドクス。まあラッキーってことで。


イヤホン

PCってかXperiaWalkmanに使うんですが、今まで使ってたWalkman付属のが壊れてしまったので、オーディオ系に強い友人に連れられ秋葉原のe☆イヤホンに行きました。場所がとてもわかりにくかった。
ほぼすべてのイヤホンが試聴可能ってのはやっぱりすごいですね。少ない予算の中から自分の好みに合いそうなものを選ぶのに最適でした。

結局選んだのがこれ。

結局ソニーかよっていう。メーカーはあまり気にしてなかったんですが、私の耳はソニーがお気に入りみたいです。

最後までこいつと迷いました。

ちょっと新しいモデルって感じでしょうか。ただ音色は少し違う感じで値段も高く、財布が許せばこっちが良かったんですが…なにぶん金欠で。誰か恵んでください。

そこまでお金をかけなくてもそれなりのイヤホンが買える世界。とても幸せな世界です。

ちなみにその友人は8万のイヤホン買ったって言ってたりしたような。興味はすごくあるけど金銭的に手が出せない。


こんなところでしょうか。生活環境がガラリと変わったので色んな物を買いましたね。他にも買った気がする。

しばらくはこんな感じでちょくちょく変化したことを書いていきそうな気がします。主に音楽の管理用にまだ旧PC(Ubuntu)は使うと思いますが、しばらくはUbuntu実践記的なものはおやすみになりそうな予感です。

(o・∇・o)

*1:UbuntuでもmonoでC#書いてましたけどね。去年Visual Studio for Macがリリースされたので、C#の舞台広がってくれないかな~と思うこの頃です。がんばれXamarin!!