紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【Python】複数のインデックス番号を指定してリストから一括削除する方法

f:id:yokoyantech:20180717175613p:plain

やりたいこと

  • 複数のインデックス番号を指定して、リストから対象のデータを一度に削除したい

結論

  • lambda式を使う

困った例

以下だと、削除したいインデックスがずれてしまう。

list = ["りんご","みかん","バナナ","メロン","スイカ"]
# りんごとメロンを消したい
del_index = [0,3]

for x in del_index:
  del list[x]

# ['みかん', 'バナナ', 'メロン']
print(list)

実現方法

lambda式で実施すればOK

list = ["りんご","みかん","バナナ","メロン","スイカ"]
# りんごとメロンを消したい
del_index = [0,3]

del_list = lambda items, del_indexes: [item for index, item in enumerate(items) if index not in del_indexes]
# ['みかん', 'バナナ', 'スイカ']
print(del_list(list, del_index))

参考

qiita.com

でかドージョーin東京にはじめてメンター参加したらニンジャたちのレベルの高さに衝撃を受けた話 #CoderDojo #DecaDojo

はじめに

2018年7月22日に開催された、でかドージョーin東京にはじめて参加してきました。 いろいろ学ぶことがあったため振り返ります。

参加しようと思ったきっかけ

以下の記事にまとめました。

www.yokoyan.net

会場はサイボウズさん

今回のでかドージョーの会場は、東証一部上場企業のサイボウズさんでした。8月に開催されるDojoConの会場でもあるそうです。

dojocon2018.coderdojo.jp

image

日本橋駅直結のビルで、とてもキレイでした。都心の駅直結ビルとか憧れます。

image

出迎えてくれたのは…キリン!?カンガルー!?

image

サイボウズさんのオフィスで、まずはじめに目を引くのはキリン!きりんとーんだそうです。キントーンですね。すべての動物にサイボウズのサービスの名前がついているのだそうです。みんなサイボウズの名刺をしてて可愛かったです。

image

何と言うもふもふ感。癒やされる。

image

カンガルーンwwwサイボウズのガルーンですね。

イノベーションが生まれそうな綺麗なオフィス!

image

ハンモックもありました。これはニンジャ達が喜ぶだろうなあと思いましたが、案の定大人気でした。

image

社内にはカフェもありました。見てるだけでもテンション上がるオフィスでした。

image

カフェの裏にあるオープンスペースです。窓からはスカイツリーが一望できました。

image

こういうオフィスで働きたいですねえ・・・。

第1部の様子

私の担当はScratchワークショップ

私はScratchワークショップに参加しました。4人のニンジャのうち、1人がScratchが初めてだったため、Wi-Fi接続、Scratchアカウント作成からフォローさせていただきました。

image

最終的にはシューティングゲームを作れるようになっていて、ニンジャの適用能力の高さに驚かされました。わからないけど、やってみよう!!という気持ちは、大人よりも子供のほうが遥かに強いのだと思います。大人になると理屈っぽくなり、できない理由ばかりを述べがちだなあ・・・とこっそり反省しました。

小学校入学前のニンジャも参加していたbiscuitワークショップ

隣の会議室では、タブレットでプログラムが作れるbiscuitのワークショップが行われました。biscuitとは、メガネを使ってプログラムを作るプログラミング言語です。

https://www.viscuit.com/

4歳くらいのニンジャがおじいちゃんと一緒にプログラムを作っていました。ほっこりします。

image

自分で考えた世界観を、自分でScratchで世の中に出すニンジャたち

それぞれのワークショップが終わったあとは、成果物の発表が行われました。

image

小学生の頃から自分の作品を知らない大勢の前で発表する経験が積めるというのも、CoderDojoに参加するメリットだと思います。

RPGツクールVXで独自のRPGを作ったニンジャもいました。BGM付きで、小さいニンジャたちが食いついていました。

image

スターウォーズのシューティングゲームを作ったニンジャもいました。

image

オープニングも見事に再現されていました(笑)プレイヤーが帝国軍につくか、解放軍につくかも選択できるという作り込みがされていて、大人顔負けでした。

image

ニンジャの発表を聞いて、自分で考えた世界観を、自分でScratchで世の中に出すということは、とても楽しそうだと感じました。

image

第2部の様子

オープンスペースで自由にプログラムを書くニンジャたち

第二部も引き続きScratchのメンターとして参加しました。 第一部とは違い、オープンスペースで自由に作業を進めるニンジャが多かったです。

image

途中でお菓子休憩もありました。メンターが用意していたお菓子を、女の子のニンジャがきれいに整列してくれました。なんて優しい子!

image

体を使ってプログラミングを行う、Let's Go Codeを楽しむニンジャもいました。

image

第二部はとても多くのニンジャが発表してくれました。発表待ちの長蛇の列ができていました。

image

Scratchでこんなことができるのか!?と驚かされたニンジャたちの発表

第二部のニンジャは、Scratch歴が長い人が多く、 驚かされっぱなしでした。

ScratchでRPGを作ったニンジャです。フィールドを移動していると、ランダムで敵が出てきて戦闘が発生します。すごすぎる・・・!

image

image

電子工作を発表してくれたニンジャもいました。マイコンのArduino(アルデュイーノ)と、C言語、C++言語で作ったそうです。

image

マイクに話しかけると、キャラクターが応答してくれるプログラムを作ったニンジャもいました。BOTプログラムの原形ですね。

image

メンター参加した感想

今回もとても楽しかったです。やはり、CoderDojoの主役はニンジャだなと感じました。親御さんと参加しているニンジャがほとんどでしたが、大人はあくまでも補助輪なのではないかと感じました。

ニンジャの自主性を尊重して、メンターや親御さんが手出ししすぎるのも良くないと思います。大人がプログラムを書いて、ニンジャが見ているだけでは意味が無いため、大人はあくまでもきっかけ作りなのだろうと思います。この姿勢は、CoderDojoに限らず、子育て全てに言えることだなと学びました。

大人顔負けのプログラムを書くニンジャは、1人でゴリゴリ書いていたため、基本的な操作を覚えた後は、あとはニンジャに自主性に任せてよいのだと思いました。

また、今回はでかドージョーということもあり、さいたま道場以外のメンターの人たちと話せたことも収穫でした。たくさんの人たちがボランティアで集まって運営されているCoderDojoはすごいなと改めて実感しました。

おわりに

ということで、本エントリでは、でかドージョーin東京の参加レポートについて書きました。 メンター参加することで、ニンジャたちからたくさん学ぶことがあった一日でした。これからもメンター参加していきたいと思います。引き続き、さいたま道場のみなさまよろしくお願いいたします。

「Scratchをはじめよう」をやってみました。 #Scratch

はじめに

ツールバーのヒントをクリックすると出てくる、Scratchをはじめようの学習ログです。

色を変える

  • 見た目をクリックします。

image

  • 色の効果を25ずつ変えるブロックをドラッグします。

image

  • ドラッグしたブロックをクリックすると語に、ネコの色が変われば成功です。

image

インタラクティブにする

キーをクリックしたタイミングで、猫の色を変えられるようにします。

  • イベントをクリックします。

image

  • スペースキーが押されたときのブロックを、色の効果を25ずつ変えるブロックの上にドラッグします。

image

  • スペースキーを押すごとに、猫の色が変われば成功です。

image

背景を追加する

  • 画面左下のスプライトの左側にある、ライブラリーから背景を選択を選択します。

image

  • 背景ライブラリーから好きな画像を選びます。

image

  • 画像を選択すると、背景画像が追加されます。

image

新しいスプライトを追加する

ネコ以外のキャラクターを追加します。

  • スプライト欄から、 スプライトをライブラリーから選択をクリックします。 image

  • スプライトライブラリーから好きな画像を選択します。

image

  • 画面に新しいスプライトが追加されます。スプライトの位置は、ドラッグして移動できます。

image

音と背景を探す

音の追加

  • 画面中央のタブをクリックします。

image

  • 音をライブラリーから追加をクリックします。

image

  • 音ライブラリーから好きな音を選びます。

image

  • 選択した音が追加されます。

image

  • 新しいスプライトを選択して、 スクリプトから、 ~の音を鳴らすブロックをドラッグします。 image

コスチュームの追加

  • コスチュームタブをクリックして、スプライトに用意されたコスチュームを確認します。

image

  • スクリプトタブを選択して、以下のブロックを追加します。
    • 旗がクリックされたとき
    • ずっと
    • 次のコスチュームにする
    • 1秒待つ

image

  • 緑色の旗をクリックして、追加したスプライトのコスチュームが変われば成功です。

image

【Python3】メソッドの戻り値を複数返す方法

f:id:yokoyantech:20180717175613p:plain

やりたいこと

1つのメソッドで複数の戻り値を返したい

解決策

returnする値をカンマで区切る

文字列と数字を返す例

def hoge():
    # 略
    return "hoge",123456789

文字列と数字が含まれたリストを返す例

def hoge():
    # 略
    return ["hoge",123456789]

複数のリストを返す例

def get_hogelist(hoge,fuga):
    large_hogelist = []
    small_hogelist = []
    # 略
    return large_hogelist,small_hogelist

【はじめてのScratch】アカウント登録からネコを動かして保存するまでの手順

はじめに

今後、CoderDojyoにメンターとして継続的に参加したいと考えています。 CoderDojyoでは、子ども向けのプログラミング言語Scratchを使うことが多いため、自分でも触ってみることにしました。

Scratchに興味がある方々の参考になれば幸いです。

事前準備

以下を用意します。

  • インターネット接続できるパソコン
  • ブラウザ(今回はChromeを使っています)

Scratchアカウント登録手順

  • 以下の公式サイトにアクセスします。

scratch.mit.edu

  • Scratchに参加しようをクリックします。
  • ユーザー名、パスワードを入力します。

f:id:yokoyantech:20180716142603p:plain

  • 生年月、性別、国を入力します

f:id:yokoyantech:20180716142752p:plain

  • メールアドレスを入力します。

f:id:yokoyantech:20180716143120p:plain

  • 入力したメールアドレスにScratchからメールが届きます。
    • 受信したメールを開き、電子メールアドレスの認証をクリックします。

f:id:yokoyantech:20180716143442p:plain

  • メールアドレスを入力したら、ログインに成功します。
    • さあ、はじめよう!をクリックします。

f:id:yokoyantech:20180716143317p:plain

  • 以上でScratchアカウントの登録は完了です。

Scratchプロジェクトの作成方法

  • TOPページの、Scratchでプロジェクトを作るにはをクリックします。

f:id:yokoyantech:20180716143638p:plain

  • 数秒待つと、プロジェクトが作成されます。

f:id:yokoyantech:20180716144229p:plain

チュートリアルの実施(ネコを動かす)

最初の1歩として、ネコを動かしてみます。

  • プロジェクトの一番右に表示される、Scratchをはじめようを表示します。
  • スクリプトタブ内の10歩動かすブロックを、ドラッグして真ん中に配置します。

f:id:yokoyantech:20180716145449p:plain

  • 配置した10歩動かすのブロックをクリックするたびに、一番左のネコが10歩ずつ右に移動します。 f:id:yokoyantech:20180716145402p:plain

チュートリアルの実施(ネコを動かして音を出す)

続いて、ネコを動かした後に音を鳴らしてみます。

  • スクリプトタブの中から、を選択します。 f:id:yokoyantech:20180716145747p:plain

  • 先ほど配置した、10歩動かすブロックの下に、1のドラムを0.25拍鳴らすブロックを配置します。 f:id:yokoyantech:20180716145852p:plain

  • 配置した2つのブロックのうち、どちらかをクリックします。

  • 左側のネコが、10歩右に移動してから、ドラムの音が鳴ったら成功です。 f:id:yokoyantech:20180716150515p:plain

チュートリアルの実施(ダンスをはじめよう)

続いて、 ネコを左右に動かして、ダンスをさせてみます。

  • スクリプトタブから、動きを選択します。

f:id:yokoyantech:20180716152015p:plain

  • 10歩動かすブロックを選択して、真ん中にドラッグします。
    • その後、10歩の部分を、-10歩に書き換えます。

f:id:yokoyantech:20180716152315p:plain

  • スクリプトタブから、を選択します。

f:id:yokoyantech:20180716152456p:plain

  • 1のドラムを0.25拍鳴らすブロックを、真ん中にドラッグします。
    • その後、1のドラムをクリックして、プルダウンメニューを表示します。
    • メニューから好きなドラムの音を選択します。

f:id:yokoyantech:20180716152629p:plain

  • 4番のドラム(クラッシュシンバル)を選択すると、以下のようになります。

f:id:yokoyantech:20180716152830p:plain

  • ドラッグした4つのブロックのどれかをクリックします。
    • 画面左のネコが左右に動き、音が鳴れば成功です。

f:id:yokoyantech:20180716153010p:plain

チュートリアルの実施(何度も繰り返す)

ボタンを毎回毎回クリックするのは手間です。そのため、指定した回数だけダンスを繰り返すように改良します。 業務で使うプログラミングでも、繰り返しはよく使います。(いわゆるループ処理です)

  • スクリプトタブから、制御を選択します。

f:id:yokoyantech:20180716154008p:plain

  • 10回繰り返すブロックを選択して、真ん中にドラッグします。
    • ドラッグする時に、これまでに積み上げた4つのブロックを包むように配置します。
    • 10回繰り返すブロックで包んだブロックを、指定した回数だけ繰り返すことになります。
    • 10回以外の回数を指定することもできます。

f:id:yokoyantech:20180716154102p:plain

  • 配置したブロックをクリックします。
    • 指定した回数だけネコがダンスして、音が鳴れば成功です。

f:id:yokoyantech:20180716154607p:plain

チュートリアルの実施(何かおしゃべりする)

続いて、ネコがしゃべるセリフを追加してみます。

  • スクリプトタブから、見た目を選択します。

f:id:yokoyantech:20180716155210p:plain

  • Hello!と2秒言うブロックを一番最初の位置にドラッグします。
    • 10回繰り返すブロックの上にくっつけます。

f:id:yokoyantech:20180716155359p:plain

  • Hello!の部分をクリックして、ネコにしゃべらせたいセリフを入力します。

f:id:yokoyantech:20180716155540p:plain

  • 配置したブロックをクリックします。
    • 左側のネコが、セリフを喋ってからダンスを繰り返せば成功です。

f:id:yokoyantech:20180716155752p:plain

チュートリアルの実施(スタートさせる方法を追加する)

これまでネコを動かすためには、積み上げたブロックをクリックしてきました。積み上げたブロックをクリックするのではなく、緑色の旗をクリックしたらネコが動くように改良します。

  • スクリプトタブから、イベントを選択します。

f:id:yokoyantech:20180716161544p:plain

  • 緑色の旗がクリックされたときブロックを、先頭にドラッグします。

f:id:yokoyantech:20180716161643p:plain

  • 画面左側の上部にある緑色の旗をクリックします。
    • ネコがセリフを喋り、ダンスが始まれば成功です。
    • ネコの動きを途中で止めるには、赤い丸ボタンをクリックします。

f:id:yokoyantech:20180716161822p:plain

作ったプログラムを保存する

ここまで作ったプログラムを保存します。

  • 画面左上にあるプロジェクト名を入力します。

f:id:yokoyantech:20180716162036p:plain

  • メニューから、ファイルをクリックします。
    • 直ちに保存をクリックします。

f:id:yokoyantech:20180716162237p:plain

  • 保存したプロジェクトは、画面右上のアカウント名をクリックして表示される、私の作品からいつでも表示できます。

f:id:yokoyantech:20180716162449p:plain

  • 中を見るをクリックすることで、いつでもプロジェクトの中身を修正することができます。

f:id:yokoyantech:20180716162350p:plain

おわりに

この記事では、Scratchのアカウント作成から、チュートリアルの実施、プロジェクトの保存までの一連の流れについて実施しました。 Scratchを実際に触ってみて、プログラミングの最初の一歩には最適だと感じました。 スクリプトタブから好きなブロックを配置して、ネコに動きをつけていく、ということがイメージいただければ幸いです。

DecaDojo(でかドージョー)in Tokyoにメンター参加します #CoderDojo

f:id:yokoyantech:20180715220128p:plain

はじめに

2018年7月22日(日) に開催される「DecaDojo(でかドージョー)」in 東京にメンターとして参加させていただくことになりました。

DecaDojyoとは?

CoderDojo(コーダー道場) は7〜17歳の子どもを対象にしたプログラミング道場で、ボランティアで運営されています。 今回は近隣の道場が合同でDecaDojo(でかドージョー)を開催します。プログラミングを楽しむお祭りとのことです。 私はさいたま道場枠で参加させていただきます。

詳細は以下、公式ページをご覧ください。

でかドージョーin東京

日程

  • 2018年7月22日(日) 13:00 〜 17:30 (二部制)
  • 東京日本橋タワー27階

会場はサイボウズさんです。

なぜ参加しようと思ったのか?

さいたま道場に参加しようと思った時にも書きましたが、アラフォーと言われる年齢になり、エンジニアとして地域貢献できるのではと思ったからです。 今回は自分もScratchを書いてみて、参加するニンジャと一緒に考えられるようになれればと思います。ニンジャと一緒に考えることで、自分もプログラムを書く楽しさ・喜びを学びたいと考えています。

また、今回はDecaDojyoということで、さいたま道場以外のメンターとも触れ合って、自分の視野を広げたいと思っています。

あわせて読みたい

CoderDojyoに参加しようと思った時に書いた記事です。

www.yokoyan.net

さいたま道場に初参加した時のレポートです。

www.yokoyan.net

【Python】Scrapyでログを出力する方法

f:id:yokoyantech:20180704172546p:plain

やりたいこと

Scrapyで実装した処理の任意の場所にログを追加したい。

環境

  • Scrapy1.5.0
  • Python3.6

実現方法

import loggingと、logging.log_level()を使用する。 以下、infoレベルのログ出力の実装例。

import logging
# 略
logging.info("hogehoge")

参考情報

Logging — Scrapy 1.5.0 documentation