Author: fastriver_org

プログラミング初学者はこれを見ろ!

傲慢なタイトルでごめんなさい。

質問が来た

お花見の季節が来たのに外出を自粛させられたりなんか極寒の中雪が降ったりしていた時、質問箱に

Annotation 2020-04-01 215508

というのが届いたわけです。140字で答えるには敵が多すぎるのでここに回答したいと思います。

偉大な先人たちの記事

全くの初心者からの機械学習ロードマップ

音楽班紹介Ⅴ ~DTMと制作環境~

自己紹介

こんにちは、箇条書き好きのFastriverです。春から電気情報工学科2年になりました。新歓で特設ページを作った人です。

どうでもいいので本題に行きましょう。

対象

  • これからプログラミングを学びたい人
  • 1,2個プログラミング言語を習得して次を考えている人

つよつよはお呼びでない

何を最初に学ぶべきか?

プログラミング言語は数多あり、それぞれに特徴があります。まして初学者にはそこから自分にあったものを選ぶのは難しいでしょう。そのため私の(基本的にあてにならないと言われている)経験から選定基準をあげていこうと思います。

1. なにをしたいか

個人的にはこれが一番重要だと思ってます。目的意識があるだけでもプログラミングの継続率は十分高くなります。特になにをしようとでもなく「流行っているから」「プログラミング言語を学びたい」みたいな感じで学習に入る人は多いですが、基本で挫折するか、基本を終えてもその後何していいのか分からずやめてしまう、というケースが散見されます[独自研究?]。意識があるのは素晴らしいですが、せっかく勉強するのだから私としては楽しさを分かってもらいたいです。

Webサイト、人工知能、アプリ、ゲーム、音楽…自分の興味の方向でなにか作品を作るために勉強する、としたほうが楽しいし、やることが明確になるので進む方向を決めやすくなります。プログラミングは「道具」であり「手段」であることを忘れてはいけません。

2. 情報は豊富か、周りに経験者はいるか

メジャーな言語の良いところは情報が豊富なところです。偉大な先人たちがその疑問に対する答えを用意してくれています。ググり方については

習うよりググれ

を参照してください。

本文では色々言ってますが、周りに経験者がいるのといないのでは問題解決速度が桁違いです。(私は周りに誰もいなかったのでTwitterで人を捕まえて質問してました…)

こういった人材、経験者や仲間と出会えるのはKCSに入ることの大きな強みだと思っています。とりあえず入って損はないですよ!

あと、情報は豊富であればあるほどいいというわけではなく、初心者が入門することの多い言語などは質の低い記事による検索汚染がなされていることもあります(最近GASで似たような状況になった)。逆にマイナーな言語でも熱心なユーザーが数人いて記事をたくさん書いてくれていると情報が多く流れているということもあります。まあこの辺は初心者にはどうしようもないので気にしなくてもよいです。

3. 学習コスト

当然プログラミング言語によって習得するまでのコストは大きく違います。比較的容易なPythonから、「完全に理解した」が常に偽となるC++まで、色々言われていますが、重要なのは

  • その言語の基本文法を書けるようになるコスト
  • それを使って成果物を作るコスト

の2つです。これらのバランスで最低限の学習コストが算出されます。基本文法が簡単でもそこから成果物を作るのに多大なコストがかかるのであれば中々作品が仕上がりません。また多少難しい言語でも、それに付随するフレームワークが優秀であれば、もはや言語の理解が及んでいなくても作品制作まで進むことができます。そのため目的が決まっているのであれば、フレームワークから選ぶのも十分アリだと思います。

4. 環境構築

なんとプログラミングというのはパソコンを用意すればすぐにできるわけではなく、プログラミング言語ごとにコーディング環境、実行環境を用意せねばならないのです。C++ならコンパイラ、PHPなら仮想サーバーなどです。

Mac、Linuxを使っている人はそこまで困らないかもしれません。ただWindowsは環境構築で躓く確率が非常に高くなっています(Qiitaとかで初手 brew installしてるやつ!!! 許さんからな!!!!!)。環境は人によって異なるので、ここは経験者と一緒にやるのがよいでしょう。

環境構築を楽にする方法:

  1. Linuxを使う -> 真理(WindowsならWSLというものがあるぞ!)
  2. VisualStudio等の神IDE(統合開発環境)を使う -> 容量がすごいが楽。私はVS温室で育ちました
  3. オンラインでやる -> 簡単なものを動かすならこれが楽。

IDEとか大きいものをパソコンに入れていくと環境汚染が進みがち(いつの間にかPythonが4つくらい入ってたりする)なので最初はオンラインのサイトを使うのがいいと思います(Google Colaboratoryとか)。

考慮しなくていいこと

将来の役に立つかどうか

就職などを見据えて始める人も多いと思いますが、遠い未来を見すぎると挫折の原因になります。プログラミング言語は多種多様といえど基本は同じなので1つ習得してしまえば他の言語もすぐに習得することができます。現時点でやれそう/やりたい言語を勉強したほうが効果的です。

学ぶために必要なもの

  • パソコン(できるだけスペックの高いやつ)
  • やる気

以上!

どうやって勉強すればいいのか

さて、どのプログラミング言語を勉強するか決めたところで、どうやって学べばよいのでしょうか。

基本は書籍です。入門書はその言語の大事なところを体系的にまとめてくれているので、しっかり読めば応用が効くようになります。でも高い?図書館とかにもたくさん置いてあるので借りるといいぞ! 読みたい本が無い? KCSには技術書が多くあるし読みたい本があれば部費から買うこともできるぞ!

注意点としては、言語というのは日進月歩なので古い本は往々にして役に立たないということです。なるべく最新のを選びましょう。

プログラミング学習サイト

最近(最近でもないか?)、Progateなどオンラインで特定の言語について学習できるサイトが増えてきています。基本文法をわかりやすく、マイペースに学べるのでとてもいいと思います(私は使ったことがないので詳しくは分からないです)。ただ実際に自分で作りたいものを書かないと中々覚えられないと思うので、一通り回ったら他で実践してみましょう。

公式リファレンス

稀に公式が超有能な場合があります。その時はブログなど漁るより圧倒的に質の良い情報が手に入るので、優先的に見ましょう。ただし基本英語です。

【独断】適当な言語紹介

迷える子羊のために、私の独断で言語の紹介をしていきたいと思います。アルファベット順に並べています。情報が変だったら突っ込んでください。でも僕の悪口は言わないでください。

BASIC

読み方: べーしっく

学習コスト: 低

用途: Excel VBAとか?

あまり書いている人は見かけないが、古くからある偉大な言語。Excelの自動化とかに書ける。Visual BasicにはMicrosoftの後ろ盾があるのでライブラリが豊富。

C言語

読み方: しー

学習コスト: 中

用途: OS制作

これも古くからの言語。実行速度が速いぶん人間にとっては少し扱いづらい。殆どはこれの拡張言語であるC++を使うのかな?私はC言語から入門したが、ポインタで挫折した。入門にはあまりおすすめしない。

C++

読み方: しーぷらすぷらす, しーぷらぷら

学習コスト: 高

用途: OS制作, 競技プログラミング, グラフィック, ゲーム, マイコン, ロボットプログラミング等

C言語の進化系。使える機能が増えている。実行速度が速いので競技プログラミングや、ロボットプログラミングに用いられる。ロ技研で主に教えているのはこれだぞ!スマホアプリなんかも作れるが、道のりは険しい。

C#

読み方: しーしゃーぷ

学習コスト: 中

用途: Windowsのソフト, ゲーム(Unity), スマホアプリ(Xamarin), Web等

巨人Microsoftの主力言語。C++に名前が似ているが、中身はJavaに近い。Rxなどモダンな言語に大きく影響力を与えた機能も多い。.NET Frameworkの一員なので、すごく色々なところで使える。Unityでゲームを作るなら避けては通れない。VisualStudio IDEの恩恵を受けられるので環境構築などはとても楽。

Dart

読み方: だーと

学習コスト: 低

用途: Web(Angular), スマホアプリ(Flutter)等

ここはメジャーな言語を紹介する場では?と言われるほどマイナーな言語だが、周りのフレームワークが有能なので紹介。JavaScriptに近い言語だが、より書きやすくなっている。Googleの推進するFlutterを書くために必要な言語。書きやすくて作品もすぐに作れておすすめ!(宣伝)

HTML/CSS

読み方: えいちてぃーえむえる/しーえすえす

学習コスト: 低

用途: Webサイトのデザイン

Webサイトを作るときに必須の言語。小中高で学んだことのある人は多いと思う。ただ実際のHTML5/CSS3は書き方がほとんど違うのでご注意。厳密にはマークアップ言語と言い、プログラミング言語でないとされる。私は書けません…

HTML(Hyper Text Markup Language)はタグで画面を構築していくやつ

CSS(Cascading Style Sheets)は色とかの見た目を整えるやつです

Java

読み方: じゃば, じゃゔぁ

学習コスト: 中

用途: PCソフト, サーバー, Androidアプリ, ゲーム等

30億のデバイスで走るJava。様々なデバイスで動く。それなりの古参言語だが新しいバージョンでは機能も豊富でモダンな言語にも負けない。Androidアプリ開発にもAndroid Javaが用いられるが、別物と考えたほうがいい(古いし書き方が独特)。学習コストも高くなく他の言語との類似性も高いので、結構おすすめ。

JavaScript

読み方: じゃばすくりぷと

学習コスト: 低

用途: Webサイト, サーバー, GAS等

Javaと名前は似ているが、中身はメロンとメロンソーダくらい違う。Webをやろうとすると逃げられない。基本文法は簡単なので軽く学習するのはおすすめ。ただしそれ以上踏み込むのは非常に危険。これは中間言語である。

※中間言語 … 人間の書くプログラミング言語から機械語に翻訳するときに一度経由する言語。人間には読みづらい。

というのもJavaScriptを書きたくない先人たちは、そのために新しい言語を作ってそれをJavaScriptに翻訳するという荒業に出た。DartやTypeScript、CoffeeScriptなどがそうである。実用にはこれらを使うことをおすすめする。

Kotlin

読み方: ことりん♪

学習コスト: 中

用途: Androidアプリ, サーバー等

Android Javaを書きたくない人のための言語。世界最高峰[要出典]のIDEことIntellij IDEAの全面サポートがあり嬉しい。モダンな言語ともあり色々なテクニックが使える。これからアプリをやりたい人には非常におすすめ。Javaをやったことがある人はすぐ使えるようになると思う。私はインターン先で使ってます。

PHP

読み方: ぴーえいちぴー

学習コスト: 低

用途: Web

よくわからないと思うが「PHP: Hypertext Preprocessor」の略。サーバーサイドで動く言語で、HTMLを動的に生成することで動きのあるWebサイトを作れる。環境構築が多少面倒。去年(2019)のWeb班ではこれを中心に講習をやりました。

Python

読み方: ぱいそん, ぴーとん

学習コスト: 低

用途: 機械学習, Web, 競技プログラミング等

機械学習といえばPython。学習コストが低くanacondaやGoogle Colaboratoryなど優秀な環境も多くライブラリも豊富なので大人気。基本は速くないがライブラリがC++でチューニングされているため全体として実行速度は優秀。機械学習だけでなくWebやソフトウェアにも使えるので便利。ただ中・大規模開発には向かない(読みにくくなるので)。AI班では必然として学びます。

Ruby

読み方: るびー

学習コスト: 低

用途: Web(Ruby on Rails)とか?

日本産の言語。初心者には結構人気らしい(あまり良く知らない)。Railsは学習コスト高めなので注意[要出典]。書き方が結構独特で読めないっす…

Swift

読み方: すうぃふと

学習コスト: 中

用途: iOSアプリ, Macアプリ

林檎さんの言語。iOSアプリ開発するならこれでやったほうがいい。書きやすいと評判です(使ったこと無い)。ただし流石Apple、Windowsだと全然使えないです…

TypeScript

読み方: たいぷすくりぷと

学習コスト: 低

用途: JavaScriptの顔出すところ

MicrosoftによるAltJS。AltJSとはJavaScriptに翻訳できるためJavaScriptを書かなくて済む言語である。情報も豊富なのでJavaScriptに嫌気が指したらとりあえず試してみると良い。

 

目にしそうな言語は一通りあげてみましたが、プログラミング言語は無数にあります。頑張ってお気に入りの言語を見つけてみてください。

さいごに

  • プログラミング言語はたしかに「手段」だが、目的にしたほうがたぶん楽しいので是非プログラミングを目的にプログラミングをしてほしい
  • プログラマは基本みんなやさしいのでリアルでもTwitterでも質問はガンガンやってOK(ググって分かることはググろうね!)
  • KCS入ろう

2020年新歓特設サイトを公開しました!

新歓ページを作りました

新歓オリエンテーションが中止になるという災禍に見舞われた中、KCSで新歓用の情報発信サイトを制作、公開しました。

https://kcs1959.github.io/2020new/

ソースコードはKCSのGitHubで公開しています。

仕様

Flutter Web

未だBetaですがこれで作りました。詳細はこちらを見てください

PWA対応

ホーム画面に追加することでネイティブアプリのように動作できます。キャッシュ活用で速度もあがります

注意事項

  • とても重いです。なるべくスペックの高いデバイスで閲覧ください。
  • 推奨環境はGoogle Chrome/Chromium 動作環境は加えてSafari, Firefoxです。IE/Edgeなどでは閲覧できないのでご注意ください。
  • PCのファンがうなりだしたりスマホが熱くなったりする可能性がありますが、気にしないでください。正常です。
  • 画面サイズの変更には弱いのであんまりやらないでください
  • 稀によく文字が消えますが心の中で補ってください
  • 画像が消えることがありますが仕様です

最後に

新歓ページが少しでも良いと思ったら@fastriver_orgを褒めてあげてください。とても喜びます。

良くないと思う箇所があったらこっそり教えて下さい。修正します。

気に入らなくても悪口をあまり言わないでください、悲しくなるので

Flutter Webはいいぞ

これはKCS AdventCalendar2019 16日目の記事です

15日目 | 17日目→

こんにちは、日吉代表に決まった直後から舐められているFastriver(@fastriver_org)です。5日目の記事もよろしくお願いします。

Flutter Webはいいぞ

表題のとおりです。いいです。とてもいいです。三田祭期間中ずっと感動していました。

まあまずはFlutterについておさらいしていきましょう。

Flutterとは?

fluter

FlutterGoogleが開発を主導しているオープンソースのクロスプラットフォームUIフレームワークです。

2015年に発表され、2018年12月にAndroid・iOS向けの1.0がリリースされました。

特徴

Dart lang

FlutterはDartを使用してアプリケーションを記述します。DartはGoogleが開発した言語で、元々はWebにおけるJavaScriptの代替として開発されていましたが、あまり広まらず(DartVMを載せられなかった)、TypeScriptと同様なAltJSとして落ち着きました。その後Googleの標準がTSになるなど消えそうな感じでしたが、Flutterが開始したことで息を吹き返し、現在は活発に開発が続いている言語です(2.7で拡張関数追加されたのがウレシイ)。TypeScriptよりもJava寄りな記法で書けます(主観)。

ネイティブコード

Xamarinと違ってVMを介さずネイティブコードにコンパイルするため、クロスプラットフォームにしては動作が速いです。サイズも普通になります。

Widget


Flutterは画面を構成するのに”Widget”を使います。ButtonやTextだけでなく、LayoutやPaddingなどもWidgetで、それらをツリーにして画面を作ります。この辺りはこのスライドが一番わかりやすかったので共有しておきましょう。またWidgetの便利たる所以は、元からモダンなデザインが用意されているということです。脳死UIでもそれっぽい感じにアプリができてしまいます(逆に言えば凝ったデザインはやりにくい?)(僕はMaterial Design信者なので問題ない)。

HotReload

アプリ開発者なら分かると思うのですが、「画面のボタンのデザインをちょっと弄りたい」「eventを差し替えたい」とかいったときにはアプリをリビルドするのに数十秒ほど待たねばなりません。UIの微妙な調節などでこんなことをやっていると非常に時間がかかってしまいます(そのためにUIはビルドしなくてもプレビューできることが多い)。しかしFlutterではHotReloadが使えます。コードを変更後リビルドしなくても、HotReloadの数秒(もっと短い?)で挙動を確認することができます。この開発体験は尋常じゃないですよ。

AndroidStudio

勿論Google謹製のサービスなのでJetBrains社の世界最強IDEを使って開発できます。素晴らしいね!(VSCodeで開発もありあり)

Flutter Web とは

Hummingbird

さて、ここまではモバイルのお話でした。しかし時は2018年12月(モバイル版の正式版と同じだね!)にWeb向けのFlutter、”Hummingbird”が発表されました。そして

・2019年5月: “Flutter for Web” テクニカルプレビュー開始(本体と名前空間は別)

・2019年9月: Flutter 1.9にて本体に統合(名前空間も同じに)

・2019年12月: Flutter 1.12にてベータ版に ←New!

はい、遂に先日Betaになりました。

特徴(Alphaの知識で語る)

 

静的ページ

ビルドするとHTMLとJSファイルが吐き出されます。Dartで書いたものをJSに変換してくれます。それだけなので(少なくともフロント側には)サーバーサイドが要りません。静的ページなので、コードを公開してもいいならGitHub Pagesで無料でURLがもらえます。開発中にローカルサーバーを立てる必要もないです。

コードの共通化

UIの部分含めほぼ全てコード共通化ができます。できないのはプラットフォーム固有の機能などくらいです。

サクサク

思った以上にサクサク動きます。アニメーションにもたつきを感じることはありません。また開発スピードも先のHotReloadが使える(割と死にやすいが)のでサックサクです。

超高速開発!!!

 

この記事を参照だ!!

この2つは三田祭期間中に開発しました(GitHubにコードもあるよ)。

動物将棋 https://doubutsu.fastriver.dev/#/

ルーレット https://roulette.fastriver.dev/#/

超便利な単語帳アプリの「クラタン」 も、数日でアプリ版からWebに移植しました。

https://clatan.fastriver.dev/#/

Web版が素早くできたおかげで 💩林檎💩に金(1万円/年)を貢ぐことなく [^1][^2]全ユーザにサービスを届けられるように[^3]なりました。感謝

現状問題点(Alphaの知識)

 

まだ正式版じゃないですが割と安定しています。しかし、未だかゆいところに手が届かない感じです。また僕はアプリの畑の人間なので他のWebとの差異はよくわかりません。

URL…

一応画面遷移時にURLをつけられるのですが、DeepLinkのように直接Linkにアクセスするなどは現状難しいです。なので普通のWebPageでなくSPAを作るのが適切だと考えたほうが良いと思います

パッケージ互換

モバイル版はもう1年近く正式版をやっているのでプラグインが割と豊富です。しかしWeb版には対応していないものも多く(公式含む)、プラグイン頼りのプロジェクトは移行に少し手間がかかりがちです。またWebでしか叩け無いライブラリ(dart:htmlとか)もあるのでややこしいです。

文字

未だに日本語の完全なサポートがされていません(本体もしてない)。デフォルトで漢字を使うと中華フォントになってしまい違和感がすごいので工夫する必要があります。またChromeだと調子いいことが多いのですが、Safariで開くと日本語含む諸々が崩れがちです。プラグインとか色々入れると対策はできます。あとキーボードの読み取り内容がブラウザに依存するらしく、KeyEventを拾おうとしてもあまりうまくいきません(つらい)。

情報の錯綜

まだ存在が発表されてから1年弱で、alpha -> betaと進んでいてしかも本体と統合したりしているので破壊的な変更が今年だけでも多いです。なので古い(半年以上前とか)サイトの内容も信用ならなかったりします。統合前のものを「Flutter for Web」統合後を「Flutter web」と言い分けているような風潮もありますが、ググって解決策が出てきても使えなかったりしてつらいです。最新のIssueとかを頑張って追いかけましょう。もう既にBetaになったので来年は落ち着いてくると思います。古い情報を抹消するためにもコミュニティ活性化していきましょう。

まとめ

いかがでしたか?

 

百聞は一見に如かず、どの畑の人もちょっと試してみてください。環境構築もWebやるならFlutter SDKをインストールするだけ(最最低限)です。

初心者向けの説明で良さげなやつ:

https://medium.com/flutter-jp/first-step-9b7f2c74fb08

RTA:(超高速開発のとこのURLと同じ)

http://nageler.hatenablog.com/entry/2019/11/29/181315

 

興味のある人が多ければ、軽くHands-On会でも開こうと思うんですがどうですか?何かしら反応してくれると嬉しいです(つよつよはお呼びでない)

 

[^1]: AppleのDeveloperには99ドルの年貢が課される。Googleは永年で25ドルだよ?Microsoft Storeは永年たった19ドルだよ?皆でUWP Developerにならないか?
[^2]: 実際のところとしてはAppleのDeveloper登録が未成年(20歳未満)だと自分のアカウントが作れないため躊躇っているということがある。18からでもよくないか?Googleで年齢聞かれたこと無いぞ?
[^3]: 世の中世知辛いので学生向けだとiOS対応しないと誰も使ってくれない。つらい。いい加減滅びないかな。

15日目 | 17日目→

習うよりググれ

これはKCS AdventCalendar2019 5日目の記事です

←4日目 | 6日目→

 

こんにちは、Google信者なのにiPad Proを愛用している、1年のFastriver(@fastriver_org)です。最近私も人に教える機会が増えてきたのですが、初学者が何かを勉強していくに当たって手に入れるべきスキルの一つを紹介していこうと思います。

“””検索力”””です。

話題としては全ての分野に通ずると考えていますが、以下ではプログラミングを一例として話します。適宜何かに置き換えて読んでみてください。

「検索力」is 何

プログラミングにおいて、暗記は特に必要ありません。英単語のテストは一言一句覚えなければならないですが、コードを書くのに全ての関数名を覚えている意味はないです(断言)。大切となってくるのはコードを書きたいときに「その機能が存在することを知っている」ことです。機能の存在を認知していなければ思考に入ることすらできませんが、存在さえ知っていれば後はどうにかして書き方を調べるだけになります。そして、そこから目的のコードに辿り着くことができる力、これこそが「検索力」であります。検索力を高めることによって、暗記をすることなく(=自分の脳の限界に達することなく)知識の輪を広げることができるわけです。

では目的にいち早くたどり着くにはどうすればよいでしょうか?

1.人に聞く

もし、あなたの周りにその分野の強者つよつよがいた場合はこの手段が使えます。検索力が高くない場合はこの方法が最速であることが多いです。周りの方はソースコードを見ただけで魔法のように答えを示してくれるでしょう。

問題点

あなたは聞いた人の時間を奪っています。講習などで教えてもらっている場合は良いですが、いつまでもそばに人がいるわけではありません。また、検索力を高めていくと他の方法のほうが速くなります(聞かれた人もググってることが多い)。

そこで、一人ぼっちでも調べることができるツールが存在します。

2.Google検索(Yahoo!も許す)(BingはNG)

evolving_google_identity_2x1.jpg

(引用元: https://design.google/library/evolving-google-identity/)

皆さん「Google検索」を知っているでしょうか?

知らない人が多いかもしれませんが、なんと真ん中の白四角の部分に言葉を入力するだけで、それに関連したWebサイトや写真、動画などをネット上から検索してくれるサービスなんです!!!

昨今「Google検索はゴミ」「オワコン」などの風潮も流れていますが、適切な使い方をすれば現在でも非常に有用なツールです。活用していきましょう。

使い方1: そのままコピペ

コードを書いていてRuntime Errorが出たときなどに、英語が読めないどうすれば解決できるのか分からないときにはエラーメッセージをそのままコピペして検索すると、同じ悩みを持つ人とその解決策を持つ人を見つけられることが多いです(Stack OverflowとかGitHub Issueとかが引っかかる)。注意点としては、コピペするエラーメッセージの中に自分で定義した変数名などが入っていると全文一致の確率が下がってしまうということです。そこはうまく工夫しましょう。

使い方2: AND検索乱れ撃ち

検索において最も重要なのは検索ワードです。しかし往々にして、検索したいものは分かるが名前がわからない/検索したいものが何なのか分からない という状況が生まれます。例えば

 

Untitled

この右下のボタンを知りたいと思った時にも名前(Floating Action Button)を知らなければ困ってしまいます。このような時には記憶に存在する関連したワードをAND検索していくと辿り着くことができる可能性があります。見つからなくてもN回くらいワードを変えてやり直してみましょう。

Annotation 2019-11-28 141944割とすぐ見つかった

逆に言えば、固有の名前を知っていれば検索の速度はかなりあがります。多く使う機能などは検索で引っかかりやすい名前などを覚えておくと便利です。

使い方3: 検索演算子

Google検索は検索ワードをひたすら並べるAND検索だけでなく、豊富な演算子での検索が可能です。詳しくはリンク先を見てください。

ウェブ検索の精度を高める – Google 検索 ヘルプ
https://support.google.com/websearch/answer/2466433?hl=ja

 

Google検索を使いこなすための便利な29のテクニック

https://blog.hubspot.jp/update-how-to-search-in-google-x-advanced-google-search-tips-0-0

 

この中で僕がよく使うものを軽く紹介します。

・NOT検索

「C#のLINQについて調べたいのにアイドルグループが引っかかる…」などの時には特定のワードを除外するNOT検索が使えます。「LINQ -アイドル」のように除外したいワードにハイフンをつけるだけです。

・filetype:

ネットに転がっているのはWebページだけではありません。冊子などはPDFで公開されていることが多いですが、特定のファイル形式のみを検索したいときは「[検索ワード] filetype:pdf」とするとPDFのみが引っかかります。

使い方4: 多言語検索

ネット上の日本語の記事というのは、ほんの一握りでしかありません。海外で開発された技術などではなおさら外国語での記事が圧倒的に多いです。

https://www.forbes.com/sites/niallmccarthy/2018/07/27/how-languages-used-online-compare-to-real-life-infographic/#4e586c952c7c 日本語記事は全ページの3.8%しかカバーしていない

日本語で見つからない場合は、英語ないしはその技術の母国語で検索しましょう。その言語のワードのみの羅列だけでも大体フィルタリングされて結果が出ますが、検索画面の 設定 > 言語(Languages) から検索言語を変えることもできます(この場合全ての表記が変わるので注意)。

Annotation 2019-12-02 140651

Google翻訳を使うのも良いです。しかし多分原文のほうが読みやすいと思います…

使い方5: 期間指定検索

インターネットの記事は日々更新されていきます。ソフトウェアもアップデートがかかっていきますが、「昔の特定のものだけ」「最新バージョンだけ」調べたいということもしばしばおこります。そのときは検索対象の期間指定をすると目的により近い検索結果を得られます。

Annotation 2019-11-29 091802

しかし、如何にインターネットの情報が更新されているといっても、誰かが記事を書かなければ検索には出てこないので、最先端の情報などは探しにくいです(事件を起こせばものの数時間で検索汚染は始まるが…)。そこで、リアルタイムな情報に最適なソーシャルメディアがあります。

3.Twitter

みんな大好き青い鳥です。

Tweet自体は140字以内なので情報量としては少ないですが、分野の有力者の呟きや、勉強会の様子などを見ると最最新な情報を手に入れることができます。Twitterでコミュニティを形成している所も少なくないので、チェックないしは参加すると割と有益です(僕もXamarinをやるときに #JXUG さんによくお世話になってました)。

アカウントを持っていない人(作れ)や、多少細かい検索がしたい人はYahoo!リアルタイム検索(https://search.yahoo.co.jp/realtime)もおすすめです(ユーザー名を検索結果から除外してくれたりするらしい)。

あとTwitterにも一応検索演算子はあるらしいです。

https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators

4. 公式ドキュメントを読む

これが真理です。真面目な開発元であれば公式ドキュメントを読むだけでほとんどが解決されます。慣れないうちはQiitaとかに落ちている誰かが噛み砕いてくれた記事でも良いですが、ググって公式が引っかかったら積極的にこっちを見るようにしましょう。OSSであればGitHubのREADMEかIssueに大切なことが上がっているので参照するとよいと思います。

公式ではなくとも自分がある程度信用できるサイトを予め知っておく(低質なサイトを除去する)ことも大切です。検索結果を吟味することで精度もぐっとあがります。

5.自分で書く

ネットの海をいくら彷徨っても見つからない?それは非常にラッキーなことですよ。もし解決策を貴方が見つけられれば唯一の情報源になれるんです!!ということで解決したらコミュニティへの貢献、そして同じ悩みを持つ人々(未来の自分を含む)のために記事を投稿しましょう。既に解決策が載っているものであっても、環境など異なる場合有用なので、積極的に投稿していきましょう(流石に丸写しで動いた程度だと意味ない気はするが)。

この項の詳細については、こちらで書いてあるので良ければ一読をお願いします(ロ技研ADCもよろしくね!)。

おまけ1: おすすめ拡張機能(Chrome)

Chromium以外はお帰りください。

uBlock Origin

有名広告ブロックアドオン。かなり精度が良い。サイト毎に有効/無効を設定できる。低俗な広告による精神攻撃を防げる。

検索の利便性のためには多少の犠牲は必要なのだ(Googleは広告で生きてる会社なのでブロックするのは程々にしようね!)

ゴシップサイトブロッカー

特定のドメインを検索結果から消す。c●deday.meなどのコピペ機械翻訳QAサイト、●エンジニア塾のような信頼性の低いサイトなどを踏むことによる精神攻撃を防げる。

便利。

おまけ2: 情報の信頼性について

以下は割と主観的な主張なので読み飛ばしてもいいです。

 

上は主に、目的となる情報への到達手段についての話でした。しかし、辿り着いた情報が必ずしも信頼できるとは限りません。幸いにもプログラミング界隈については信用できる情報が多く(騙す必要もあまりないし、実行すればすぐ分かる)、惑わされることはほとんどありません(バージョン違いなどでそのままだと動かないことはよくある)。ただインターネット上には間違った情報/意図的に人を騙そうとした情報が無数に存在します。その辺りのフィルタリングについて少しお話します。

1. 伝聞調・2次ソース以下は信用に値しない

よく検索に引っかかるのが、「今回、〇〇が☓☓と報道していました」や、他のサイトからそのまま文章を引っ張ってきた記事です。あくまで伝聞調であるためそのサイト/会社自身が情報ソースへの責任をあまり持っていない印象です。例え有名新聞社でも個人ブログでも2次ソース以下である場合は1次ソースを確認しましょう。面倒ならその話題は話半分に留めておくべきです。

2. 中身を読め

見出しは話題によってはただの煽りなので、本文を読みましょう。

 

とりあえずはそんなところです。

←4日目 | 6日目→