LYNCSブログ

慶應義塾大学公認団体 宇宙科学総合研究会(LYNCS)のブログです。

下田合宿 2019 報告

はじめに

 12月14日〜15日にかけて、静岡県下田にて合宿を行いました。今回の合宿の主な目的は “ふたご座流星群” の観測です! しかもこのふたご座流星群の極大は15日(日)の午前2時ごろなので、丁度土日の合宿で極大を捉えることができました。なので後は、本当に天気が良いことを祈るばかりでした。まあ一つ重大な問題があったのですが……。それはまた後ほど。では、その合宿の模様についてこれから紹介していきたいと思います。

  • はじめに
  • 昼〜夕暮れ
  • 夜:観測1回目
  • 夜:観測2回目
  • 観測後+余談
  • おわりに
続きを読む

2020年版 C言語/C++ 入門者のための環境構築 (Windows編)

  • 初版:2018-03-11
  • 改訂:2019-12-07

対象となる読者

  • C言語/C++言語を始めたいが、環境が構築できていない
    • 大学の授業などでC言語を学習する必要がある人もこれに含みます
  • プログラミング自体経験がほとんどない
  • PCの基本操作は理解している

この記事を書いた理由

LYNCSでは、マイコンを用いたロボット等の制御にC++が使われることがあるため、プログラミング初心者でもC/C++から入る層が一定数居ます。 また、大学の一般教養科目として開講されるプログラミングの授業では、C言語を学ぶものもあります。 そういった状況を想定して、環境構築でつまづくことなく、言語の学習に集中できる一助となる記事を書きたいと思った次第です。

まず、本当にC/C++から入門して大丈夫?

あくまで筆者個人の考えですが、初心者が最初に学ぶ言語として安易にC/C++を選ぶのは良くありません。もちろん、理由や信念があってC/C++を学ぶのであれば全く問題はありません。

ここに辿り着いた方のうち、C/C++を学ぶ動機・理由が明確な方は次のセクションまですっ飛ばして環境構築を始めてください。逆に、プログラミングというものが何かはよく分からないけど触ってみたい方や、ゲームやスマホのアプリなど何か作りたいものがあるという方はこれからの文章を読むことをおすすめします。

C言語はOSの開発やプログラミング言語自体の開発などには欠かせない存在で、とても重要な言語であることは事実です。 しかし、ゲームやスマホアプリ、Webアプリ、人工知能(AI)などを開発したい場合には不向きな言語です。世の中には、それらに最適な言語が数多く存在しています。 そういった言語などがあるのにあえてC言語を使うのは、新幹線があることを知りながら自転車で東京-京都間を往復するようなものです。

さらに、作りたいものが作りづらいだけでなく、C/C++にはとても難解な概念が登場します。つまり「初心者殺し」でありながら、言語を習得したところで初心者にも作りやすいアプリを作れないという、プログラミング学習の挫折につながりやすい言語なので、特に理由がない限りはCを「最初に学ぶプログラミング言語」として選ぶことはおすすめしません。漠然とC/C++を最初の言語として選ぶと、殆どの人はプログラミングに対する苦手意識を持ってしまうだけだと思います。逆に、何かしらの言語を学んだあとにC/C++を学ぶと、あらゆるプログラミング言語に共通する一般的な事柄はスキップしてC/C++固有の難しい概念だけに集中できるので、スムーズに学習出来るようになると思います。 (そういう理由もあってか、近年はプログラミング学習スクールなどでも初心者向け講座としてはRubyJavaScriptPythonといった言語が選定されることが多いようです。)

また、よく言われる話として「C言語は様々な言語に影響を与えた存在だから、C言語をやっていれば応用が効く」「あらゆる言語はCで開発されているので、Cを理解すれば言語も深く理解できる」というものがあります。
これを外国語の学習に例えると「ラテン語ギリシャ語はヨーロッパのさまざまな言語に影響を与えているので、外国語を学びたければラテン語ギリシャ語から始めると深く理解できる」といった感じになると思います。確かにそれは事実かもしれませんが、メリットに比べてあまりにもデメリット(難易度や挫折のリスク)の方が大きすぎます。

英語圏で活躍したければ英語を、フランスに行きたければフランス語をまずは学べばいいのです。ラテン語ギリシャ語など、それらに影響を与えた言語を学んで文法や単語を詳しく理解するのは後回しでもいいはずです。 プログラミングでもそれは同じで、Webアプリを作りたければWeb向けの言語を、スマホアプリを開発したければスマホアプリ向けの言語を最初に学ぶのが一番なのではないでしょうか。それらを習得した後に、C/C++を学んでも遅くはありません。 (やりたいことに直結している方がモチベーションも続きますからね)

大学での初心者に対するプログラミング講義ではC言語を使うべきでない」といった記事でも解説されていますのでこちらも紹介しておきます。

C/C++が向いていないなら何の言語を選べばいいの?

やりたいことを最初に掲げて、それから言語を選んでいいと思います。

  • ゲーム開発/AR/VR - Unity (C#)
    • UnityはPCだけでなくスマホAndroid/iOS)でも動作するため、移植の度にハードに合わせてプログラムを書き直さないで済むのが強みです。最近は家庭用ゲーム機向けの開発にも利用されることがあるほか、VRなどでもよく利用されています。
  • スマホアプリ開発 - Java/Kotlin (Android)、Swift (iOS)
    • iOSアプリの開発にはMacが必要なのでご注意ください。
  • Webアプリ開発 - RubyJavaScript
  • 機械学習/深層学習/人工知能 - Python
    • 最近流行りのAIなどを触りたいならPython一択です。ライブラリはPython向けのものが圧倒的多数ですし、Jupyter Notebookを始め研究向きの環境も整っています。
  • 統計学 - R
    • 統計処理に最適化された言語です。統計を扱うならまずはRから始めて、より詳細な分析・処理を行うならPythonの学習に進んでもいいかもしれません。
  • 特にやりたいことがない - JavaScript
    • 言語としてめちゃくちゃ優れているというわけではなく、プログラマからは時々批判されることもある言語ではあります。しかし、Webページ、Webアプリ、ブラウザ拡張機能、簡易的なスマホアプリ、PC向けアプリ、IoT機器……などと、あらゆる場面で使用できる言語なので、やっておいて損はないと思います。言語自体も難解ではないため「積極的にエンジニアになりたいわけではないが、スキルとしてプログラミングを身に着けたい」という層にもマッチすると思います。
    • JavaScriptは歴史あるプログラミング言語なのですが、最近になって仕様が大きく変わっている言語なので、1990年代~2000年代に書かれたような古い参考書は基本的に役に立ちません。出来る限り新しい本やWebサイトで学ぶことをおすすめします。

逆にどういう人はC/C++から始めるといいの?

  • 機械工学を学ぶ人
    • ロボットなど各種機械の制御として利用される言語は今でもC/C++が中心です。
  • 競技プログラミングをしたい人
    • 多くの競技プログラミングにおいて言語の選定は自由ですが、実行速度の面で有利なC/C++が事実上の標準となっています。
  • プログラミング言語やOSを作りたい人
  • コンピュータの動作を詳しく理解・把握しながらプログラムを書きたい人
    • C/C++では、他の言語ではあまり意識しなくても済むような、メモリやCPUといったコンピュータの内部にある要素をほぼ常に意識してコードを書いていく必要があります。先ほど「C/C++を初心者には勧めない」と書いた理由の1つでもありますが、このあたりの動作に関心がある人にとってはむしろメリットになるかもしれません。
  • 大学の授業がC/C++の人
    • これはもうどうしようもないので頑張っていきましょう。

1. コンパイラのインストール

コンパイラとは、人間の書いたソースコードからコンピュータが実行可能なデータを生成するためのものです。

Windows向けならマイクロソフト製のVisual Studio(VS)を利用するという手もありますし、実際そのように解説しているサイトもあります。 しかし、VSは大規模な開発向けのソフトなので、入門レベルでは使わないような機能が多いため画面が難解で、さらには動作が重いなどプログラミング学習にはデメリットが目立つのでオススメしません。 料理に例えるなら、お茶漬けや卵かけご飯を作るために高級ホテルの本格的な厨房を使うようなものです。

ここではMinGW(ミン・ジー・ダブリュー)というソフトウェアを使って、gccというコンパイラをインストールしましょう。

(経験者の方向けへの注釈:筆者自身はWSLを用いているのですが、この記事ではWSLを推奨していません。というのも、2019年現在でWindowsを想定したプログラミング初心者向けに行われるC/C++の解説ではcmd.exe/PowerShellに依存しているものが多いからです。また、Linuxディレクトリ構造などに関する学習も必要になるため、少なくとも現時点では「入門者のため」としてWSLを採用するのはデメリットが大きいと筆者は考えております。)

まず、http://www.mingw.org にアクセスし、右上の「Downloads」をクリックします。 f:id:lyncs:20191221164639p:plain

MinGW - Minimalist GNU for Windows と書かれたページに遷移するはずです。
そのまま下にスクロールし、MinGW Installation Manager (mingw-get) というリンクをクリックしてください。 f:id:lyncs:20191221164132p:plain

MinGW-Get Version 0.x.x と書かれたリンクをクリックしてください。x.xのところには何らかの数字が入っています。 f:id:lyncs:20191221164111p:plain

mingw-get-setup.exe と書かれたリンクをクリックしてください。 f:id:lyncs:20191221164114p:plain

しばらくするとダウンロードが自動的に始まります。もしダウンロードが始まらない場合、mingw-get-setup.exeと書かれたリンクをクリックしてください。 f:id:lyncs:20191221164115p:plain

ダウンロードしたインストーラを実行すると以下のような表示になります。 「Install」をクリックしてください。 f:id:lyncs:20180310042921p:plain

特に変更せず、「Continue」をクリックしてください。 (なお、Cドライブの空き容量が少ないなどでインストール先を変更した場合はその後のパスを適宜読み替えてください) f:id:lyncs:20180310043031p:plain

必要なファイルのダウンロードが始まります。しばらくお待ちください。 f:id:lyncs:20180310043144p:plain

ダウンロードが完了すると「Continue」をクリックできるようになりますので、クリックしてください。 f:id:lyncs:20180310043407p:plain

スタートメニューやデスクトップに「MinGW Installation Manager」というショートカットが作成されるはずなので、これを起動しましょう。

MinGW Installation Managerが起動したら「mingw32-base」という項目をクリックし、現れるメニューの中から「Mark for Installation」をクリックしてください。 f:id:lyncs:20180310043908p:plain

「mingw32-gcc-g++」という項目にも同じ操作を行ってください。以下のような画面になるはずです。 f:id:lyncs:20180310044018p:plain

「Installation」メニューから「Apply Changes」をクリックしてください。 f:id:lyncs:20180310044100p:plain

「Apply」をクリックしてください。 f:id:lyncs:20180310044157p:plain

必要なファイルがダウンロードされます。そのままお待ちください。 f:id:lyncs:20180310044218p:plain

完了したら「Close」をクリックしてください。 f:id:lyncs:20180310044252p:plain

このような画面になれば、MinGW Installation Managerを閉じて構いません。 f:id:lyncs:20180310044322p:plain

2. パスを通す

インストールしたgccを開発環境から利用できるようにします。以下はWindows 10の場合です。

スタートメニューを右クリックし、コントロールパネルを開きます。 f:id:lyncs:20180310044545p:plain

検索欄に「環境変数」と入力すると現れる「環境変数を編集」をクリックします。 f:id:lyncs:20180310044611p:plain

上の欄で「Path」を選択し、「編集」をクリックします。 f:id:lyncs:20180310044625p:plain

「新規」をクリックします。 f:id:lyncs:20180310044804p:plain

「C:\MinGW\bin」と入力し、追加します。 以下のような画面になれば完了です。 f:id:lyncs:20180310044825p:plain

3. 拡張子の表示

プログラミングをする上で拡張子を表示していないと何かと困ることがあるので、Windowsの設定を変えて表示しておきます。

適当なフォルダを開いて上部の「表示」をクリックし、「拡張子の表示」にチェックを入れます。 f:id:lyncs:20180310045028p:plain

4. エディタのインストール

書籍やサイトによっては「メモ帳」でも出来ると書かれていることがありますが、きちんとしたプログラミング向けのエディタを使うことでより学習しやすくなります。 ここでは、2019年現在でよく使われている「Visual Studio Code」(VS Code)を利用しましょう。(「Visual Studio」と名前が似ていますが、「Code」の方は複雑な機能を外してソースコードの編集に特化した軽量・シンプルなソフトです。)

プログラミング用のエディタとしては2000年代までは「TeraPad」や「サクラエディタ」などが挙げられることもありました。2019年現在では残念ながらそれらは時代遅れなソフトウェアとなっていますので、VS Codeの使用を強くおすすめします。

https://code.visualstudio.com にアクセスし、「Download for Windows」をクリックします。 インストーラがダウンロードされるはずです。 f:id:lyncs:20191207154150p:plain

インストーラを実行したら、「次へ」をクリックします。 このあたりはインストーラの指示に従って進めてください。 f:id:lyncs:20191207132438p:plain f:id:lyncs:20191207132440p:plain f:id:lyncs:20191207132441p:plain

ここでは、全てにチェックを入れてください。 f:id:lyncs:20191207132509p:plain

インストールを進めてください。 f:id:lyncs:20191207132527p:plain f:id:lyncs:20191207132538p:plain

インストールが完了すると「Getting Started」といったWebページが開くことがありますが、読む必要がなければそのまま閉じてください。

VS Codeが開くと、右下に英語でメッセージが出ますが、閉じて構いません。 f:id:lyncs:20191207132611p:plain

また、初期状態では英語になっているため、英語に不慣れな方は日本語化パックをインストールしましょう。 左側の Extensions ボタンをクリックしてください。 f:id:lyncs:20191207132753p:plain

検索ボックスが現れるので Japanese と入力して、日本語化パック(Japanese Language Pack)をインストールしてください。おそらく一番上に表示されているはずです。 f:id:lyncs:20191207132801p:plain

インストールできたら右下に再起動を要求するメッセージが出るので、「Restart now」をクリックしてVS Codeを再起動しましょう。 f:id:lyncs:20191207132837p:plain

5. コードを書いて実行していく

一般的な参考書では、エディタでコードを書いてコマンドプロンプトなどから実行するように指示されていると思います。 VS Codeコマンドプロンプトをウィンドウ内に呼び出すことができるので、より効率的な学習ができると思います。

Ctrl + @ を入力してください。すると、統合ターミナルが開くはずです。(もう一度 Ctrl + @ を押すと閉じます) f:id:lyncs:20180311021702p:plain

また、プログラミングにおいては「フォルダ」(ディレクトリ)を1つの単位としてプロジェクトを進めていくことが多いです。とりあえず全部マイドキュメントに保存、といったことは行いません。
ですので、とりあえず何らかの作業用フォルダを作成しておきましょう。(日本語文字列が含まれないファイルパスが望ましいので、Cドライブ直下などに programming のようなフォルダを作ると無難だと思います。)
学習が進んでいったら、この作業用フォルダ内にサブフォルダを作成して細分化していっても良いと思います。

また、VS Codeもプログラミングしやすくするため、「フォルダごと」開くことが出来ます。 左側の「エクスプローラー」ボタンをクリックして「フォルダーを開く」をクリックするか、ファイル→フォルダーを開く をクリックしてください。 f:id:lyncs:20191207132709p:plain

フォルダを作成したら新規ファイルを作成しましょう。 「ファイル」→「新規ファイル」で新しいタブが開くはずです。(「ようこそ」タブは閉じてOKです)
Hello Worldでも書いてみましょう。 f:id:lyncs:20180311023521p:plain

ファイルを保存しましょう。hello.c あたりで、拡張子 .c を付けるのをお忘れなく。 f:id:lyncs:20180311023618p:plain

拡張子を付けたファイルは言語に応じて色付け(シンタックスハイライト)してくれます。プログラミング向けエディタの強みの1つです。 f:id:lyncs:20180311023641p:plain

Ctrl + @ を押して統合ターミナルを開くと、既に現在開いているフォルダに移動した状態のPowerShellがウィンドウ内で開いてくれます。 コンパイルするコマンド gcc hello.c を入力して Enter を押してください。 f:id:lyncs:20180311023916p:plain

コンパイルが完了すると同じフォルダに実行ファイルが出力されます。
今回はコンパイル時に出力ファイル名を指定しなかったので a.exe という名前になっているはずです。 f:id:lyncs:20180311024013p:plain

これを実行してみましょう。統合ターミナルに .\a.exe と入力してください。(a.exe の前に .\ ドットとバックスラッシュを入力することをお忘れなく。バックスラッシュはWindows環境では円マークと同じ文字列です。)
無事実行できれば以下のような表示になるはずです。 f:id:lyncs:20180311024130p:plain

環境構築とHello Worldの実行手順を把握するところでこの記事は終わりです。
ここから先はお手持ちの参考書や授業をベースにして進めていってください。それでは良き開発ライフを!

LYNCS とは?

慶應義塾大学文化団体連盟所属団体 宇宙科学総合研究会 LYNCS (Laboratory of sYNnthetic Cosmic Science, リンクス)はその名前の通り、宇宙について様々な面から研究、アプローチをするサークルです。
工学分野では電子工作やプログラミングを扱い、模擬人工衛星CanSat」の開発やドローンの開発などを行っています。プログラミング・電子工作の初心者でも興味がある方なら大歓迎です!先輩がサポートしていきます! (実際、プログラミング未経験だった1年生が、その年の終わりにはRaspberry Piなどを利用して自律走行ロボットやドローンを自作できるようになりました。)
慶應義塾大学に進学される方、在学中の方でご興味をお持ちの方は、公式Twitterメールなどでお気軽にお問い合わせください!

死んでも技術書典では T シャツを売ってはいけないという話(技術書典 7 報告)

はじめに

技術書典で T シャツを売ってはならない。

もちろん「絶対にそうしなければならない」というわけではない。どんな物事にも例外や特異点は存在する。ただ少なくとも、今後うちの団体が T シャツに手を出すことは無いだろう。いや、そのような事態を許すわけにはいかない。

以下の文章は、前回に引き続き弊団体の技術書典 7 参加での責任者となった min による、技術書典参加サークル各位及び弊団体後輩への忠告であり、個人的な深い自省であり、高度なダイレクトマーケティングである。

  • はじめに
  • 結論
  • 嵐の前
  • 「それなら」
  • 「お前は直感を信じない方が良い」
  • 発注数について
  • 準備
  • 爆散
  • おわりに
続きを読む

技術書典に初参加してみて(技術書典 6 )

はじめに

弊団体は、2019 年 4 月 14 日に行われた技術書典 6 に参加し、部誌の頒布を行った。技術書典への参加は、今回が初の試みとなった。そんなわけで、せっかくだから初参加の模様を記録しておこうと、ここに感想文的なブログ記事を執筆するに至ったわけである。大学の課題から目を逸らしつつ書き上げた文章なので、読みにくい部分が多々あるかもしれないが、「忙しい時に書いたんだな」ってことで許してもらいたい。

ちなみに、事務的な処理の HowTo とか、「同じ初参加の人へアドバイス!」的な内容は(なくはないけど)少ない。まあ、「反省」のところには、ちょっとそういう内容も入っているので、その辺が気になる方はそこだけ読んでいただければいいと思う。基本的には、「こいつには技術書典がこんな風に見えてたのか」「裏でこんな苦労があったのか」ぐらいな気持ちで見て頂きたい。

執筆は今回の技術書典参加にて編集長的な立場だった min が担当する。

  • はじめに
  • きっかけ
  • 申請とか原稿とか
  • 当日
  • 反省
    • 複数テーマの合作は微妙
    • 見本誌が不足した
    • 集まった会員が多い
    • 締め切りを守ろう
  • おわりに
続きを読む

【慶應理工学部新入生向け】時間割組みで後悔しないための、般教の取り方 11 箇条

はじめに

この記事においては、一般教養科目(以下、「般教」と表記)の取り方のアドバイスみたいなものを紹介します。事務的な申請方法ではなく、どのように時間割を組めば良いかを紹介する記事になっています。慶應義塾大学に入学する新 1 年生に向けた記事です。

基本的には理工学部に入る方に向けた記事になっていますが、全学部共通の内容も多いので、他学部の方も参考にしていただければと思います。

  • はじめに
  • その 1:興味のある内容を取る
  • その 2:試験かレポートか
  • その 3:1 限は空けた方がいい
  • その 4:2 限か 3 限は空けた方がいい
  • その 5:楽単狙いもほどほどに
  • その 6:1 限から 5 限まで全部入れないように
  • その 7:語学の前は空けたい
  • その 8:通年の講義は通年で
  • その 9:「潜る」のも 1 つの手
  • その 10:遠慮せずに申請してみよう
  • その 11:教職狙いは「体育」と「法学(憲法を含む)」を忘れずに!
  • おわりに
  • 余談:バイトしたい時、土曜日の講義を受けるか迷った時
続きを読む

2019 年初島春観測合宿報告

我らが宇宙科学総合研究会 LYNCS の天文研究本部は、先日初島にて観測合宿を行った。苦労に苦労を重ねた地獄の観測合宿(?)の様子を、現天文研究本部副代表である min より*1、ここで簡単に紹介しようと思う。

  • 1 日目
  • 2 日目
  • 3 日目
  • まとめ

*1:合宿決行当時

続きを読む

【学部・学科別】慶應 LYNCS 会員おすすめのパソコンはこれ! 新入生のためのノートパソコンの選び方

はじめに

宇宙科学総合研究会(LYNCS)は、様々な分野から宇宙にチャレンジする慶應義塾大学の団体です。 CanSat と呼ばれる人工衛星を模した小型自律ロボットの開発、三田祭でのプラタリウム上映、数学・物理学の勉強会など、様々な活動を行っています。 メンバーは理工学部が多いものの、 SFC商学部など多様な学生が在籍しているのも特徴です。

大学の学習はもちろん、LYNCS の日々の活動においても、パソコンは道具として非常に重要です。 そこで本記事では、春から大学生になる皆さんへ向け、様々な学部・学科のメンバーによるおすすめノートパソコンをご紹介します。

f:id:lyncs:20190307023319j:plain:w500
CanSat 大会の現場でもパソコンは欠かせません

  • はじめに
  • この記事の対象と構成
  • 第 1 部:ノートパソコン選びの基本
    • そもそもパソコンは必要なの?
    • ノートパソコンは持ち運びする機会が多い
    • Windows を選ぶ? Mac を選ぶ?
    • スペック(性能)はどこに注意する?
      • メモリ
      • ストレージ(記録領域、SSD・HDD など)
      • CPU
      • 意外と落とし穴!? ノートパソコンの端子
    • 慶應生なら無料で使えるソフト・サービスを知っておこう
    • 周辺機器について
      • USB メモリ
      • 外部ディスクドライブ
      • マウス
  • 第 2 部:学部・学科別パソコン選びのアドバイス
  • 第 3 部:LYNCS おすすめパソコン
  • おわりに

この記事の対象と構成

本記事は、大学に入学するにあたり、パソコン選びに悩んでいる方向けの記事です。

第 1 部:ノートパソコン選びの基本では、パソコン選びにあたって基本となる考え方を解説します。 「そもそもパソコン選びの基準が分からない……」「生協おすすめのパソコンをそのまま買うのは気が進まない……」という方はぜひご覧ください。 これまでもパソコンに触れてきて、買い換えや 2 台目を検討中という方は、第 2 部まで読み飛ばしていただいても結構です。

第 2 部:学部・学科別パソコン選びのアドバイスでは、LYNCS 会員の経験を元に各学部・学科での生活に必要な要素を解説します。 学部・学科は慶應義塾大学を基準としていますが、他の大学に進学される方でも参考になる点はあるはずです。ぜひご一読ください。

第 3 部:LYNCS おすすめパソコンでは、LYNCS 会員一押しの機種を具体的にご紹介します。

続きを読む